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 + 27
-5 - 23
*5 * 210
/5 / 22.5
^5 ^ 225
\5 \ 22
Mod5 Mod 21
  1. 比较运算符
运算符使用例结果
<5 < 2False
<=5 <= 2False
>5 > 2True
>=5 >= 2True
=5 = 2False
<>5 <> 2True
Like“紫水晶” Like “*水晶”True
IsWorksheets(“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. 逻辑运算符
运算符使用例结果
AndTrue And TrueTrue
OrTrue Or FalseTrue
NotNot TrueFalse
Eqv(等价)True Eqv FalseFalse
Eqv(等价)False Eqv FalseTrue
Imp(蕴含)False Imp TrueTrue
Xor(排他)True Xor FalseTrue

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. 命令执行窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值