3、程序设计的基础知识

3-1、程序的作成

  1. VBE环境中程序的作成
    VBE环境中程序的作成

3-2、变量

  1. 声明变量
' 变量声明:Dim 变量名A
' 变量赋值:变量名A = 1

Sub test()
    Dim a1
    a1 = Range("B1").Value
    Range("B2").Value = a1 + 1
End Sub
  1. 强制变量声明
' 强制变量声明语句

Option Explicit
Sub test()
    Dim a1
    a1 = Range("B1").Value
    Range("B2").Value = a1 + 1
End Sub
  1. 变量名命名规则
  2. 变量名类型指定
' 变量声明并指定类型:Dim 变量名 As 数据类型

Sub test()
    Dim a1 As Integer
    a1 = Range("B1").Value
    Range("B2").Value = a1 + 1
End Sub
  1. 经常使用的变量名类型
  2. 部分变量名类型的使用
''' 字符串类型,整数类型

Sub test()
    Dim intAge As Integer, strName As String
    intAge = 30
    strName = "ccblogd"
    MsgBox "Name:" & strName & ", Age:" & intAge
End Sub
''' 日付类型
' 程序能够识别的日付值设定
' myDate = #10/23/2019#
' myDate = #10/23/2019#
' myDate = #1:15:30 PM#

Sub test()
    Dim myDate As Date, myTime As Date
    myDate = "20190623日"
    myTime = #2:14:14 PM#
    MsgBox "Date:" & myDate & ", Time:" & myTime
End Sub
''' Variant

Sub test()
    Dim varCc As Variant
    varCc = "ccblogs"
    MsgBox TypeName(varCc)
    varCc = 123
    MsgBox TypeName(varCc)
End Sub
''' 对象类型的使用
' 固有对象
' Dim 变量名 As Worksheet
' Dim 变量名 As Range
' 通用对象
' Dim 变量名 As Object
' 对象变量赋值
' Set 变量名 =Sub test()
    Dim mySheet As Worksheet
    Set mySheet = Worksheet(1)
    mySheet.Name = "ccblogs"
    Set mySheet = Nothing
End Sub
  1. 变量作用域

3-3、常量

  1. 常量声明
' 声明与赋值
' nst 常量名 As 数据类型 =
  1. 内置常量
    对象浏览器:
    对象浏览器
    对象浏览器构造:
    对象浏览器构造

3-4、数组

  1. 数组的声明与赋值
' 声明
' Dim 数组名(索引最大值) As 数据类型
' 赋值
' 数组名(索引) =Sub test()
    Dim strs(2) As String
    strs(0) = "a"
    strs(1) = "b"
    strs(2) = "c"
End Sub

  1. 数组索引开始值设定
' Option Base 索引开始值
Option Base 1

Sub test()
    Dim strs(3) As String
    strs(1) = "a"
    strs(2) = "b"
    strs(3) = "c"
End Sub
  1. 数组的索引开始值和终了值设定
Sub test()
    Dim strs(2 To 4) As String
    strs(2) = "a"
    strs(3) = "b"
    strs(4) = "c"
End Sub
  1. 使用Array函数给数组赋值
' Dim 变量名 As Variant
' 变量名 = Array(1, 值2, 值3,……)

Sub test()
    Dim strs As Variant
    strs = Array("a", "b", "c")
End Sub
  1. 动态数组
' 语法(不保留原值)
' Dim 变量名 As 数据类型
' ReDim 变量名(数组索引终了值)

Sub test()
    Dim strs() As String
    ReDim strs(3)
    For i = 0 To 3
        strs(i) = i + 1
    Next
End Sub
  1. 数组索引开始值与终了值的取得
' 数组索引开始值取得
' LBound(数组变量名)
' 数组索引终了值取得
' UBound(数组变量名)

Sub test()
    Dim strs(2 To 4) As String
    MsgBox UBound(strs) - LBound(strs)
End Sub
  1. 数组保留原数值扩容
Sub test()
    Dim strs() As String
    ReDim strs(1)
    strs(0) = "a"
    strs(1) = "b"
    ReDim Preserve strs(3)
    strs(2) = "c"
    strs(3) = "d"
    MsgBox strs(0) & strs(1) & strs(2) & strs(3)
End Sub
  1. 二维数组的声明
' 声明
' Dim 变量名(行数, 列数) As 数据类型
' 赋值
' 变量名(行索引, 列索引) =Sub test()
    Dim strs(2, 1) As String
    strs(0, 0) = "a"
    strs(0, 1) = "b"
    strs(1, 0) = "c"
    strs(1, 1) = "d"
    strs(2, 0) = "e"
    strs(2, 1) = "f"
End Sub
  1. 数组初期化
' Erase 数组名

3-5、运算符

  1. 算术运算符
运算符 使用例 结果
+ 5 + 2 7
- 5 - 2 3
* 5 * 2 10
/ 5 / 2 2.5
^ 5 ^ 2 25
\ 5 \ 2 2
Mod 5 Mod 2 1
  1. 比较运算符
运算符 使用例 结果
< 5 < 2 False
<= 5 <= 2 False
> 5 > 2 True
>= 5 >= 2 True
= 5 = 2 False
<> 5 <> 2 True
Like “紫水晶” Like “*水晶” True
Is Worksheets(“Sheet1”) Is Worksheets(2) False
  1. 通配符
通配符 含义 使用例
* 0文字以上的任意文字列 E” -> 包含E的文字列
? 任何一个文字 “E???” -> E开头的五个文字列
# 任何一个数字 “#E” -> 数字+E
[ ] []内指定的任何一个文字 [VBA] -> VBA中任何一个文字
[ ! ] []内指定以外的任何一个文字 [!VBA] -> VBA以外任何一个文字
[ - ] []内指定范围的文字 [A-E] -> A-E中任何一个文字
  1. 字符串连接运算符
运算符 使用例 结果
& “Excel” & “VBA” ExcelVBA
+ “Excel” + “VBA” ExcelVBA
  1. 逻辑运算符
运算符 使用例 结果
And True And True True
Or True Or False True
Not Not True False
Eqv(等价) True Eqv False False
Eqv(等价) False Eqv False True
Imp(蕴含) False Imp True True
Xor(排他) True Xor False True

3-6、函数

  1. VBA函数与Worksheet函数的区别
  2. VBA中使用Worksheet函数
' Application.WorksheetFunction.Worksheet函数名(参数)
Sub test()
    Dim myMin As Long, myMax As Long
    myMin = Application.WorksheetFunction.Min(Range("B3:E6"))
    myMax = Application.WorksheetFunction.Max(Range("B3:E6"))
End Sub
  1. 通过[]和Evaluate使用Worksheet函数的方法

3-7、控制结构

  1. 条件
''' 1
' If 条件式 Then 处理

' If 条件式 Then
'     处理
' End If

''' 2
' If 条件式 Then 处理1 Else 处理2

' If 条件式 Then
'     处理1
' Else
'     处理2
' End If

''' 3
' If 条件式1 Then
'     处理1
' ElseIf 条件式2
'     处理2
' ElseIf 条件式3
'     处理3
' Else
'     处理4
' End If

''' 4
' Select Case 条件判断对象
' Case 条件式1
'      处理1
' Case 条件式2
'      处理2
' Case Else
'      处理3
' End Select

Sub test()
    Dim myMin As Long
    myMin = Application.WorksheetFunction.Min(Range("B3:E6"))

    Select Case myMin
    Case 1
        MsgBox 1
    Case Is > 1
        MsgBox 2
    End Select

End Sub
  1. 循环
''' 1
' Do While 条件式
'     处理
' Loop

''' 2
' Do Until 条件式
'     处理
' Loop

''' 3
' Do
'     处理
' Loop While 条件式

''' 4
' Do
'     处理
' Loop Until 条件式

''' 5
Sub test()
    Dim i As Integer
    For i = 0 To 5 Step 1
        MsgBox i
    Next
End Sub

''' 6
Sub test()
    Dim myRange As Range
    For Each myRange In Range("C5:E14")
    Next
End Sub

  1. 跳出控制结构
Exit Do
Exit For
Exit Sub
Exit Function
  1. 对象名省略
Sub test()
    With Range("A1:C1")
        .Font.Bold = True
        .Font.Size = 18
        .Merge
    End With
End Sub

3-8、消息显示

  1. MsgBox函数
    • 函数参数含义
    • 参数常数
    • 按钮返回值
  2. InputBox函数
    • 函数参数含义

3-9、异常处理

  1. 编译错误
  2. 执行错误
  3. 逻辑错误
  4. On Error GoTo
' Sub test()
'     On Error GoTo Err1
'         处理
'         Exit Sub
' Err1:
'     Err处理
' End Sub
  1. On Error Resume Next
Sub test()
    On Error Resume Next
    ActiveSheet.Next.Activate
    MsgBox activatesheet.Name
End Sub
  1. On Error GoTo 0
    错误处理无效,处理中断,显示错误。
  2. Resume与Resume Next
种类 解释
Resume 从发生错误的行开始再执行
Resume Next 从发生错误的下一行开始再执行
Resume 行番号 发生错误后,跳到指定行开始再执行
  1. 错误Code和错误内容

3-10、调试

  1. 调试方法
  2. 命令执行窗口
发布了13 篇原创文章 · 获赞 2 · 访问量 819

猜你喜欢

转载自blog.csdn.net/ccblogs/article/details/93377889
今日推荐