使用通配符声明 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.

处退出循环