类型不匹配是由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, ]
Len 字符串长度
Join:连接一维数组中的所有子字符串
Left,Right,Mid 截取子字符串
Space(数值) 生成空格字符串
Ucase,Lcase 大小写转换函数
Ltrim, Rtrim,Trim 删除首尾空格
Replace
参考资料来源: 百度百科-VBA (Visual Basic宏语言)
经过测试是文本型的 日期,datevalue也可以正常转换数据的,如果单元格是空的,那么datevalue会报 13 的错误。看一下出错时的 i 是多少吧。然后检查一下那行D列的数据,是空了,还是有别的字符。
你cells(i,4)对应的应该是工作表的D列,现在是 2019年2月21日 这样的,要么是文本要么是日期型数据,即使是文本,你传入到 DATEVALUE()函数应该也会报错的。还有datevalue(date)这里,都要检查一下。
在这报错的一行前面加一句
msgbox .cells(i,4) & "|" & datevalue(.cells(i,4))
就能看出是什么格式问题了
你是要比较时间差吗?这样写是不对的啊。有兼容问题。
DateDiff("d", .cells(i,4), today) =10