2017-11-07 10 views
0

私はビジュアルベーシックをかなり新しくしています。私は列をループして#N/Aのすべてを変更しようとしています。他のすべての#N/Aを交互にしたいので、最初はタイプ1に変更され、次にタイプ2に変更されます。私はいくつかの問題に遭遇しており、誰かが私を正しい方向に向けることができるかどうか疑問に思っていました。ここに私がこれまでに持っていて、前もって感謝しています!範囲をループして#N/Aセルを変更するVBA

Sub TruckFilterType() 

Dim counter As Integer 
Dim state As Integer 

counter = 2 
state = 1 

For counter = 2 To 100 
    If Worksheets("Sheet1").Cells(counter, 1).Value = "#N/A" Then 
     If state = 1 Then 
      Worksheets("Sheet1").Cells(counter, 1).Value = "TYPE 1" 
      state = 2 

     ElseIf state = 2 Then 
      Worksheets("Sheet1").Cells(counter, 1).Value = "TYPE 2" 
      state = 1 
     End If 
    End If 
Next counter 

End Sub 

答えて

0

セルに#NAが含まれているかどうかを確認するには、エラーをトラップする必要があります。

コード

Option Explicit 

Sub TruckFilterType() 

Dim counter As Long 
Dim state As Long 
Dim CellVal As Variant 

counter = 2 
state = 1 

With Worksheets("Sheet1") 
    For counter = 2 To 100 
     ' trap #NA error section 
     On Error Resume Next 
     CellVal = .Cells(counter, 1).Value2 
     On Error GoTo 0 
     If IsError(CellVal) Then 
      If CellVal = CVErr(xlErrNA) Then ' check if current error if xlErrNA (2042) 
       If state = 1 Then 
        .Cells(counter, 1).Value = "TYPE 1" 
        state = 2 
       Else 
        .Cells(counter, 1).Value = "TYPE 2" 
        state = 1 
       End If 
      End If 
     End If 
    Next counter 
End With 

End Sub 
+0

恐ろしいです。私はすべてが "On Error GoTo 0"という行を期待していると思う。あなたはそれを説明できますか? –

+0

@DustinSmithはここにエキスパートへのリンクhttp://www.cpearson.com/excel/errorhandling.htm –

+0

素晴らしい!助けてくれてありがとう! –

関連する問題