Следует отметить, что в What:="location"
, когда вы помещаете location
в кавычки, вы указываете своей функции поиска искать исключительно значение "location"
вместо переменная location
, которую вы установили в значение ActiveCell
в цикле.
Кроме того, я бы не стал использовать Goto
, если вы не выходите из глубоко вложенного цикла.Вы можете переписать свой код, чтобы избежать использования Select
, ActiveCell
, Goto
и исправления вашего .Find
, например:
Dim location As String
Dim rownum As Long
Dim cellfinder As Long
Dim fRng As Range
With Sheets("Sheet1")
rownum = .Range("E" & Rows.Count).End(xlUp).Row
For cellfinder = 1 To rownum
If .Range("E" & cellfinder) <> "" Then
location = .Range("E" & cellfinder)
Set fRng = Sheets("Sheet2").Cells.Find(What:=location, LookIn:=xlFormulas, LookAt:=xlPart) '<-Sheets("Sheet2") can be any sheet you need to perform the .Find against
If Not fRng Is Nothing Then
fRng.Offset(0, -1) = .Range("D" & cellfinder)
Else
'Do something when .Find doesn't find anything
End If
End If
Next cellfinder
End With
Использование блока With
позволяет один раз указать нужный объекти использовать его, добавляя методы с префиксом .
, так что
With Sheets("Sheet1")
.Range("A1")
End With
функционально совпадает с
Sheets("Sheet1").Range("A1")
Использование .Range("E" & Rows.Count).End(xlUp).Row
вернет номер последней использованной строки вВ столбце E вы можете проверить наличие пустых ячеек в цикле и не беспокоиться о том, что ваш счет rownum
недостаточно длинный, если вы позволите ему = Range("G2")
.
Чтобы обойти оператор Goto
, используяпротивоположный оператор и включение всего последующего исполняемого кода в оператор If
приведет к тому же результату, не поощряя спагетти-код.Вместо того, чтобы проверять, есть ли ActiveCell = ""
, а затем выполнять Goto
, когда это происходит, проверяйте, если нет, только выполнение следующего кода, когда это не так.
Инициализация fRng
как Range
и установив его равным результату вашей функции .Find
, вы сможете протестировать функцию поиска, чтобы увидеть, вернула ли она что-нибудь, чтобы вы не ошиблись при попытке что-то сделать с fRng
, когдаэто Nothing
.