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

本人主要是从事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天,将心得体会分享出来,希望对看文章的你有所帮助。

猜你喜欢

转载自blog.csdn.net/guggle15/article/details/120001251
vba
今日推荐