目录

  • Excel VBA 基础部分
    • 一、变量声明语句
    • 二、赋值语句、条件语句、循环语句
    • (一)赋值语句
      • 1. Let语句
      • 2. Set
    • (二)条件语句
      • 1. If...Then...Else语句
      • 2. Select Case语句
      • 3. Choose 函数。从参数列表中选择并返回一个值
      • 4. IIf 函数。根据表达式的值从两个里面选择一个
      • 5. Switch 函数。计算表达式的列表并返回与列表中第一个结果为 True 的表达式关联的 Variant 值或表达式
    • (三)循环语句
      • 1. While...Wend语句
      • 2. Do...Loop语句
      • 3. For Each...Next语句
      • 4. For...Next 语句

Excel VBA 基础部分

一、变量声明语句

'定义变量和分配存储空间
Dim [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ] . . .
部分 说明
withEvents 可选。该关键字指定varname是对象变量,用于响应触发一个ActiveX对象。WithEvents只在类模块有效。使用它你可以定义多个独立的对象,但是不能使用该关键字创建数组,也不能与New关键字一起使用。
varname 必需。变量名称
subscripts 可选。数组变量的维数;最多可达60维。 该subscripts参数使用以下语法: [ lower To ] upper [ , [ lower To ] upper ] . . . 。
如果没有使用explicity语句,数组的最低维数 lower由可选的Base语句控制。如果没有可选的Base语句存在,则最低的数组维数是0.
New 可选。该关键字能显示创建一个对象。如果在定义对象变量时使用New,则创建了该对象的一个实例。 所以,不必使用Set语句来赋值该对象的引用。New不能定义内置的数据类型。
type 可选。变量的数据类型;可以指定的有:Byte, Boolean, Integer, Long, Currency(货币型), Single(单精度), Double(双精度), Decimal (当前不支持), Date, String (可变长度), String length (固定的字符串长度), Object, Variant, 用于自定义类型, or an object type。
备注 如果定义在模块界别,则在该模块上的函数都可用;如果定义在函数内,则只有函数内可用。
在定义对象变量时,如果没有使用New关键字,则在对该变量赋值时必须使用Set关键字。并在赋值前该变量的值是Nothing。
在定义一个数组变量时不带小括号,则该变量是可变数组变量,在函数中可以Redim具体指定数组的维数。

示例

' 定义AnyValue 和 MyValue为 Variant,默认赋值为Empty。
Dim AnyValue, MyValue '显示定义一个整数类型的变量
Dim Number As Integer ' 在一行中定义多个变量。 由于没有指定类型,所以AnotherVar的类型是Variant。
Dim AnotherVar, Choice As Boolean, BirthDate As Date ' DayArray是有51个索引的数组变量,如果可选Base设置为0(默认),则索引从0至50。
Dim DayArray(50) ' Matrix 是二维整数数组。
Dim Matrix(3, 4) As Integer ' MyMatrix 是double类型的三维数组,其维数显示指定。
Dim MyMatrix(1 To 5, 4 To 9, 3 To 5)  As Double ' BirthDay是一个索引从1至10的日期型的数组。
Dim BirthDay(1 To 10)As Date ' MyArray是动态 variants 类型的数组
Dim MyArray()

二、赋值语句、条件语句、循环语句

(一)赋值语句

1. Let语句

'语法
[ Let ] varname = expression

示例

Dim MyStr, MyInt
' 以下变量使用 Let 语句进行赋值
Let MyStr = "Hello World"
Let MyInt = 5'日期型赋值
Dim birthday as Date
Let birthdat = #2021-1-1#'也可以省略 Let
Dim MyStr, MyInt
MyStr = "Hello World"
MyInt = 5

2. Set

'语法
Set objectvar = {[ New ] objectexpression | Nothing }

示例

Dim YourObject, MyObject, MyStr
Set MyObject = YourObject            ' 赋值对象的地址(引用) ' MyObject 和 YourObject 引用同一个对象
YourObject.Text = "Hello World"      ' 初始化属性
MyStr = MyObject.Text                ' 返回 "Hello World". ' 切断联系,MyObject 不再引用 YourObject。
Set MyObject = Nothing               ' 释放对象' 也可以使用对象数组
Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1

(二)条件语句

1. If…Then…Else语句

'语法(单行)
If condition Then [ statements ] [ Else elsestatements ]'或者使用语句块
If condition Then[ statements ]
[ ElseIf condition-n Then[ elseifstatements ]]
[ Else[ elsestatements ]]
End If

示例

'使用单行语法
If A > 10 Then A = A + 1 : B = B + A : C = C + B'使用语句块语法
Dim Number, Digits, MyString
Number = 53                           ' 初始化变量
If Number < 10 Then Digits = 1
ElseIf Number < 100 Then
' 条件计算为True时,下面的语句会执行 Digits = 2
Else Digits = 3
End If ' 使用单行语法形式赋值
If Digits = 1 Then MyString = "One" Else MyString = "More than one"'使用 if TypeOf 构造来判断传递过来的Control是否是一个文本对话框
'TypeOf 不能与除Object以外的Long、Integer等硬数据类型一起使用
Sub ControlProcessor(MyControl As Control) If TypeOf MyControl Is CommandButton Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is CheckBox Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is TextBox Then Debug.Print "You passed in a " & TypeName(MyControl) End If
End Sub

2. Select Case语句

'语法
Select Case testexpression[ Case expressionlist-n [ statements-n ]][ Case Else [ elsestatements ]]
End Select

示例

'可以在每个Case子句中使用多个表达式或范围
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber'备注:Is 比较运算符与Select Case语句中使用的 Is 关键字不同。'也可以指定字符串的范围和多个表达式。下面示例Case会匹配字符串 everything;按照字符顺序匹配落在nuts和soup之间的字符串,及变量TestItem的当前值:
Case "everything", "nuts" To "soup", TestItemDim Number
Number = 8                                 ' 变量初始化
Select Case Number                         ' 计算变量的值
Case 1 To 5                                ' 1至5之间的数字, [1, 5]Debug.Print "Between 1 and 5" ' 以下是只有匹配单个值时
Case 6, 7, 8                               ' 6至8之间(含)Debug.Print "Between 6 and 8"
Case 9 To 10                               ' 9 或者 10Debug.Print "Greater than 8"
Case Else                                  ' 其他值Debug.Print "Not between 1 and 10"
End Select

3. Choose 函数。从参数列表中选择并返回一个值

语法
Choose(index, choice-1, [ choice-2, ..., [ choice-n ]] )

示例

' 根据 ind的值来选择第几个字符串
Function GetChoice(Ind As Integer)GetChoice = Choose(Ind, "Speedy", "United", "Federal")
End Function

4. IIf 函数。根据表达式的值从两个里面选择一个

' 语法
IIf(expr, truepart, falsepart)

示例

Function CheckIt (TestMe As Integer)CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

5. Switch 函数。计算表达式的列表并返回与列表中第一个结果为 True 的表达式关联的 Variant 值或表达式

'语法
Switch(expr-1, value-1, [ expr-2, value-2…, [ expr-n, value-n ]])'出现以下情形,Switch返回 Null 值:'1. 所有表达式的值不是True'2. 第一个表达式为真是对应的值是Null.
'Switch 会计算所有表达式,即使只返回其中一个。

示例

' 此示例使用 Switch 函数返回与某个城市名称匹配的语言名称
Function MatchUp(CityName As String)Matchup = Switch(CityName = "London", "English", CityName _= "Rome", "Italian", CityName = "Paris", "French")
End Function

(三)循环语句

1. While…Wend语句

'语法
While condition [ statements ] Wend

示例

Dim Counter
Counter = 0                          ' 初始化
While Counter < 20                   ' 测试Counter的值Counter = Counter + 1           ' Counter值加 1
Wend                                 ' 当 Counter > 19 时,结束while循环
Debug.Print Counter                  ' 在立即窗口打印20

2. Do…Loop语句

'语法
Do [{ While | Until } condition ][ statements ][ Exit Do ][ statements ]
Loop'或者可以使用以下语法:
Do[ statements ][ Exit Do ][ statements ]
Loop [{ While | Until } condition ]

示例

Public Sub LoopExample()Dim Check As Boolean, Counter As Long, Total As LongCheck = True: Counter = 0: Total = 0                         ' 变量初始化Do                                                           ' 外侧循环Do While Counter < 20                                    ' 内层循环Counter = Counter + 1                                ' Counter的值加 1If Counter Mod 10 = 0 Then                           ' 如果是10的倍数Check = (MsgBox("Keep going?", vbYesNo) = vbYes) ' 停下来等待用于点击是否If Not Check Then Exit Do                        ' 跳出内层循环End IfLoopTotal = Total + Counter                                  ' 内层循环结束后执行Counter = 0Loop Until Check = False                                     ' 立即跳出外层循环MsgBox "Counted to: " & Total
End Sub

3. For Each…Next语句

'语法
For Each element In group[ statements ][ Exit For ][ statements ]
Next [ element ]
部分 说明
element 必需。是一个用于遍历集合或数组元素的变量。对于集合(collentions)来说,元素可以是Variant变量,通用对象(object)变量,或任何特定的对象变量。对于数组来说,元素只能是Vaviant变量。

示例

Dim Found, MyObject, MyCollection
Found = False                              ' 初始化
For Each MyObject In MyCollection          ' 遍历集合中每个元素If MyObject.Text = "Hello" Then        ' 如果对象的属性Text是"Hello".Found = True                       ' 把Found的值设置为 True.Exit For                           ' 退出循环 End If
Next

4. For…Next 语句

'语法
For counter = start To end [ Step step ][ statements ][ Exit For ][ statements ]
Next [ counter ]

示例

dim i%,  j%
For i = 1 To 10 For j = 1 To 10 For k = 1 To 10 ... Next k Next j
Next iDim Words, Chars, MyString
For Words = 10 To 1 Step -1                    ' 设置10次重复For Chars = 0 To 9                        ' 设置10次重复MyString = MyString & Chars            ' 把数组追加到字符串后 Next Chars ' Increment counter MyString = MyString & " "                 ' 追加一个空格
Next Words

Excel VBA 基础部分(变量声明、三大语句)相关推荐

  1. [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Go的编译运行 ...

  2. 变量的三重属性_TypeScript基础入门 - 变量声明(三)

    转载地址TypeScript基础入门 - 变量声明(三)​www.gowhich.com 项目实践仓库 https://github.com/durban89/typescript_demo.gitt ...

  3. Linux shell基础之变量声明和处理

    本篇博客将讲解shell编程语言中最基础的变量声明和处理. 先来说一下set:声明变量 set:查看变量,可以看到有很多是系统提前设置好的变量,比如系统环境变量PATH,ls命令中颜色的变量LS_CO ...

  4. 第一章、Excel VBA基础知识

    01-01.Excel VBA简介 1.VBA是什么,能干什么 VBA可以说是一种编程语言,是VB的分支 VBA的作用,可以将重复的Excel工作简单化 2.VBA具备的基础知识 2.1基础操作,能发 ...

  5. Scale 编程基础 A(变量声明、基本数据类型、运算符、文件读写、分支与循环、数据结构)

    Scala: 变量声明.基本数据类型.运算符.文件读写.分支与循环.数据结构(List/Tuple/Range/Vector/Set/Map)与迭代器 变量声明 val:是不可变的,在声明时就必须被初 ...

  6. 【TS基础】变量声明

    变量声明 let和const是JavaScript里相对较新的变量声明方式. 像我们之前提到过的, let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题.cons ...

  7. 【090】Excel VBA 基础

    Excel Object Model: Application Object (Excel): Stab Me!!! Font Object (Excel): Stab Me!!! Worksheet ...

  8. Excel VBA基础教程

    1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WOR ...

  9. CorelDRAW插件-GMS插件开发-VBA基础语法-变量、运算符、函数-CDR插件(三)

    文章目录 1.变量 1.1.命名要求 1.2.作用域 1.3.变量赋值 1.4.数组 2.运算符 2.1.算术操作符 2.2.比较运算符 2.3.逻辑运算符 2.4.连接操作符 3.函数 3.1.无参 ...

最新文章

  1. 计算机专业小三门要求,最新小三门选科要求有啥变化?附对比表
  2. 鸿蒙2.0beta报名,鸿蒙OS 2.0 Beta版系统在哪报名-报名方法介绍
  3. (转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。...
  4. Git学习文档之一 学习文档-发布
  5. ARM处理器基本指令大全
  6. 如何给域里的每台电脑分配一个***远程访问IP地址
  7. 宝付国际一文读懂:跨境电商的外汇风险敞口(三)
  8. PPT文件如何解决不能编辑的问题
  9. CnOpenData中国各行业工商注册企业分年份数量统计(含新增,注销企业数量)
  10. 中国演绎太空生命传奇
  11. caffe(ubuntu14.04)学习笔记1——运行MNIST数据集模型
  12. python(C)作业6 P110 2,4,12
  13. python 病毒脚本_python实现集中式的病毒扫描功能详解
  14. 目标检测论文阅读:FCOS算法笔记
  15. ts 流基础(白话讲解).
  16. 如何成为一名成功的博士生(计算机科学(in NLPML))——Do what will make you happy
  17. 罗斯蒙特流量计选用的误区
  18. 计算机系统精品课,计算机系统-攀枝花学院精品课程网.ppt
  19. u盘数据如何恢复?简单的帮您轻松搞定
  20. 刚刚,网易官宣100W个微信红包封面,速度撸!!

热门文章

  1. 三阶魔方教程(艺飞笔记)
  2. 全覆盖路径规划思想(2)
  3. 电池3S和4S的区别,无人机原本是3S的电池,换成4S确实是可能造成参数不匹配
  4. 【面向对象】第四单元UML总结及面向对象课程学期总结
  5. Codeforces Gym 101194G Pandaria (2016 ACM-ICPC EC-Final G题, 并查集 + 线段树合并)
  6. Instapaper宕机原因及故障恢复过程详解
  7. 5.5G,运营商能接受吗?
  8. iview 实现在theme主题中添加某一个新模块的主题颜色切换
  9. Gitee使用不公开邮箱设置
  10. HttpClient模拟登录、HtmlUnit模拟登录,jsoup爬取登录后的内容(不带验证码)