本帖最后由 XMQ 于 2022-9-3 11:02 编辑
2.编写宏代码(alt+f11)打开vb编辑窗口
(注释在前面加上英文的单引号)
2.1 认识vba代码基本架构,一般都会以 end xxx结尾
上面是宏代码的基本架构
2.2 例子1:按f5选择要运行的宏点击运行即可,注意空格
[Visual Basic] 纯文本查看 复制代码 Sub 第一个程序()[align=center]
'MsgBox 弹出弹窗并显示信息[/align][align=center]
MsgBox "这是我的第一个程序"[/align][align=center]
'获取A1单元格的内容 & 为连接符[/align][align=center]
MsgBox "输出A1单元格内容:" & Range("A1").Value[/align][align=center]
End Sub
运行后的示例图:
语法提示(语法提示,在你打出一些vba内置的方法或者属性时会有一些参数提示,可以参考这个)
2.3 变量 ( 格式:Dim 变量名 As 数据类型 )
各种变量的例子
[Visual Basic] 纯文本查看 复制代码 'Sub 变量()[align=center]
'声明定义一个int变量,变量名为Score,在声明变量时可以不声明了、数据类型,但是不推荐[/align][align=center]
Dim Score As Integer[/align][align=center]
Dim R As Range, L As Long, S As String, Birthday As Date[/align][align=center]
' 把 100 赋值给 Score[/align][align=center]
Score = 180[/align][align=center]
L = 2.01[/align][align=center]
S = "大帅哥的身高:"[/align][align=center]
endRow = Range("D" & Rows.Count).End(xlUp).Row[/align][align=center]
' 日期类型数据前后要加上 #,注意格式[/align]
[align=center]
Birthday = #8/30/2022#[/align][align=center]
' 弹出 Score 的值[/align][align=center]
MsgBox S & Score & " " & L & "生日是: " & Birthday[/align][align=center]
End Sub
运行后的 示例图
]
2.4 变量的作用域 (全局和函数变量,全局变量所有函数都可用,函数变量只能在指定的函数里调用)
2.5 Static 关键字
[Visual Basic] 纯文本查看 复制代码 Sub StaticTest()[align=center]
' Static 静态变量 可以记住每次的变量[/align]
[align=center]
Static Count As Integer[/align][align=center]
' 实现 Count 的累加[/align]
[align=center]
Count = Count + 1[/align]
[align=center]
MsgBox "点击了:" & Count[/align]
[align=center]
End Sub
之后的程序运行的结果图就不贴了,大家多敲代码理解理解哈!!!!
2.6 常量 (与变量的区别是常量声明时必须赋值)
[Visual Basic] 纯文本查看 复制代码 'Sub 常量测试()[align=center]
' 变量[/align][align=center]
Dim Score As Integer[/align][align=center]
' 常量(初始化要赋值),且不能进行修改[/align][align=center]
Const Pi As Double = 0[/align][align=center]
Dim Price As Long[/align][align=center]
Price = 200[/align][align=center]
MsgBox "价格:" & Price & "PI" & " " & Pi[/align][align=center]
End Sub
2.7 命名规范 (可以使用英文字母,数字,_进行命名,中文不推荐)
不能使用关键字来进行命名,开头不能是数字。
2.8 条件语句 (IF,select case ,for,do while,do until)
[Visual Basic] 纯文本查看 复制代码 ############# IF ################[align=center]
Sub IfTest()[/align][align=center]
Dim Score As Integer[/align][align=center]
Score = 61[/align][align=center]
' if 条件判断,then 执行满足条件后的操作[/align][align=center]
If Score >= 80 Then[/align][align=center]
MsgBox "分数大于80"[/align][align=center]
ElseIf Score >= 60 Then[/align][align=center]
MsgBox "分数大于60分"[/align][align=center]
Else[/align][align=center]
MsgBox "分数小于60"[/align][align=center]
End If[/align][align=center]
End Sub[/align]
[align=center]
######## select case #####[/align][align=center]
Sub SelectTest()[/align][align=center]
Dim Score As Integer[/align][align=center]
Score = 88[/align]
[align=center]
Select Case Score[/align][align=center]
' Case 代表多个场景,使用 Case is 来进行判断,类似if[/align][align=center]
Case Is >= 90[/align][align=center]
MsgBox "优秀"[/align][align=center]
Case Is >= 80[/align][align=center]
MsgBox "优良"[/align][align=center]
Case Is >= 70[/align][align=center]
MsgBox "良好"[/align][align=center]
Case Is >= 60[/align][align=center]
MsgBox "及格"[/align][align=center]
' 条件都不满足,使用Case Else[/align][align=center]
Case Else[/align][align=center]
MsgBox "不及格"[/align][align=center]
End Select[/align]
[align=center]
End Sub[/align]
[align=center]
##### for ###############[/align][align=center]
Sub ForNextTest()[/align][align=center]
Dim Score As Integer, total As Long[/align][align=center]
' 先赋值[/align][align=center]
total = 0[/align][align=center]
'连续输出10次,to 代表停止条件[/align][align=center]
For num = 1 To 1000[/align][align=center]
' 1到1000相加[/align][align=center]
total = total + num[/align][align=center]
If num = 5 Then[/align][align=center]
MsgBox "循环次数:" & num[/align][align=center]
ElseIf num = 500 Then[/align][align=center]
MsgBox "退出for循环"[/align][align=center]
' 退出for循环[/align][align=center]
Exit For[/align][align=center]
End If[/align][align=center]
' 每次执行加1[/align][align=center]
Next num[/align][align=center]
MsgBox "1到500相加的结果:" & total[/align][align=center]
End Sub[/align]
[align=center]
### 中途退出for循环 (exit for) ####[/align][align=center]
Sub forTest2()[/align][align=center]
Dim Score As Integer, total As Long[/align][align=center]
Score = 0[/align][align=center]
' 这里多了个Step 可以理解为每次都加+2(默认为1)[/align][align=center]
For num = 1 To 100 Step 2[/align][align=center]
total = total + num[/align][align=center]
Next num[/align][align=center]
MsgBox total[/align][align=center]
End Sub [/align]
[align=center]
####### Do While ########[/align][align=center]
Sub DoWhileTest()[/align][align=center]
Dim num As Integer, total As Long[/align][align=center]
num = 0[/align][align=center]
total = 0[/align][align=center]
' 这里表示 num 还未满足条件时则运行下面的代码[/align][align=center]
Do While num < 10[/align][align=center]
'MsgBox "num执行的次数" & num[/align][align=center]
num = num + 1[/align][align=center]
total = total + num[/align][align=center]
Loop[/align][align=center]
MsgBox total[/align][align=center]
End Sub[/align]
[align=center]
#### Do Until ###########################[/align]
[align=center]
Sub DoUntilTest()[/align][align=center]
Dim num As Integer, total As Long[/align][align=center]
num = 0[/align][align=center]
total = 0[/align][align=center]
' 这里表示 这里表示 当num 满足条件时停止运行[/align][align=center]
Do Until num >= 10[/align][align=center]
'MsgBox "num执行的次数" & num[/align][align=center]
num = num + 1[/align][align=center]
total = total + num[/align][align=center]
Loop[/align][align=center]
MsgBox total[/align][align=center]
End Sub
上面的代码有点多,建议一块快去敲会更好理解哦
2.9 有参数的子程序
[Visual Basic] 纯文本查看 复制代码 ' 参数要什么数据类型[align=center]
Sub 有参测试(ToNum As Integer, ToNum2 As Integer)[/align][align=center]
Dim num As Integer, total As Long[/align][align=center]
For num = 1 To ToNum Step ToNum2[/align][align=center]
total = total + num[/align][align=center]
Next num[/align][align=center]
MsgBox total[/align][align=center]
End Sub[/align]
[align=center]
Sub Test()[/align][align=center]
' 用无参来调用有参程序[/align][align=center]
有参测试 500, 2[/align][align=center]
'有参测试 (200)[/align][align=center]
'有参测试 (100)[/align][align=center]
End Sub
3.0 自定义函数 (函数有返回值,程序没有)
[Visual Basic] 纯文本查看 复制代码 '函数 用 function 来修饰,且有返回值[align=center]
Function cubSum(x As Double, y As Double)[/align][align=center]
cubSum = x * x * y * y * y[/align][align=center]
End Function[/align]
[align=center]
Sub FunctionTest()[/align][align=center]
Dim v As Double[/align][align=center]
'cubSum 函数返回结果也是浮点型[/align][align=center]
v = cubSum(1.2, 2.5)[/align][align=center]
MsgBox v[/align][align=center]
'MsgBox cubSum(1.2, 2.5) 可以这样调用[/align][align=left]
End Sub
这次的基础知识更新到这,!!!
各位加油
|