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编程时有没有遇到过类似的数据类型问题呀?要是还有其他代码报错的情况,也可以跟我说说哦。


相关文章

zui-xin