VB поиск по нескольким листам Excel - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь написать этот код VB для быстрого поиска данных, но только на одном листе.Я пытаюсь выяснить, как я могу изменить свой код для поиска по всей книге, но у меня ничего не вышло.У меня есть базовые знания по программированию, я ищу советы.

Private Sub searchButton_Click()
    Dim totRows As Long, i As Long
    totRows = Worksheets("Sheet3").Range("A1").CurrentRegion.Rows.Count

    If userInputBox.Text = "" Then
        MsgBox "Please enter a value"    
    End If

    For i = 1 To totRows
        If Trim(Sheet3.Cells(i, 2)) <> Trim(userInputBox.Text) And i = totRows Then
            MsgBox "Value not found!"
        End If

        If Trim(Sheet3.Cells(i, 2)) = Trim(userInputBox.Text) Then    
            networkValue.Text = Sheet3.Cells(i, 3)
            cernerValue.Text = Sheet3.Cells(i, 4)
            ipValue.Text = Sheet3.Cells(i, 5)
            Exit For
        End If
    Next i
End Sub

1 Ответ

0 голосов
/ 19 сентября 2019

Вам просто нужно обернуть свой код в цикл For и ссылаться на переменную рабочего листа, используемую в цикле, а именно:

Private Sub searchButton_Click()

Dim totRows As Long, i As Long, ws As Worksheet

For Each ws In Worksheets
    totRows = ws.Range("A1").CurrentRegion.Rows.Count

    If userInputBox.Text = "" Then
        MsgBox "Please enter a value"
    End If

    For i = 1 To totRows
        If Trim(ws.Cells(i, 2)) <> Trim(userInputBox.Text) And i = totRows Then
            MsgBox "Value not found!"
        End If
        If Trim(ws.Cells(i, 2)) = Trim(userInputBox.Text) Then
            networkValue.Text = ws.Cells(i, 3)
            cernerValue.Text = ws.Cells(i, 4)
            ipValue.Text = ws.Cells(i, 5)
            Exit For
        End If
    Next i
Next ws

End Sub

Много материала в сети в циклах.

Однако,попробуйте избежать цикла с помощью метода Find.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...