ฉันมีมาโคร VB ที่ทำงานซึ่งตรวจสอบความถูกต้องของเนื้อหา ใช้พารามิเตอร์สตริงสองตัว (ค่าเซลล์และนิพจน์ทั่วไป) และส่งคืนค่าจริงหรือเท็จ มันใช้ CreateObject("VBscript.regexp")
ภายใน
ฉันต้องใช้แมโครนี้เพื่อตรวจสอบเซลล์ เมื่อฉันพยายามตั้งค่ามันเป็นเครื่องมือตรวจสอบที่กำหนดเองวิธี
=Rex(E2, "\d{1,2}\:\d{2}")
โดยที่ Rex เป็นฟังก์ชันของฉันที่กำหนดไว้ในกระดาษคำนวณเดียวกัน (Alt-F11 และประเภท) และ E2 เป็นเซลล์ที่ฉันพยายามตรวจสอบฉันได้รับข้อความ "ไม่พบช่วงที่ตั้งชื่อที่คุณระบุ"
ถ้าฉันแทรกฟังก์ชั่นเดียวกันที่อื่นในสเปรดชีตเดียวกัน (พูดที่เซลล์มุมบน A1):
=Rex(E2, "\d{1,2}\:\d{2}")
มันแสดงให้ฉันเห็นอย่างชัดเจน TRUE
ถ้าเซลล์ E2 แก้ไขค่าที่ถูกต้องเช่น 15:07
และ FALSE
ถ้าไม่ชอบ 15xx
- ครึ่งหนึ่งได้รับการแก้ไข แต่ยังไม่ถึงจุดสิ้นสุด ฉันต้องรวมเครื่องมือตรวจสอบความถูกต้องของฉันด้วยวิธีมาตรฐาน
ฉันใช้ MS Excel 2010 แมโครตัวเองคือ
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
และปัญหาดูเหมือนว่า