ไม่มีรหัส? แต่มันสั้นและง่ายและสวยงามและ ... :(
รูปแบบ RegEx ของคุณ[^A-Za-z0-9_-]
ใช้เพื่อลบอักขระพิเศษทั้งหมดในเซลล์ทั้งหมด
Sub RegExReplace()
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = "[^A-Za-z0-9_-]"
For Each objCell In ActiveSheet.UsedRange.Cells
objCell.Value = RegEx.Replace(objCell.Value, "")
Next
End Sub
แก้ไข
นี่ใกล้เคียงกับที่ฉันจะได้รับกับคำถามดั้งเดิมของคุณ
รหัสที่สองคือฟังก์ชั่นที่ผู้ใช้กำหนด=RegExCheck(A1,"[^A-Za-z0-9_-]")
ด้วย 2 อาร์กิวเมนต์ คนแรกคือเซลล์ที่จะตรวจสอบ ส่วนที่สองคือรูปแบบ RegEx เพื่อตรวจสอบ หากรูปแบบตรงกับอักขระใด ๆ ในเซลล์ของคุณรูปแบบนั้นจะคืนค่าเป็น 1 มิฉะนั้น 0
คุณสามารถใช้งานได้เหมือนสูตร Excel ทั่วไปอื่น ๆ หากคุณเปิดโปรแกรมแก้ไข VBA ด้วยALT+ F11ใส่โมดูลใหม่(!) แล้ววางรหัสด้านล่าง
Function RegExCheck(objCell As Range, strPattern As String)
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = strPattern
If RegEx.Replace(objCell.Value, "") = objCell.Value Then
RegExCheck = 0
Else
RegExCheck = 1
End If
End Function
สำหรับผู้ใช้ใหม่ที่ RegEx ฉันจะอธิบายรูปแบบของคุณ: [^A-Za-z0-9_-]
[] stands for a group of expressions
^ is a logical NOT
[^ ] Combine them to get a group of signs which should not be included
A-Z matches every character from A to Z (upper case)
a-z matches every character from a to z (lower case)
0-9 matches every digit
_ matches a _
- matches a - (This sign breaks your pattern if it's at the wrong position)