Что-то не так с вашей ситуацией, которая здесь не показана. Когда я ввожу следующее:
Option Explicit
Sub Macro1()
Dim LastRow1 As Long, RowCheck As Long, Rowtosave As Long
Dim LastCol1 As Long, EGCheck As Long
Range("a1:a1").Value = -1
LastRow1 = 50
LastCol1 = 50
For RowCheck = 1 To LastRow1
With Worksheets("Sheet1").Cells(RowCheck, 1)
If .Value = "Name" Then
Rowtosave = RowCheck
End If
End With
Next RowCheck
For EGCheck = 1 To LastCol1
With Worksheets("Sheet1").Cells(Rowtosave, EGCheck)
If .Value = "EG" Then
Range("a1:a1").Value = Rowtosave * 10 + EGCheck
End If
End With
Next EGCheck
End Sub
и положив Name
и EG
в ячейки A6
и D6
соответственно, я получаю 64
в ячейке A1
, как и ожидалось. Другими словами, работает нормально.
Однако, если я удаляю Name
из ячейки A6
, я получаю ошибку 1004, такую же как и вы. Это потому, что в этом случае Rowtocheck
никогда не устанавливается, следовательно, его значение по умолчанию будет равно нулю.
И, когда вы пытаетесь использовать 0 в качестве rown в вызове Cells()
, это приводит к ошибке, потому что строка должна быть одна или несколько.