VBA编程入门,vba编程及应用基础
1对基本概念理解不完整造成的问题1:语句不完整1.1新人报告语句不完整造成的错误。比如我用VBE写的东西,很多时候因为语句不完整导致的问题而报错。例如,当我编写以下语句时,当我单击以运行VBE时,我会报告错误。为什么?范围( a1:a8) a1 2
1.2只有这样写,才能不报错,因为这样的一行是完整的“一行语句”。ARR1=范围( A1: A8 )调试。打印范围( A1: A8 )已完成。
1.3为什么?因为变量、表达式、句子、句块等概念。都是傻的,变量和常数没有区分清楚。比如比如range(a1:a8 )表达式:比如1/3语句,一行代码的最小单位,一行代码至少要有一条语句。例如,a=1 99个语句块,多个语句
debug.print语句呢?这是一个操作和完整的语句Debug . print Debug . print Debug . print hello Debug?对象?模块?班级?还是特别?
2基础概念薄弱分析2:VBA基础数据类型不明确2.1有时候,为什么你输入代码,输出的内容却不是你想要的?比如下面的
test2()debug . print line 1 print=;ADebug。Print 第2行打印=;ADebug.Print 第3行print=;1debug.print 第4行打印=;a=端接头
2.2问题是不了解VBA的基本数据类型。2.2.1基本数据类型,不同存储格式的数据存储类型。常量字符串 a 1 数字1 is numeric is numeric(1)=true is numeric( 1 )=true。
2.2.2位置/存储空间/名称/称谓——名称代表其所指(指向存储地点)。变量名代表变量,数组名代表指向函数的数组函数名。没问题。
答:动态变量包罗万象?可以用不同的缺省初始值表示不同类型的变量。数组和数组名字典和字典名子函数和子函数名对象和对象名。
2.2.3引用数据类型的声明必须是预先声明的数组,obejct等。
可以提前不声明的变量,可以不提前定义,or=SUM(INDIRECT(A1)!B:B ))等价于sum(sheet1!乙:乙)
2.2.4比较变量名$a string aVBA变量名a string a array array 1=array()func 1()python变量名a string a array list=[]func 1()
3所谓数据结构,我的理解,我感觉比如array dict就是上帝自己定制的函数,加了一堆有用的方法和属性。所以意味着某些语言和某些语言中的数据结构也有局限性。因为是人设计的,肯定和他当时的想法和问题有关,所以很难适用于所有情况。当然还有很多大神,这些语言和数据结构都很牛逼。然后就成了普遍标准。你牛逼,你也可以,哈哈。
4关于各种返回值4.1一般情况下,如果没有返回值,默认会返回“false”。各种没有返回值的变量和表达式默认为false 。
4.2返回值被确定为字符串类型的函数inputbox()一般返回字符串类型。记得在使用前对split()返回的字符串进行处理,即使是数字也是‘5’。
4.3理解概念,比如弦弦的概念。不要死记概念,比如变量,字符串。其实你应该知道,在代码中,A=B1和A是变量,返回值是false ,而 A 是字符串。
5先搞清楚VBA的参数传递方法,再了解函数参数编写。5.1参数类型必需参数可选参数
5.2传递方法按位置传递参数是按名称传递参数的有序方式,只需要正确的参数名。如果是混合传递,按名称传递的参数只能放在后面。
5.3 比如最后1个参数不能是 , 省略,但是前面的参数可以省略
arr 4=application . index(arr 1,3,0) arr5=application.index (arr1,3) arr5=application.index (arr1,3,)书写错误resize(3,2)resize(3)resize(3)的拼写错误
5.4写参数的例子有submaomi 3()Debug . print VBA . dateserial(2019,12月31日)debug.printvba.timeserial (9,15,0)Debug . print Debug . print VBA . dateserial(year:=2019,Month:=12,Day:=31)Debug。打印VBA。TimeSerial(小时:=9,分钟:=15,秒:=0)调试。打印调试。打印VBA。DateSerial()年:=2019,月:=12,日:=31 调试。打印VBA。 TimeSerial()小时:=9,分钟:=15,秒:=0 调试。打印结束Sub
6你需要知道变量的有效范围——否则你无法理解什么时候变量需要独立,什么时候你可以在一段代码中使用6.1变量的相同有效范围。特别注意变量的独立性。新手喜欢一个变量并重用它,知道之前的代码很可能改变了变量的当前值。了解跨模块变量公共模块变量私有dim进程变量dim静态
6.2什么时候变量名应该尽可能独立?因为变量在进程之间一般不会互相影响,除非是模块级的变量,所以函数中的变量在不同的进程中不需要独立,函数中的变量尽量独立,否则有很大的可能会互相影响。除非不断重置,否则会很复杂。
7有些函数,如工作表函数,需要在搜索单元格中添加 range ( A1:A8 )[A1:A8]application . match( 1 ,0)。