Ссылка правильно - ключ для предотвращения ошибок. Даже если они не появляются сразу, эти ошибки появятся и займут ваш код раньше, чем позже.
Правильные ссылки могут быть, например:
Option Explicit
Public PBRange As Range
Public PO As Worksheet
Public PB As Worksheet
Sub CheapestPrice()
Dim LastRowPO As Long, LastRowPB As Long, i As Long, j As Long
Set PO = ThisWorkbook.Sheets("Purchase Orders")
Set PB = ThisWorkbook.Sheets("Price Book")
Set PBRange = PB.Range("A1", PB.Range("A1").End(xlDown).End(xlToRight))
End Sub
Если вы не укажете ни рабочую книгу, ни рабочую таблицу, как в случае Range("A1")
, VBA примет рабочую книгу и рабочую таблицу active . Если это , а не то, на что вы собираетесь ссылаться, вы, скорее всего, получите ошибку. Вы можете упростить свою жизнь, используя оператор With...End With
, чтобы предотвратить много печатания. E.g.:
Sub example()
Dim LRow As Long
With ThisWorkbook.Sheets(1)
LRow = .Cells(.Rows.Count, "D").End(xlUp).Row
MsgBox LRow
.Range("D1:D" & LRow).Value = "NewValue"
End With
End Sub