我为一个文件创建了一个宏,首先它工作正常,但今天我已经打开并重新启动了数百次文件和宏,我总是遇到以下错误:
Excel VBA运行时错误“13”类型不匹配
我没有更改宏中的任何内容,也不知道为什么会出现错误。此外,每次运行宏(宏必须运行大约9000行)时,更新宏都需要很长时间
错误在****之间的行上
VBA:
子k()
Dim x为整数,i为整数,a为整数
将名称设置为字符串
名称=输入框(“请插入工作表名称”)
i=1
表格(名称).单元格(4,58)=表格(名称).单元格(4,57)
x=工作表(名称).单元格(4,57).值
非空时执行(表(名称).单元格(i+4,57))
a=0
如有表格(名称)。单元格(4+i,57)<&燃气轮机;那么
如有表格(名称)。单元格(4+i,57)<&燃气轮机;0那么
如果表(名称).单元格(4+i,57)=3,则
a=x
表格(名称)。单元格(4+i,58)=表格(名称)。单元格(4+i,57)-x
x=细胞(4+i,57)-x
如果结束
**表格(名称)。单元格(4+i,58)=表格(名称)。单元格(4+i,57)-a**
x=板材(名称).单元(4+i,57)-a
其他的
细胞(4+i,58)=&引用;
如果结束
其他的
细胞(4+i,58)=&引用;
如果结束
i=i+1
环
端接头
我正在Windows7上使用Excel2010
如果Sheets(name).Cells(4+i,57)包含非数字值,则会出现类型不匹配。在假设字段是数字并尝试从中减去之前,应该验证字段
此外,还应启用选项Strict,以便在尝试对变量执行类型相关的操作(如减法)之前,强制显式转换变量。这也将有助于您在将来发现并消除问题。
   ;不幸的是,选项Strict仅适用于VB.NET。不过,您应该在VBA中查找显式数据类型转换的最佳实践
更新:
但是,如果您试图快速修复代码,请将**行及其后面的行在以下条件下换行:
如果是数字(表(名称).单元格(4+i,57))
表格(名称)。单元格(4+i,58)=表格(名称)。单元格(4+i,57)-a
x=板材(名称).单元(4+i,57)-a
如果结束
但是,请注意,x值在下一次迭代中可能不包含其预期值