EXcel vba :运行时错误‘13’,类型不匹配。

2024-11-11 00:23:46
推荐回答(5个)
回答1:

类型不匹配是由C As String引起的,因为声明C后没有给他赋值为有效的数值字串,计算时,数值型的字串会自动转换成响应的数值参与运算,而零长度的字串是不被支持的。

如变量声明改成Dim m,V,b,d,C,其他不变,则会出现"溢出“错误,因为100*d=0(除数为0)。

如变量声明改成Dim m As Integer,V As Integer,b As Integer,d As Integer,C As Integer,其他不变,也会出现”溢出“错误,因为100*d=0(除数为0)。

要排除错误,必须确保每个变量在计算时能正确进行类型转换,同时,还必须确保数值大小在对应数字类型的大小范围之内,有除法时,除数必须不等于0。

扩展资料:

常用内置函数


舍入函数:Fix 向0取整,Int向下取整, Round四舍五入

Rnd 返回0-1内的单精度随机数

字符串函数:

Filter:对字符串的一维数组的过滤

InStr([Start, ],[, Compare])与InStrRev: 查找子串

Len 字符串长度

Join:连接一维数组中的所有子字符串

Left,Right,Mid 截取子字符串

Space(数值) 生成空格字符串

Ucase,Lcase 大小写转换函数

Ltrim, Rtrim,Trim 删除首尾空格

Replace

参考资料来源: 百度百科-VBA (Visual Basic宏语言)

回答2:

经过测试是文本型的 日期,datevalue也可以正常转换数据的,如果单元格是空的,那么datevalue会报 13 的错误。看一下出错时的 i 是多少吧。然后检查一下那行D列的数据,是空了,还是有别的字符。

回答3:

你cells(i,4)对应的应该是工作表的D列,现在是 2019年2月21日 这样的,要么是文本要么是日期型数据,即使是文本,你传入到 DATEVALUE()函数应该也会报错的。还有datevalue(date)这里,都要检查一下。

回答4:

在这报错的一行前面加一句
msgbox .cells(i,4) & "|" & datevalue(.cells(i,4))
就能看出是什么格式问题了

回答5:

你是要比较时间差吗?这样写是不对的啊。有兼容问题。
DateDiff("d", .cells(i,4), today) =10