【原创】VBA 必备知识及注意点(从本人简书博客移入)

本文介绍了Java程序员在转向VBA编程时常遇到的问题,包括条件语句、循环、自定义方法、赋值语句的差异。强调了VBA中循环从1开始、使用Set语句处理对象以及变量命名规则。同时,提出了代码书写位置的建议,提倡将方法写在Module中以提高代码复用性,并预告了后续关于VBA技巧的文章。
摘要由CSDN通过智能技术生成

本人主要是从事Android,iOS及JAVA web后台开发,所以本篇文章主要说的是有java编程语言基础后,书写VBA经常会犯的几个错误以及本人在写VBA工具中的几个思路,代码中斜线内容就是特别注意的地方。

1.条件语句:

java中:

if () {

} else if() {

} else {

}

VBA中:

If () then

Elseif () then

Else

End If

2.循环

VBA的写法是

for i = 1 to 10 step 1

End for

注意:VBA主要是做单元格的循环,是从1开始的!!!如果需要修改每次加的值只需要修改step就行

3.自定义方法

VBA中有两种,一种是sub,一种是function,这两者最大的区别就是有没有返回值,如果需要返回值,一定要用function;如果不需要,两者都可以,本人习惯用sub。如果需要给按钮指定宏的话,是只能指定sub,不能指定function的。

Function test(ByVal temp As String) As String

	test = temp

End Function

(1)函数的返回值是使用函数名直接赋值得来的,相当于java中的 return temp;

(2)形参有两种一种是ByVal,一种是ByRef,ByVal是值传递,也就是说一个数值传入之后,在函数中无论做什么操作,也不会修改传入参数本身,ByRef是址传入,如果函数中修改了形参的值,那么传入参数的值就改变了。这个可以参考C语言的指针中的值传递和址传递的区别。一般都是ByVal

4.赋值

Dim  test As   Integer

test = 5

值类型直接如上所示赋值即可,实际上VBA真正处理时是使用了let语句

let    test = 5

那么在处理对象中,VBA是需要使用set语句的,但是我们会经常忘记加上set,导致报错

“运行时错误g1,未设置对象变量或With块变量”

Dim     testRange     as Range

set    testRange =  Range("A1")

5.变量的命名

其他语言:以英文字母或下划线开头,后面可以使用英文字母,下划线及数字

VBA:以英文字母开头,后面可以使用英文字母,下划线,数字及汉字

6.代码书写的位置

VBA的代码可以写在worksheet,workbook,module中,建议方法写在module,然后在worksheet和workbook的按钮事件和worksheet,workbook的事件中调用module中的方法。

好处:sheet页删除后,实现方法仍在module中,只需要新建sheet页,添加按钮去调用就可以用。

后续会写一篇VBA技巧的文章,提供禁止用户修改sheet页名,禁止删除sheet页的小技巧。

7.VBA代码扩展性

一个是工具页,一个是工具配置页,module中代码采用自定类型参数,工具页中代码只负责读取工具配置页中单元格相应的值,生成自定义参数,然后调用module中的代码。之前写个工具花费1天,整改了两次代码,最后又花费了2天,将心得体会分享出来,希望对看文章的你有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值