分享

操蛋的VBA程序错误!

 神奇的ExcelVBA 2020-04-07

职场中使用Excel VBA编程处理表格数据时,我们肯定会遇到过错误,《神奇的VBA》学习插件中介绍过VBA错误有语法错误,有运行时错误等等。语法错误在编程阶段编辑器会告知我们,这很方便,但是运行时错误有时候就有点麻烦了。程序运行时错误是所有写程序人的天敌!一个小小的错误有时候能让人变得非常暴躁。尤其是学习Excel VBA的新人,程序的错误更会消耗一个人的耐心和兴趣。下面介绍3个常见的错误。这些错误不仅职场Excel编程的新人会碰到,而且经常使用Excel VBA编程的职场老腊肉们其实也经常会掉坑里。

  

1. 变量名错误

错误信息: 运行后没有返回正确的结果。为什么我的运行结果为空?

Sub 创建变量并赋值()
Dim str1 As String
shr1 = "I Love 神奇的VBA"
MsgBox str1
End Sub

错误原因: 这个错误,太多人会碰到了,这是个典型的超低级错误!上面代码示例中str1和sh1根本就不是同一个变量。虽然显式定义了一个字符串String类型的变量,但是赋值变量时,却写错了变量。由于编辑器默认不用强制编程声明,所有sh1在编程时并没有提示错误。运行时也不会产生错误,sh1相当于隐式地创建了一个变量。


2. 数组定义理解不清

错误信息: 运行后,循环遍历数组时,为什么会多弹出一个0.

Sub 数组赋值并遍历()
'创建一维数组
Dim num(3) As Integer
'对元素数组进行赋值
Dim x As Long
For x = 0 To 2
    num(x) = Cells(x + 1, "A") '假设A1~A12单元格都有数据
Next
'通过循环遍历逐一弹窗显示数组的元素值
Dim ele As Variant
For Each ele In num
    MsgBox ele
Next
End Sub

错误原因:在没有Option Base 1语句的前提下, num(12)等同于num(0 To 12) 总共有13个元素,而不是12个元素。 


3. For Each遍历数组元素产生错误!

错误信息: 循环遍历数组获取数组元素值时,运行中产生错误提示“下标越界”。

Sub 数组赋值并遍历()
'创建一维数组
Dim num(0 To 2) As Integer
'对元素数组进行赋值
Dim x As Long
For x = 0 To 2
    num(x) = Cells(x + 1, "A") '假设A1~A12单元格都有数据,分别为1~12
Next
'通过循环遍历逐一弹窗显示数组的元素值
Dim ele As Variant
For Each ele In num
    MsgBox num(ele) '产生“下标越界”的运行时错误!
Next
End Sub

错误原因: 应该将num(ele) 改成 ele。For..Each遍历直接遍历元素。而num(ele)这样写会重新以ele值作为索引获取数组值!如果ele不是数值的如字符串的话会立即产生错误!

暂时就介绍这么多,更多知识下次再分享。

关注我,学习职场中的干货技能!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多