2016-07-28 12 views
0

ランタイムエラー '13'が表示される場合:コードを実行しようとすると、タイプが一致しません。デバッグは 'IF'ステートメントを強調表示しますが、間違いがどこにあるかわかりません。どんな助けもありがとう。おかげVBAランタイムエラー13タイプミスマッチ

Dim i As Integer 
    Dim lastRow As Long 
    Workbooks("Template Part_II.xlsx").Worksheets(2).Activate 
lastRow = Cells(Rows.Count, 1).End(xlUp).Row 
For i = 2 To lastRow 
    If Cells(i, 1).Value <> "#N/A" And Cells(i, 1).Value <> "00000000-000" Then 
     Cells(i, 1).Copy 
     Worksheets(1).Range("A2:A" & lastRow).PasteSpecial xlPasteValues 
    End If 
Next I 

、実際に私はこれをやろうとしている:
は、私は、様々なIDの100行を持っていると私はこれで可能な非ID文字列をせずに別のシートにこのIDをコピーしたい一枚を持っています#N/Aでも00000000-0000でもかまいませんが、コピーされていないセルはコピー先の範囲に空白として表示したくありません。

+0

のようにコードを変更することもできますか? –

+0

コピーを忘れました。しかし、それはコードであり、動作していません。 – blau

+0

エラーが発生したときの 'Cells(i、1).Value'の値は何ですか? –

答えて

2

セルを確実にチェック内部の細胞へのあなたのアクセスをラップは(例えば、細胞「を含む」0による除算)ので

... 
For i = 2 To lastRow 
    If Not IsError(Cells(i, 1).Value) Then 
     If Cells(i, 1).Value <> "#N/A" And Cells(i, 1).Value <> "00000000-000" Then 
      Cells(i, 1).Copy 
      Worksheets(1).Range("A2:A" & lastRow).PasteSpecial xlPasteValues 
     End If 
    End If 
Next i 
... 

ノートのようなエラー値が含まれていません:私は条件を挿入しようとしましたしかし、既存のIfの前でVBAがコメントすることは短絡による


アップデートを包む使用していないようです

あなたは `For`ため` Next`あるこの

Dim i As Integer 
Dim lastRow As Long 
Dim targetRow As Long 

Workbooks("Template Part_II.xlsx").Worksheets(2).Activate 
lastRow = Cells(Rows.Count, 1).End(xlUp).Row 
targetRow = 2 
For i = 2 To lastRow 
    If Not IsError(Cells(i, 1).Value) Then 
     If Cells(i, 1).Value <> "#N/A" And Cells(i, 1).Value <> "00000000-000" Then 
      Cells(i, 1).Copy 
      Worksheets(1).Cells(targetRow, 1).PasteSpecial xlPasteValues 
      targetRow = targetRow + 1 
     End If 
    End If 
Next i 
+0

VBAの短絡の欠如は常に私を困惑させました: '( – RGA

+0

ええと、次の試行は現在のループの繰り返しを続行することでした - >利用できません:D – DAXaholic

+0

実際には実行可能ですが、あなたの 'For ... Next'を' Do ... While False'にして、 'Exit For'を使って次の繰り返しにスキップしてください。 –

関連する問題