2017-08-21 41 views
0

希望这是一个容易解决的问题。我的代码按预期工作,直到月份(范围(“K”& i))不包含值,在这种情况下,我得到运行时错误13 - 类型不匹配。当发生这种情况时,我希望循环继续为下一个i值运行。我尝试使用错误恢复,但它正在恢复下一个K值,而不是我导致错误的数据。这里的任何帮助表示赞赏。运行时间后恢复循环错误13 - 类型不匹配

For i = 3 To 6 

    For k = 16 To 36 


     If Month(Range("K" & i)) = Month(Cells(2, k)) And Year(Range("K" & i)) = Year(Cells(2, k)) And Range("J" & i).Value > "0" Then 

      Range("J" & i).Copy 
      Cells(i, k).PasteSpecial xlPasteValues 

     End If 
    Next k 

Next i 

回答

1

添加另一个如果先测试它是否是一个日期。

一对夫妇更注意事项:

获取指定所有家长即使在活动工作表的对象范围,习惯。这将有助于未来更复杂的代码。

当只需要值时,避免剪贴板并直接分配值更快。

For i = 3 To 6 

    For k = 16 To 36 
     With ActiveSheet 
      If IsDate(.Range("K" & i)) Then 
       If Month(.Range("K" & i)) = Month(.Cells(2, k)) And Year(.Range("K" & i)) = Year(.Cells(2, k)) And .Range("J" & i).Value > "0" Then 

        .Range("J" & i).Value = .Cells(i, k).Value 

       End If 
      End If 
     End With 
    Next k 

Next i 
+0

当我尝试添加额外的中频,如你所示,它给我一个编译错误:下一个没有为和突出显示位于k之前的“下一步”? –

+0

@MattR现在再试一次 - 斯科特已经遗漏了'End With' – YowE3K

+0

@ YowE3K谢谢你回答了另一个问题。 –

相关问题