Saya memiliki VB makro yang berfungsi yang memvalidasi konten. Dibutuhkan dua parameter string (nilai sel dan ekspresi reguler) dan mengembalikan True atau False. Ini menggunakan CreateObject("VBscript.regexp")
internal.
Saya perlu menggunakan makro ini untuk memvalidasi sel. Ketika saya mencoba mengaturnya sebagai custom validator caranya
=Rex(E2, "\d{1,2}\:\d{2}")
di mana Rex adalah fungsi saya didefinisikan pada lembar spread yang sama (Alt-F11 dan tipe) dan E2 adalah sel yang saya coba validasi, saya mendapatkan pesan "Rentang nama yang Anda tentukan tidak dapat ditemukan".
Jika saya menyisipkan fungsi yang sama di tempat lain pada spreadsheet yang sama (katakan di sel sudut atas A1):
=Rex(E2, "\d{1,2}\:\d{2}")
itu menunjukkan saya dengan baik TRUE
jika sel E2 mengoreksi nilai yang tepat seperti 15:07
dan FALSE
jika tidak suka 15xx
- setengah diselesaikan tetapi benar-benar tidak sampai akhir. Saya benar-benar perlu mengintegrasikan validator saya dengan cara standar.
Saya menggunakan MS Excel 2010. Makro itu sendiri
Public Function Rex(ByVal vsStringIn As String, ByVal vsPattern As String) As Boolean
Dim objRegEx As Object
Set objRegEx = CreateObject("VBscript.regexp")
objRegEx.Global = True
objRegEx.Pattern = vsPattern
Rex = objRegEx.Test(vsStringIn)
Set objRegEx = Nothing
End Function
Dan masalahnya seperti
Jawaban:
Masalah menarik. Sepertinya UDF tidak selalu berfungsi di Validasi Data! :-(
Alternatif berikut:
Catatan samping: UDF Anda atau rumus di atas tidak akan berfungsi, jika nilai yang akan diperiksa adalah angka (dengan format Waktu) dan bukan string!
sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya tidak ingin menduplikasi pertanyaan itu.
Solusi: Anda bisa menerapkan rumus UDF di sel yang berbeda, dan kemudian menggunakan nilai itu dalam Validasi Data. Anda dapat menyembunyikan nilai sementara hanya dengan mengubah warna menjadi putih.
Untuk informasi lebih lanjut: http://support.microsoft.com/kb/160523
sumber