【学习笔记】VBA学习笔记

==19年2月更新

现在一般都用with 或者是 .name 和 range搭配的比较多,好处就是可以批量处理单元格内容,其实用vba主要是为了配数值表的时候,写一个工具表方便配数值,所以下边介绍的很多msgbox的各种用法,其实都没啥卵用,大家了解一下就行了,不用全都学会,哈哈哈哈哈,羡慕之前傻乎乎的自己,每一个细节都看到明明白白,清清楚楚

===18年5月原答案

因为老大对我的定位是 系统+“表弟”+一点lua Python程序(原来是做unity程序的)

所以记录一下VBA学习笔记

学习笔记来源 https://www.yiibai.com/vba/

-----此为分割线-----

1.  怎么找到开发者工具,怎么拖控件,怎么切换到代码编辑器,REM或者 ‘  注释等一些简单的东西都不表了(有程序基础的随便理解,没程序基础的百度吧)

2.MsgBox

MsgBox(Prompt[,Buttons][,Title][,Helpfile,Context])

这个是给的语法,看不懂?没关系,举个例子

(1)MsgBox(“早上好”),Prompt为必选,其他可选

(2)title就是右上角红叉叉左边的标题,这里主要说中间的Buttons

以上是网站上写的,我直接复制粘贴了,为了便于理解,我找了其中几个实验了一下,我以为是可以随机组合的,我于是写成了这样。

会报错,说明这个buttons这个参数只能选一个,并不能互相兼容,同时上述“想好了再选就是title”

(2)Msgbox返回值

将上边的buttons改了之后,讲返回值用result接受,同时输出答案。特别提示: &result前边必须有表达式,不然会报错!

result 返回值为1 / 2==确认1,取消2

如果将buttons改为2,result返回值 中止3,重试4. 忽略5

如果buttons改为3,result 分别为6 7 2

同理,其他的例如16如下只是变了一些基本的格式,下边的确定什么的,返回值是确定的。

总结一下返回值:

3. 输入框


InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])

语法规则是这么写的,看不懂,没关系,举个例子嘛。

五个参数,分别是内容,标题,默认值,举例左上角的X的值,和Y举例左上角的Y值

通过返回值查看结果

点击确认返回输入值,点击取消返回空。(有了弹出框的基础,输入框就很好理解了)

4 VBA变量

以上关于变量的基础语法,不再赘述了,所有的程序都有相关变量的规则,差不多就不专门看了,贴在这里,便于其他同学查看。

上述我们的例子中,length也好,result也好,接收了返回值,作为一个常量存在,如果需要变量的使用,必须声明,这个在其他的语言里也是必须的,只是声明方式不同:

Dim name as type

举例:

Dim password as String

复习巩固:

1,2 为date数据的基本书写,3 以&不断的连接 &chr(10)来不断换行

为什么之前写的length也好,result也好,接收了一个数值,为什么不需要声明?

5. 常量

语法:


Const <<constant_name>> As <<constant_type>> = <<constant_value>>

实例:


Const MyInteger As Integer = 720
   Const myDate As Date = #10/21/2000#
   Const myDay As String = "Sunday"

   MsgBox ("整数值是:" & MyInteger & Chr(10) & "myDate的值是:" & myDate & Chr(10) & "myDay 的值是:" & myDay)

主要针对日期的写法进行一个格外的关注

6. 运算符

相同的就不再赘述了,这里介绍几个原来见得比较少,或者是跟其他语言不一样的。

(1)<>检查两个操作数的值是否不相等。如果值不相等,则条件为真。

(2)NOT逻辑NOT运算符。用于反转其操作数的逻辑状态。 如果条件成立,那么逻辑非运算符结果是条件不成立。(相当于C# 里的!)

(3)XOR逻辑排除。它是NOTOR运算符的组合。如果表达式中只有一个表达式的值为True,则结果为True

(4)连接运算符

+ 将两个值添加为变量,其值是数字 A + B = 15
& 连接两个值 A & B = 510
+ 连接两个值 A + B 的结果为MicrosoftVBScrip
& 连接两个值 A & B 的结果为MicrosoftVBScrip

7 VBA 决策

不再赘述,这些都是语法基础

7.1 IF 去掉了括号

 

7.2  if else : if bool then 执行体 else 执行体 end if

7.3 if elseif else   只是在每一条if 或者else if 后边的判断之后加了then+执行体

7.4 switch

8. 循环语句

循环控制语句

下面是具体实例:

8.1 for

跟C系列的循环语句语法不同


For counter = start To end [Step stepcount]
   [statement 1]
   [statement 2]
   ....
   [statement n]
   [Exit For]
   [statement 11]
   [statement 22]
   ....
   [statement n]
Next

官方给出的语法结构如上图

看不懂,不要慌,我来给你举栗子!糖炒栗子。。。emmm


Dim a As Integer
   a = 10

   For i = 0 To a Step 2
      MsgBox ("The value is i is : " & i)
   Next

for i=0 to a step 2 执行体 next ==== 几个细节,for 初始值i=x to n step m 翻译一下就是 从几到几 以几为间距  执行体 next结尾

8.2 for each


'fruits is an array
   fruits = Array("苹果", "橙子", "樱桃")
   Dim fruitnames As Variant

   'iterating using For each loop.
   For Each Item In fruits
      fruitnames = fruitnames & Item & Chr(10)
   Next

   MsgBox fruitnames

for each item in xxx 执行体 next

自己练习一下:将1 2 3 4 打印输出

8.3 while

counter=10


While Counter < 15     
      Counter = Counter + 1   
      msgbox "The Current Value of the Counter is : " & Counter 
   Wend   

就这么简单

while 条件

   执行体

wend

8.4  do while

a = 1
Do While i < 10
i = i + 1
MsgBox i

Loop   

执行结果

还有第二种写法

i = 10
Do
MsgBox i
i = i + 1
Loop While i < 5
 

执行结果11   区别在于 do    loop while一定会执行一次   而do while需要判断是否满足条件

8.5 退出循环 类似与c系列的 continue break


Exit For    Exit Do

弹出循环

9 VBA 字符串 字符串函数如下

其他的函数都没有问题,就是第一个第二个看的我一脸懵逼,二脸懵逼,三脸懵逼。

=========分割线,6/20 因为昨晚被安排填表(第一次填,懵的要死,万脸懵逼)======

1. VBA 时间日期函数

https://www.yiibai.com/vba/vba_date_time.html

2. 数组

数组声明:

dim arr()

dim arr(3)

dim arr

arr=Array("1","2","3")

dim arr(2,3) 多维数组

2.1 Redim

话是这么说,完全看不懂。

也就是重新定义一个数组

如果加了prxx,还可以保留原数组的内容

我们自己做一个实验

这样的弹出结果是 z p x 空 空 3 4

如果加上preserve

结果变成了zpx zpx 3 4

方法:

split

==================

这些没来得及写但已经学了一遍

5.事件  工作表 工作簿事件两种

6.  VBA Excel对象

应用程序对象,工作簿对象,工作表对象,范围对象

3. 用户自定义函数

4. 子函数就是 sub end sub

不会有返回值

模块相当于一个公共区域,代码写里边就行

那个选择一个宏名的意思就是选择一个函数名

==================

下方为没学区域哈哈哈哈哈:

=================

7. 文本文件

8 图表

=================

猜你喜欢

转载自blog.csdn.net/eat_human/article/details/80728829