使用通配符声明 const 变量
Declare const variable using wildcard
我想知道是否可以使用通配符在 Excel VBA 中声明 const 变量,如本例所示:
const myVariable As String Like "UP field*"
我需要它,因为我有一个可以有多个值的单元格字段,但它始终包含子字符串“UP field”,但有时它类似于“UP field 5”或“UP field 3”之类的。
我只需要 Excel 找到一个 table 的第一行,该变量是开始该行的单元格的名称。它就像我的 A1
单元格,但它可以位于 Excel sheet 中的任何位置,所以我使用 while 循环来查找该单元格:
i = 1
While ActiveSheet.Cells(i, 1) <> myVariable 'Looking for the first row
i = i + 1
Wend
你不需要常量。 Range.Find
是找到第一个东西的快速方法,为 LookIn
参数传递 xlPart
将满足通配符要求。例如:
Public Sub FindFirst()
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A:A").Find(What:="UP Field", LookAt:=xlPart)
If Not rng Is Nothing Then
MsgBox rng.Address
End If
End Sub
如果将 while 循环与 InStr
结合使用,while 循环可能会起作用。我不推荐它,但为了完整性我在这里添加:
Public Sub FindFirst2()
Dim str As String, i As Long, rng As Range
str = "UP field"
i = 1
Do
Set rng = ActiveSheet.Cells(i, 1)
i = i + 1
If i > ActiveSheet.Rows.Count Then Exit Sub
Loop While InStr(rng.Value, str) = 0
MsgBox rng.Address
End Sub
我认为这可能适合你:
Const myVariable As String = "UP field"
i = 1
Do Until ActiveSheet.Cells(i, 1) Like myVariable & "*" 'Looking for the first row
i = i + 1
Loop
这将在第一个单元格 starting 和文本 UP field
.
处退出循环
我想知道是否可以使用通配符在 Excel VBA 中声明 const 变量,如本例所示:
const myVariable As String Like "UP field*"
我需要它,因为我有一个可以有多个值的单元格字段,但它始终包含子字符串“UP field”,但有时它类似于“UP field 5”或“UP field 3”之类的。
我只需要 Excel 找到一个 table 的第一行,该变量是开始该行的单元格的名称。它就像我的 A1
单元格,但它可以位于 Excel sheet 中的任何位置,所以我使用 while 循环来查找该单元格:
i = 1
While ActiveSheet.Cells(i, 1) <> myVariable 'Looking for the first row
i = i + 1
Wend
你不需要常量。 Range.Find
是找到第一个东西的快速方法,为 LookIn
参数传递 xlPart
将满足通配符要求。例如:
Public Sub FindFirst()
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A:A").Find(What:="UP Field", LookAt:=xlPart)
If Not rng Is Nothing Then
MsgBox rng.Address
End If
End Sub
如果将 while 循环与 InStr
结合使用,while 循环可能会起作用。我不推荐它,但为了完整性我在这里添加:
Public Sub FindFirst2()
Dim str As String, i As Long, rng As Range
str = "UP field"
i = 1
Do
Set rng = ActiveSheet.Cells(i, 1)
i = i + 1
If i > ActiveSheet.Rows.Count Then Exit Sub
Loop While InStr(rng.Value, str) = 0
MsgBox rng.Address
End Sub
我认为这可能适合你:
Const myVariable As String = "UP field"
i = 1
Do Until ActiveSheet.Cells(i, 1) Like myVariable & "*" 'Looking for the first row
i = i + 1
Loop
这将在第一个单元格 starting 和文本 UP field
.