Concat двух имен переменных, чтобы получить имя третьей переменной

$suppress_localhost = false;

Это сделало трюк для меня.

0
задан Pᴇʜ 29 March 2019 в 12:06
поделиться

3 ответа

Вот краткий пример использования массивов для упрощения цикла:

Sub SearchMe()
    Dim searchWords() As String
    searchWords = Split("Name,Surname,LastName,First Name,AnotherName")

    Dim searchRange As Range
    Set searchRange = ThisWorkbook.Sheets("Sheet1").Range("A1:AA1")

    Dim listText As String
    Dim word As String
    For Each word In searchWords
        Dim cell As Range
        For Each cell In searchRange
            If InStr(UCase(cell.Text), UCase(word)) > 0 Then
                listText = listText & vbNewLine & _
                           cell.Address(RowAbsolute:=False, ColumnAbsolute:=False) & _
                           " | " & cell.Value
            End If
        Next cell
        MsgBox listText, vbQuestion, word
    Next word
End Sub
0
ответ дан PeterT 29 March 2019 в 12:06
поделиться

Вот иллюстрация, но вы должны прочитать о массивах, так как их много, например, здесь .

Sub x()

Dim ListText As String
Dim FindText(1 To 2) As String
Dim Onecell As Range

FindText(1) = "Name"
FindText(2) = "Surname"

For i = LBound(FindText) To UBound(FindText)
    For Each Onecell In Range("A1:AA1")
        If InStr(UCase(Onecell.Text), UCase(FindText(i))) > 0 Then
            ListText = ListText & vbNewLine & Onecell.Address(RowAbsolute:=False, ColumnAbsolute:=False) & " | " & Onecell.Value
        End If
    Next Onecell
    MsgBox ListText, vbQuestion, FindText(i)
Next i

End Sub
0
ответ дан SJR 29 March 2019 в 12:06
поделиться

Вы также можете использовать коллекцию вместо массива. Работать с коллекциями очень просто, и я часто нахожу их проще и быстрее реализовать, чем массив.

Dim colFind As New Collection
dim i As integer
Dim ListText As String

' Add the words you wish to search for to the collection.
colFind.Add "Name"
colFind.Add "Surname"

For i = 1 To colFind.Count

    Dim Onecell As Range

    For Each Onecell In Range("A1:AA1")
        If InStr(UCase(Onecell.Text), UCase(colFind(i))) > 0 Then
            ListText = ListText & vbNewLine & Onecell.Address(RowAbsolute:=False, ColumnAbsolute:=False) & " | " & Onecell.Value
        End If
    Next Onecell

    MsgBox ListText, vbQuestion, colFind(i)

Next i
0
ответ дан Data_Wizard 29 March 2019 в 12:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: