运行时错误'13'类型不匹配

时间:2012-12-05 20:38:49

标签: excel-vba vba excel

我使用下面的代码从不同的工作表中查找某些值。每次我收到运行时错误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

1 个答案:

答案 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代表多个单元而不是单个值)。

也许这会让你对这个问题有所了解。