永发信息网

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

答案:3  悬赏:80  手机版
解决时间 2021-02-03 16:39
  • 提问者网友:了了无期
  • 2021-02-02 23:35
代码:
Sub 保留值()
For i = 1 To Sheets.Count '遍历所有工作表
For j = 1 To 256 '遍历列。若是.xlsx文档,此处的256可改为改为16384
For k = 1 To Cells(65536, j).End(3).Row '遍历行。
'若是.xlsx文档,此处65536可改为1048576
If Sheets(i).Cells(k, j) <> "" Then
Sheets(i).Cells(k, j) = Sheets(i).Cells(k, j)
End If
Next k
Next j
Next i
End Sub
错误 的地方:If Sheets(i).Cells(k, j) <> "" Then
这是什么问题?怎么解决。
最佳答案
  • 五星知识达人网友:鱼忧
  • 2021-02-03 00:10
试试用这句容错:
If Sheets(i).Cells(k, j) & "" <> "" Then

下面这句
For k = 1 To Cells(65536, j).End(3).Row

最好改为:
For k = 1 To Sheets(i).Cells(65536, j).End(3).Row
全部回答
  • 1楼网友:三千妖杀
  • 2021-02-03 01:38
运行没问题,只是看样子你的if还没写完
  • 2楼网友:你可爱的野爹
  • 2021-02-03 01:21
类型不匹配是由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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯