我收到运行时错误'13':当我尝试运行代码时键入不匹配。调试突出显示'IF'语句,但我无法弄清楚错误在哪里。任何帮助,将不胜感激。谢谢
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
事实上我正在尝试这样做:
我有一张工作表我有100行各种ID,我想将这些ID复制到另一张没有可能的非ID字符串,在这种情况下它可以是#N / A或00000000-0000,我也不希望那些非复制的单元格在目标范围内显示为空白。
答案 0 :(得分: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不使用短路因此包装
因评论而更新
您可能希望像这样更改代码
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