Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podsumowanie
Podczas pisania makra programu Microsoft Visual Basic for Applications (VBA) może być konieczne przejście w pętli przez listę danych w arkuszu. Istnieje kilka metod wykonywania tego zadania. Sekcja "Więcej informacji" w tym artykule zawiera informacje o metodach, których można użyć do wyszukiwania następujących typów list:
- Lista zawierająca znaną, stałą liczbę wierszy.
- Lista dynamiczna lub lista z nieznaną liczbą wierszy.
- Lista zawierająca określony rekord.
Więcej informacji
Microsoft dostarcza przykłady programowania wyłącznie w celu zilustrowania i nie oferuje żadnej gwarancji, wyraźnej ani dorozumianej. w tym także, ale nie tylko, dorozumianych gwarancji zbywalności lub przydatności do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika. W poniższych przykładach kodu przyjęto założenie, że lista zawiera wiersz nagłówka rozpoczynający się w komórce A1 i dane rozpoczynające się w komórce A2.
Aby wyszukać listę przy użyciu stałej, znanej liczby wierszy
Ten kod przenosi w dół kolumnę A na końcu listy:
Sub Test1()
Dim x As Integer
' Set numrows = number of rows of data.
NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
' Select cell a1.
Range("A2").Select
' Establish "For" loop to loop "numrows" number of times.
For x = 1 To NumRows
' Insert your code here.
' Selects cell down 1 row from active cell.
ActiveCell.Offset(1, 0).Select
Next
End Sub
Aby wyszukać listę dynamiczną lub listę z nieznaną liczbą wierszy
Ten kod przenosi kolumnę A w dół na końcu listy. (Ten kod zakłada, że każda komórka w kolumnie A zawiera wpis do końca).
Sub Test2()
' Select cell A2, *first line of data*.
Range("A2").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
' Insert your code here.
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Uwaga Jeśli w kolumnie A znajdują się puste komórki, zmodyfikuj ten kod, aby uwzględnić ten warunek. Upewnij się, że puste komórki są w równych odległościach od siebie. Jeśli na przykład każda inna komórka w kolumnie A jest pusta (na przykład taka sytuacja może wystąpić, jeśli każdy rekord używa dwóch wierszy, z drugim wierszem wciętym jedną komórkę), można zmodyfikować tę pętlę w następujący sposób:
' Set Do loop to stop when two consecutive empty cells are reached.
Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
' Insert your code here.
'
' Step down 2 rows from present location.
ActiveCell.Offset(2, 0).Select
Loop
Aby wyszukać listę dla określonego rekordu
Ten kod przenosi w dół kolumnę A na końcu listy:
Sub Test3()
Dim x As String
Dim found As Boolean
' Select first line of data.
Range("A2").Select
' Set search variable value.
x = "test"
' Set Boolean variable "found" to false.
found = False
' Set Do loop to stop at empty cell.
Do Until IsEmpty(ActiveCell)
' Check active cell for search value.
If ActiveCell.Value = x Then
found = TRUE
Exit Do
End If
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
' Check for found.
If found = True Then
Msgbox "Value found in cell " & ActiveCell.Address
Else
Msgbox "Value not found"
End If
End Sub