XMQ 发表于 2022-9-3 10:51

宏学习笔记二

本帖最后由 XMQ 于 2022-9-3 11:02 编辑


2.编写宏代码(alt+f11)打开vb编辑窗口
(注释在前面加上英文的单引号)
2.1 认识vba代码基本架构,一般都会以 end xxx结尾


上面是宏代码的基本架构
2.2 例子1:按f5选择要运行的宏点击运行即可,注意空格
Sub 第一个程序()
    'MsgBox 弹出弹窗并显示信息
    MsgBox "这是我的第一个程序"
    '获取A1单元格的内容& 为连接符
    MsgBox "输出A1单元格内容:" & Range("A1").Value
End Sub
运行后的示例图:


语法提示(语法提示,在你打出一些vba内置的方法或者属性时会有一些参数提示,可以参考这个)


2.3 变量 (格式:Dim变量名 As数据类型    )

各种变量的例子
'Sub 变量()
'声明定义一个int变量,变量名为Score,在声明变量时可以不声明了、数据类型,但是不推荐
Dim Score As Integer
Dim R As Range, L As Long, S As String, Birthday As Date
' 把 100 赋值给 Score
Score = 180
L = 2.01
S = "大帅哥的身高:"
endRow = Range("D" & Rows.Count).End(xlUp).Row
' 日期类型数据前后要加上 #,注意格式

Birthday = #8/30/2022#
' 弹出 Score 的值
MsgBox S & Score & " " & L & "生日是: " & Birthday
End Sub
运行后的 示例图
]

2.4变量的作用域(全局和函数变量,全局变量所有函数都可用,函数变量只能在指定的函数里调用)


2.5Static关键字
Sub StaticTest()
' Static 静态变量 可以记住每次的变量

Static Count As Integer
' 实现 Count 的累加

Count = Count + 1

MsgBox "点击了:" & Count

End Sub
之后的程序运行的结果图就不贴了,大家多敲代码理解理解哈!!!!

2.6常量 (与变量的区别是常量声明时必须赋值)
'Sub 常量测试()
' 变量
Dim Score As Integer
' 常量(初始化要赋值),且不能进行修改
Const Pi As Double = 0
Dim Price As Long
Price = 200
MsgBox "价格:" & Price & "PI" & " " & Pi
End Sub

2.7 命名规范 (可以使用英文字母,数字,_进行命名,中文不推荐)
不能使用关键字来进行命名,开头不能是数字。
2.8条件语句 (IF,select case ,for,do while,do until)
#############IF################
Sub IfTest()
    Dim Score As Integer
    Score = 61
    ' if 条件判断,then 执行满足条件后的操作
    If Score >= 80 Then
      MsgBox "分数大于80"
    ElseIf Score >= 60 Then
      MsgBox "分数大于60分"
    Else
      MsgBox "分数小于60"
    End If
End Sub

########select case#####
Sub SelectTest()
    Dim Score As Integer
    Score = 88
   
    Select Case Score
    ' Case 代表多个场景,使用 Case is 来进行判断,类似if
      Case Is >= 90
            MsgBox "优秀"
          Case Is >= 80
            MsgBox "优良"
          Case Is >= 70
            MsgBox "良好"
          Case Is >= 60
            MsgBox "及格"
      ' 条件都不满足,使用Case Else
      Case Else
            MsgBox "不及格"
    End Select
   
End Sub

#####for###############
Sub ForNextTest()
    Dim Score As Integer, total As Long
    ' 先赋值
    total = 0
    '连续输出10次,to 代表停止条件
    For num = 1 To 1000
         ' 1到1000相加
      total = total + num
      If num = 5 Then
            MsgBox "循环次数:" & num
      ElseIf num = 500 Then
            MsgBox "退出for循环"
            ' 退出for循环
            Exit For
      End If
      ' 每次执行加1
      Next num
    MsgBox "1到500相加的结果:" & total
End Sub

### 中途退出for循环 (exit for) ####
Sub forTest2()
    Dim Score As Integer, total As Long
    Score = 0
    ' 这里多了个Step 可以理解为每次都加+2(默认为1)
    For num = 1 To 100 Step 2
      total = total + num
      Next num
    MsgBox total
End Sub

####### Do While########
Sub DoWhileTest()
    Dim num As Integer, total As Long
    num = 0
    total = 0
    ' 这里表示 num 还未满足条件时则运行下面的代码
    Do While num < 10
      'MsgBox "num执行的次数" & num
      num = num + 1
      total = total + num
    Loop
    MsgBox total
End Sub

####Do Until###########################


Sub DoUntilTest()
    Dim num As Integer, total As Long
    num = 0
    total = 0
    ' 这里表示 这里表示 当num 满足条件时停止运行
    Do Until num >= 10
      'MsgBox "num执行的次数" & num
      num = num + 1
      total = total + num
    Loop
    MsgBox total
End Sub
上面的代码有点多,建议一块快去敲会更好理解哦

2.9 有参数的子程序
' 参数要什么数据类型
Sub 有参测试(ToNum As Integer, ToNum2 As Integer)
    Dim num As Integer, total As Long
    For num = 1 To ToNum Step ToNum2
      total = total + num
      Next num
    MsgBox total
End Sub


Sub Test()
' 用无参来调用有参程序
    有参测试 500, 2
    '有参测试 (200)
    '有参测试 (100)
End Sub

3.0 自定义函数 (函数有返回值,程序没有)
'函数 用 function 来修饰,且有返回值
Function cubSum(x As Double, y As Double)
    cubSum = x * x * y * y * y
End Function

Sub FunctionTest()
    Dim v As Double
    'cubSum 函数返回结果也是浮点型
    v = cubSum(1.2, 2.5)
    MsgBox v
    'MsgBox cubSum(1.2, 2.5) 可以这样调用
End Sub

这次的基础知识更新到这,!!!
各位加油{:301_997:}

xiadongming 发表于 2022-9-3 11:04

lszc87 发表于 2022-9-3 11:07

加油,一起学习

jstar 发表于 2022-9-3 11:32

你好,想请教一下,VB中的static是用来干啥的呀。

urdarling 发表于 2022-9-3 12:08

这个比java简单多了 哈啊哈

qq5649 发表于 2022-9-3 12:48

大佬宏 是什么

约定的童话 发表于 2022-9-3 13:29

宏是一种自动化脚本语言的表称,Excel,按键精灵,CAD。。。。都有宏功能,学会使用会方便很多解放双手!

xpsp1 发表于 2022-9-4 10:16

非常不错,同步学习
页: [1]
查看完整版本: 宏学习笔记二