В VBA существует несколько способов циклического перемещения по таблице, в зависимости от типа таблицы, с которой вы работаете. Я приведу вам несколько примеров:
-
Цикл по диапазону:
Dim rng As Range Set rng = Worksheets("Sheet1").Range("A1:D10") Dim cell As Range For Each cell In rng ' Do something with each cell Debug.Print cell.Value Next cell -
Цикл по ListObject (таблица Excel):
Dim tbl As ListObject Set tbl = Worksheets("Sheet1").ListObjects("Table1") Dim row As ListRow For Each row In tbl.ListRows ' Do something with each row Debug.Print row.Range("ColumnName").Value Next row -
Цикл по таблице запросов (внешние данные Excel):
Dim qt As QueryTable Set qt = Worksheets("Sheet1").QueryTables(1) Dim i As Integer For i = 1 To qt.ResultRange.Rows.Count ' Do something with each row Debug.Print qt.ResultRange.Cells(i, 1).Value Next i -
Циклический просмотр набора записей (база данных Access):
Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("SELECT * FROM TableName") Do Until rs.EOF ' Do something with each record Debug.Print rs.Fields("FieldName").Value rs.MoveNext Loop rs.Close
Это всего лишь несколько примеров, и подход может варьироваться в зависимости от конкретных требований вашей таблицы. Не забудьте заменить «Sheet1» фактическим именем вашего листа, «Table1» — фактическим именем вашей таблицы, а «ColumnName» — фактическим именем столбца, на который вы хотите ссылаться.