楼主是个初学者,在应用vba时遇到了dim方面的问题,查了很多资料后想把关于dim的这点儿知识简单整理出来

首先,从我遇到的问题作为切入点吧, (不得不承认我遇到的错误是很低级的)

具体的情境就不还原了,将问题抽象了出来,代码如下:

运行结果

可以看到integer1被初始化为了空值,integer2被初始化为0

楼主想当然的认为dim的同类型多变量声明方式为 dim  变量名1,变量名2 as type   这种形式,导致了错误

接下来,让我们先查看一下dim的语法

Dim [WithEvents]varname[([subscripts])] [As [New]type] [, [WithEvents]varname[([subscripts])] [As[New] type]] . . .

由此,正确的格式应为 Dim integer1 as Integer, integer2 as Integer

在我之前使用的方法中,integer1会被初始化为一个Variant类型的空值,可以随着对其的操作变成任意类型。integer2则会被正常的初始化为0.

在VBA中我们使用Dim语句进行变量的声明,像大部分编程语言一样,也分为局部与全局声明:在过程中使用即过程级别变量,模块顶部则为模块级别变量。

而Dim的使用方法,上面也提到过了,Dim[WithEvents] varname[([subscripts])] [As [New]type] [, [WithEvents]varname[([subscripts])] [As[New] type]] . . .

你可以在一行中声明多个类型的变量如: Dim string1 as String, integer1 as Integer, single1 as Single,但注意,若你如此 Dim integer1,integer2 as Integer,变量integer1只能会是Variant类型,即相当于Dim integer1 或者Dim integer1 as Variant。

在初始化值方面,Variant 变量被初始化为 Empty,具体类型的变量的各自独立进行初始化,例如String类型被初始化为"",Integer类型被初始化为0

最后提一句吧,网上看到有人说vba可以不声明变量,写出来就用即可。也确实是这样,在没有option explicit的情况下不会产生语法错误,但非常不建议这样做,Dim具体类型变量除了可以提高效率,还可以方便注释、让代码阅读起来更容易。所以还是建议尽可能使用dim声明变量,即便是一个Variant类型。

以下引用一位老师ZhouFfett的说法,证明声明与否在效率上的差别。

最新文章

  1. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
  2. APUE学习--第三版apue编译
  3. samtools常用命令详解
  4. 在c#中IO流读写操作
  5. 优化后的 google提供的汉字转拼音类(针对某些htc等手机的不兼容情况)
  6. 一个ActionResult中定位到两个视图—<团委项目>
  7. finally关键字
  8. CDN网络(二)之配置和优化CDN核心缓存软件--squid
  9. MongoDB ObjectId
  10. 查看mysql的状态
  11. PHP学习笔记05——面向对象
  12. 【转】Android仿QQ截图应用测试
  13. orainstRoot.sh到底执行了哪些操作
  14. 转载:Python正则表达式
  15. Linux 多网卡的7种bond模式原理
  16. Tomcat全攻略
  17. centos中jdk配置
  18. top命令总结
  19. JAVA8新特性(一)
  20. SQL Server服务没有自动启动原因案例分析

热门文章

  1. Vue文件封装日历组件
  2. Extjs win
  3. POJ 1905 Expanding Rods( 二分搜索 )
  4. 七、利用frp 穿透到内网的http/https网站,实现对外开放
  5. 一、Git起步
  6. S3C6410 LCD Overlay Test Program
  7. CRM系统 - 总结 (二) stark组件
  8. 小学生都能学会的python(列表[ ])
  9. JS DOM 实例(5大常用实例)
  10. JDBC、事务和连接池