2012-03-06 12 views
1

誰かが次の問題を解決するのに役立つのだろうかと疑問に思っていました。 私はランタイムエラー1004を受け取りました。With Worksheets("Sheet1").Cells(Rowtosave, EGCheck)かなりの時間をかけて試しましたが、それでも自分自身でエラーを定義することはできませんでした。誰かいい人、私を助けてくれませんか?あなたの助けに感謝します。ありがとう!行を見つけようとしたときの実行時エラー1004

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 

答えて

1

ここには表示されていない状況があります。私は次のように入力した場合:それぞれ

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 

と入れNameEG細胞A6へとD6予想通り、私は、セルA164で終わります。つまり、正常に動作しています。

A6からNameを削除すると、1004というエラーが表示されます。その場合、Rowtocheckは決して設定されていないため、デフォルト値のゼロになります。

そして、Cells()呼び出しでrownとして0を使用しようとすると、その行は1つ以上である必要があるため、エラーとなります。

+0

こんにちは、ありがとう!なぜ私のページで、それが動作していないのか分かりません。とにかく、私はRowCheckループにEGCheckループを配置しようとしましたが、うまくいきます。ありがとう!あなたのコメントのために – user1204868

0

サンプルデータが何も表示されていないと、言うことは難しいです。しかし、私は「Rowtosave」を設定した条件が、満たされないさんと思われるRowtosave = 0ありなし行/列0、そうするとき、あなたのコードの実行の容疑者回線(本行)ので:

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

、それは間違いです。

+0

ありがとう!それをもう一度見てみましょう。しかし、私はそれらを一緒に単一のループとしてコンパイルするとき、問題は直面しませんでした – user1204868

関連する問題