2016-02-19 91 views
-2

我有这个宏在一个工作表上完美运行,但现在它在第13行显示一个错误。宏基本上找到任何标题下的任何标题“独特的拉”开始,然后将它们加在一起。VBA宏错误

我在想这与ActiveSheet有关,但我似乎无法弄清楚。

 If UCase$(ActiveSheet.Cells(1, i).Value) Like "UNIQUE PULLS*" Then 
      iTotal = iTotal + ActiveSheet.Cells(n, i).Value 
       ' For each of these columns, take value and add to total sum 
     End If 

Run-time error '13': Type mismatch

+2

“显示错误” - 出现什么错误?导致错误的源数据是什么?当数据不会导致错误时,源数据是什么样的?如果你知道它在第13行,那么为什么向我们展示你的其他代码?清理代码以向我们展示只运行到错误点的相关部分,记录导致错误的数据以及错误本身的详细信息。 –

+0

此外,我建议删除['.Select'和'.Activate']的所有实例(http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros )这可能会导致头痛。 – BruceWayne

+0

我已经更新了这个问题,只显示了一小块代码,并且还显示了错误信息 –

回答

0

试试这个:

If Trim(UCase$(ActiveSheet.Cells(1, i).Text)) Like "UNIQUE PULLS*" Then 
     iTotal = iTotal + ActiveSheet.Cells(n, i).Value2 
     ' For each of these columns, take value and add to total sum 
End If 

如果你在这一行收到错误 - >iTotal = iTotal + ActiveSheet.Cells(n, i).Value2

这也许是因为ActiveSheet.Cells(n, i).Value2不是可以添加的数字,而是其他某种数据类型使用Debug.Print ActiveSheet.Cells(n, i).Value2进行检查,您将在Immediate window

中得到您要添加的总数的输出210
1

当单元格的值是不是一个数字你会得到这个错误。您可以添加的则IsNumeric检查跳过无任何数字单元:

If UCase$(ActiveSheet.Cells(1, i).Value) Like "UNIQUE PULLS*" And IsNumeric(ActiveSheet.Cells(n, i).Value) Then 
    iTotal = iTotal + ActiveSheet.Cells(n, i).Value 
End If 
+0

或者,他可以使用。文本属性的单元格获取文本,如果它是一个数字,它显然不会匹配 – newguy

+0

我只是尝试了IsNumeric方法,并且它不再将每列中的值相加 –

+1

@RobDunn这表明您的'VBA'未指向包含数字的单元格。 – ARich