Ошибка времени выполнения 1004 при попытке найти строку - PullRequest
1 голос
/ 06 марта 2012

интересовался, может ли кто-нибудь помочь мне решить следующую проблему. Мне выдана ошибка 1004 во время выполнения на With Worksheets("Sheet1").Cells(Rowtosave, EGCheck) Я потратил довольно много времени на попытки, но все еще не смог определить ошибку самостоятельно. Должен ли кто-нибудь хорошо позаботиться о том, чтобы выручить меня? Буду признателен за вашу помощь. Спасибо!

Sub Macro1()

Dim LastRow1 As Long, RowCheck As Long, Rowtosave As Long, LastCol1 As Long
Dim EGCheck As Long, ColEG As Range, firstEG As Long


LastRow1 = 50
LastCol1 = 50

   For RowCheck = 1 To LastRow1
'Look for "Name"
     With Worksheets("Sheet1").Cells(RowCheck, 1)
         If .Value = "Name" Then
     'Set row to Rowtosave for later use
           Rowtosave = RowCheck

         End If
    End With

 Next RowCheck

     For EGCheck = 1 To LastCol1
      'Look for EG on the name row with varying column
      'Since already obtain the row for name as Rowtosave, so set Row to Rowtosave
        With Worksheets("Sheet1").Cells(Rowtosave, EGCheck)
          If .Value = "EG" Then

           firstEG = EGCheck

         End If
       End With

Next EGCheck

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Что-то не так с вашей ситуацией, которая здесь не показана. Когда я ввожу следующее:

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(), это приводит к ошибке, потому что строка должна быть одна или несколько.

0 голосов
/ 06 марта 2012

Трудно сказать, не видя, каковы ваши данные образца. Но я подозреваю, что условие, которое устанавливает «Rowtosave», никогда не выполняется, поэтому Rowtosave = 0. Строка / столбец 0 отсутствуют, поэтому, когда в вашем коде запускается подозрительная строка (эта строка):

With Worksheets("Sheet1").Cells(Rowtosave, EGCheck)

, это ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...