Эта простая программа сделает свое дело. Это содержит две петли:
Для каждого WS в ThisWorkbook.Worksheets
Это несколько очевидно. Это будет циклически проходить по каждому листу в вашей книге, которая содержит этот код.
Внутри вышеуказанного цикла содержится еще один "вспомогательный цикл":
Для r = 2 до lastRow(ws, "B")
Итак, мы уже знаем из предыдущего цикла, что ws
является текущим рабочим листом в "родительском цикле". r = 2 - это начальная строка (вы можете изменить ее на r = 1, если у вас нет заголовков столбцов). lastRow
- это функция, которую я включил в приведенный ниже код для автоматического определения последней строки в любом столбце (в вашем случае мы используем столбец 2 / столбец B).
Следующий код был протестирован и работает:
Option Explicit
Sub changeRows()
Dim ws As Worksheet, r As Long
For Each ws In ThisWorkbook.Worksheets
ws.Activate
For r = 2 To lastRow(ws, "B")
If ws.Cells(r, 2) = "Clear Votive Cup" Then
ws.Cells(r, "H") = 1.49
End If
Next r
Next ws
End Sub
Function lastRow(ws As Worksheet, Optional col As Variant = 1) As Long
Debug.Print ws.Name
With ws
lastRow = .Cells(.Rows.Count, col).End(xlUp).row
End With
End Function