VBA运行时错误13类型不匹配#值
在我的专栏的一些单元格中,出现了VBA运行时错误13类型不匹配#值,vba,Vba,在我的专栏的一些单元格中,出现了#VALUE里面的单词和公式如下示例: =IF(VALUE(RIGHT(CELL("nome.arquivo";A1);LEN(CELL("nome.arquivo";A1))-SEARCH("]";CELL("nome.arquivo";A1))))=1;1;1+INDIRECT(ADDRESS(329;COLUMN();;;VALUE(RIGHT(CELL("nome.arquivo";A1);LEN(CELL("nome.arquivo";A1))-SEAR
#VALUE代码>里面的单词和公式如下示例:
=IF(VALUE(RIGHT(CELL("nome.arquivo";A1);LEN(CELL("nome.arquivo";A1))-SEARCH("]";CELL("nome.arquivo";A1))))=1;1;1+INDIRECT(ADDRESS(329;COLUMN();;;VALUE(RIGHT(CELL("nome.arquivo";A1);LEN(CELL("nome.arquivo";A1))-SEARCH("]";CELL("nome.arquivo";A1))))-1)))
提到的列是CT
。现在,当我试图在单元格中循环时,第一次出现#VALUE!我得到一个错误:
运行时错误13,此行的类型不匹配
:
L = 9
Do While Cells(L, "CT").Value <> "" '<========= HERE AN ERROR
L = L + 8
Loop
L=9
Do While Cells(L,“CT”).Value”“Cells
不接受任何字符串
参数,您得到的类型不匹配错误与正在处理的数据无关-因为代码永远无法计算数据,由于单元格
需要两个整数
参数:dang每次都会咬我-显然,您可以在单元格
函数中使用字符串参数。啊
因此,问题在于将值与字符串进行比较<代码>#值
不是有效的字符串函数,因此需要对其进行说明:
Dim theCell As Range
Set theCell = Cells(L, "CT")
If Not IsError(theCell.Value) Then
Do While Not IsEmpty(theCell.Value)
'...
L = L + 8
Loop
End If
您可能还希望正确限定该函数调用:
Do While Not IsEmpty(ActiveSheet.Cells(L, "CT").Value)
这样,您就可以清楚地看到活动工作表中的单元格;一个非限定的调用隐式地这样做,任何隐式的调用都可能会造成混乱和bug
确保模块顶部显示了选项Explicit
,并且正确声明了L
:
Dim L As Long
“L”是一个无意义的标识符,你应该考虑在使用它之后命名它:
Dim currentRow As Long
currentRow = 9
Do While Not IsEmpty(ActiveSheet.Cells(currentRow, "CT"))
这样,您的代码就更容易阅读、理解和理解。单元格
接受两个变量
参数,第二个参数可以是字符串(A1
符号中的列字母)<代码>单元格(L,“CT”)< /代码>是一个有效的调用。@ GSerg,我知道,我正处于编辑的中间。每次都咬我。天哪,这太难看了。我测试了你所有的代码,但没有工作——还有类型不匹配错误。我发现了这样一种看起来很好用的方法:在空闲时执行(Cells(L,“CT”).Value)。您对我的方法有何看法?@JimmyJimmdo While IsEmpty
与您的原始代码实际测试的完全相反。在While
和IsEmpty
之间粘贴一个Not
。当你需要使用该值做某事时,它也会咬你一口。最好的方法是使用iError
验证该值是否表示错误值,然后对其进行处理。