我试图查找包含通配符的字符串。我需要找到该字符串在特定行中出现的位置。该字符串均采用“IP##W## XX”的形式,其中 XX 是我用来查找值的 2 个字母,## 是可以是任何随机数的数字通配符。因此,这就是我的查找字符串的样子:
FullLookUpString = "IP##W## " & LookUpString
我尝试使用Find
命令查找首次发生此情况的列,但我不断收到错误。这是我到目前为止所做的,但它不起作用:L 如果有人有简单的方法的话。对 VBA 还很陌生-.-
Dim GatewayColumn As Variant
Dim GatewayDateColumn As Variant
Dim FirstLookUpRange As Range
Dim SecondLookUpRange As Range
FullLookUpString = "IP##W## " & LookUpString
Set FirstLookUpRange = wsMPNT.Range(wsMPNT.Cells(3, 26), wsMPNT.Cells(3, lcolumnMPNT))
Debug.Print FullLookUpString
GatewayColumn = FirstLookUpRange.Find(What:=FullLookUpString, After:=Range("O3")).Column
Debug.Print GatewayColumn
根据@SJR 的评论,您可以通过两种方式执行此操作。使用LIKE https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/like-operator模式是:
IP##W## [A-Z][A-Z]
使用正则表达式,模式为:
IP\d{2}W\d{2} [A-Z]{2}
示例代码:
Option Explicit
Sub FindString()
Dim ws As Worksheet
Dim rngData As Range
Dim rngCell As Range
Set ws = ThisWorkbook.Worksheets("Sheet1") '<-- set your sheet
Set rngData = ws.Range("A1:A4")
' with LIKE operator
For Each rngCell In rngData
If rngCell.Value Like "IP##W## [A-Z][A-Z]" Then
Debug.Print rngCell.Address
End If
Next rngCell
' with regular expression
Dim objRegex As Object
Dim objMatch As Object
Set objRegex = CreateObject("VBScript.RegExp")
objRegex.Pattern = "IP\d{2}W\d{2} [A-Z]{2}"
For Each rngCell In rngData
If objRegex.Test(rngCell.Value) Then
Debug.Print rngCell.Address
End If
Next rngCell
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)