我使用下面的代码从不同的工作表中查找某些值。每次我收到运行时错误13.我不确定如何更正我的数据类型。对我来说很奇怪的是我确实返回了正确的值,但是没有收到这个错误(这会阻止我的其余代码运行)。你能解释我怎么纠正这个吗?谢谢!
Dim acs As Integer
For acs = 2 To 2000
Set rng1 = Sheets("RD" & y).Range("C" & acs)
Set rng2 = Sheets("RD" & y).Range("D" & acs)
Set rng3 = Sheets("RD" & y).Range("E" & acs)
If Sheets("Tsecond").Range("Y" & acs) = Sheets("inputs").Range("B" & y) Then
Sheets("Tsecond").Range("AE" & acs).Copy
Sheets("RD" & y).Range("C" & acs).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Tsecond").Range("AE" & acs).Copy
Sheets("RD" & y).Range("C" & acs).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Tsecond").Range("Y" & acs).Copy
Sheets("RD" & y).Activate
rng2.Select
ActiveSheet.Paste
Sheets("Tsecond").Range("T" & acs).Copy
Sheets("RD" & y).Activate
rng3.Select
ActiveSheet.Paste
End If
Application.ScreenUpdating = False
Next acs
答案 0 :(得分:2)
当我在一行代码上遇到令人困惑的错误时,我所做的就是通过使用简单的赋值将行划分为多行。运行这些简单的任务并观察哪一个得到错误以及其他调试信息有时会有足够的亮度来揭示问题。对于你的行:
If Sheets("Tsecond").Range("Y" & acs) = Sheets("inputs").Range("B" & y) Then
我要做的是这样的事情:
Set s1 = Sheets("Tsecond")
Let rc1 = "Y" & acs
Set r1 = s1.Range(rc1)
Set s2 = Sheets("inputs")
Let rc2 = "B" & y
Set r2 = s2.Range(rc2)
If r1 = r2 then
如果在If
之前出现错误,那么调试器应该可以帮助您查看各种类型的细分表达式。如果错误出现在If
行,则将其更改为:
Let v1 = r1.Value
Let v2 = r2.Value
if v1 = v2 then
调试器应该有助于向您显示v1和v2的类型(如果它们不兼容),或者是否存在其他错误(即r2.Value代表多个单元而不是单个值)。
也许这会让你对这个问题有所了解。