Tôi đang cố gắng sử dụng cụm từ thông dụng VBA để xác thực phạm vi thời gian của biểu mẫu: #0:00xm - #0:00xm
trong đó x
là a
hoặc p
. Vì vậy, chuỗi chữ có thể là "1:30pm - 12:00am"
. Tôi muốn khớp các ô có mẫu này.Biểu thức chính quy VBA phù hợp với phạm vi thời gian như "1:30 chiều - 12:00 sáng"
Khi tôi sử dụng biểu thức chính quy trong công cụ trực tuyến này: http://public.kvalley.com/regex/regex.asp
và kiểm tra biểu thức của tôi, nó khớp chính xác.
Tuy nhiên, khi tôi sử dụng cùng một biểu thức trong VBA, nó không khớp.
Dim rRange As Range
Dim rCell As Range
Set rRange = Range("A2", "A4") '"G225")
For Each rCell In rRange.Cells
MsgBox (rCell.Value)
If rCell.Value Like "^([0-9]{1,2}[:][0-9]{2}[apm]{2}[ ][-][ ][0-9]{1,2}[:][0-9]{2}[apm]{2})$" Then
MsgBox ("YES")
'rCell.Interior.Color = RGB(0, 250, 0)
Else
MsgBox ("NO")
'rCell.Interior.Color = RGB(250, 0, 0)
End If
Next rCell
Kiểm tra xem các nhà điều hành LIKE là trường hợp nhạy cảm./[apm] {2}/có thể được viết là/[ap] m /, và sẽ rõ ràng hơn những chuỗi có thể chấp nhận được. –
Bây giờ bạn đang đặt '/' trước đó. Bạn có nghĩ rằng đó có thể là vấn đề? Nếu vậy, làm thế nào tôi sẽ sử dụng đúng '/'? – Matt
@Matt không sử dụng '/' - hãy nghĩ về dấu gạch chéo làm dấu ngoặc kép quanh '/ regex literal /' (cú pháp thực sự được sử dụng trong perl, javascript và các ngôn ngữ khác) – Aprillion