当前位置: 监察器 >> 监察器市场 >> ExcelVBA入门003变量
我们在《变量的声明及赋值》中已经学过,VBA变量是需先进行Dim声明才可使用的,Dim语句是在告诉ExcelVBA“有一个新的变量要产生了,请立刻腾出空间给这个新变量存放数据!”。Dim声明之后,代码就可以正常使用变量名所对应的内存空间的数据了。
但“有趣”又“乌龙”的是:VBA的变量其实是可以不用声明而直接使用的!我们借助Excel的后台魔眼试试看:
上例中有一个名为mystr的变量,此变量并未经过Dim声明直接在代码中赋值为一句字符串并使用Msgbox语句将其输出:
前台sheet中随机点击D4单元格,消息框及mystr的内容被正确输出!这说明变量未被声明确实可以使用!
这看似非常拉风,方便又快捷!但其“背后”却藏有极大的隐患!我们可以做个小实验:再来两个变量score1和score2(代表两门课的成绩),分别赋值后使用MsgBox输出两者之和,很简单吧。写完程式后回前台sheet点击并看看输出:
总成绩90?score2的去哪了?……
仔细检查下程式中的“score2”,两次出现的模样确定一样吗?不一样!“co”被拼写成了“oc”!这根本不是同一个量!你本不想这样,但错误的输入让你完全多定义了一个变量,它只是长得很像“score2”,仅此而已!这个新定义的量虽然未被赋值,但当它与整数相加时VBA会默认将其值初始化为整数0,MsgBox计算的是90+0,所以你看见了弹窗中的“90”!
小小的失误竟然完全改变了程序的意图甚至结果!如果你是用这种方法定义了几十上百个变量,且很多变量犬牙交错多次使用,那又会是番怎样的景象?真的是不敢想象……
为了解决这种“不声明即使用”为程序所带来的灾难性的后果,ExcelVBA为我们提供了一种实时监察机制:在代码窗口的顶部插入一段“声明”----OptionExplicit
此声明用于监视并保证代码中所有的变量均是有被声明过的!你可以将它理解为变量强制声明开关,只要它存在,你程式中的所有变量必须是被“Dim”过才能使用,否则程序会报错!
再来试试刚才计算总成绩的程序?
果然,世界清静了很多……你不用再担心输入错误了,只要未经Dim声明,统统都会被“揪出”!终于,可以安安心心写
最后,附上这个“OptionExplicit”开启的方式:
点击VBA代码页面菜单栏上的“工具”-点选“选项”
并在弹出的选项窗口中选择①编辑器-在②要求变量声明(R)前打勾即可。
如果这种方法并不能调出并显示“OptionExplicit”字样于代码窗口,你完全可以自己手动输入(注意需写在代码窗口顶部),功效完全一样。