Excel编程代码报错,数据类型导致错误怎么办
Excel编程总报错?可能是数据类型在捣乱
问题说明
今天在群里碰到个同学,他说自己一段代码老是报错,还不知道为啥,代码大概是这样的:
代码如下
复制代码
Sub ErrDemo()
On Error GoTo Emsg
Dim i As Long
Dim SName As String
For i=1 To 4
Sheets(Sheets("Sheet1").Cells(i, 1).Value).Select
Next
Exit Sub
Emsg:
MsgBox "Error!"
End Sub
他主要想做的,就是扫描单元格里存的Sheet名称,来激活显示不同的Sheet什么的。
到底为啥会出错呢
问题原因
我看了看他的代码,又瞧了瞧单元格里存的Sheet名称,能得出个结论,就是数据类型不明确才导致的错误。因为这同学有些Sheet的名称直接就是数字类的,熟悉VBA的同学都该知道,Sheets("Sheet名称")或者Sheets(SheetID)都能定位到Sheet,那你传个数字过去,Sheets就会把它当成数字ID来识别。
这样改就能解决问题
解决办法
把代码
代码如下
复制代码
1 Sheets(Sheets("Sheet1").Cells(i, 1).Value).Select
修改成
代码如下
复制代码
1 Sheets(Sheets("Sheet1").Cells(i, 1).text).Select
注意后面这段代码,我们强制用文本类型当传递的参数类型,问题就解决了。
你在Excel编程时有没有遇到过类似的数据类型问题呀?要是还有其他代码报错的情况,也可以跟我说说哦。