VBA基础教程

一、VBA基本定义

1.VBA定义:Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
2.宏定义:宏是一段可以运行的 VBA 代码片段。
3.VB的窗口定义:

  • 工具栏:编辑器命令栏,与 Excel 功能区域类似,包含 Excel VBA 开发相关的命令。
  • VBA 工程:显示当前 VBA 工程包含的所有对象。通常,一个工作簿就是一个 VBA 工程,其中包括 Excel对象、工作表对象、模块等。
  • 属性窗口:查看和设置选中对象的属性的窗口。
  • 代码编辑窗口:实际编写代码的位置。编写、修改、保存代码。
  • 立即窗口:代码运行过程中,打印出的内容,在立即窗口中显示,一般用于调试代码。
  1. 注释:注释是对代码的一种解释,不影响代码的运行。VBA 中的注释语句是,以英文单引号 '开头,后接需要解释说明的内容。

二、操作步骤

1.新建工作簿,保存为.xlsm格式。
2.Excel 工作簿中的 VBA 代码通常保存在工作表对象模块中。
3.创建一个宏(子程序代码片段)。其中 Sub Subroutine 的缩写,直译过来是子程序。在 VBA 中表示一个过程,也是代表一个过程的开始。下一行 End Sub 表示过程的结束。

Sub MyCode()
    
End Sub

4.代码运行:按F5

三、with结构代码

使用 With 结构,可以避免重复写同一个对象名,代码如下:

Sub MyCode()

    With Worksheets("Sheet1")
        .Name = "新名称"
        .Tab.ThemeColor = xlThemeColorLight1
        .Visible = xlSheetHidden
    End With
    
End Sub

四、编辑器的便捷使用

  1. 注释的添加和取消:可通过调出编辑窗口批量注释和取消。
  2. 强制换行:插入两个空格_回车
  3. 调试:f8单步运行,在最左边点一下设置断点f9

五、宏的简单使用

  1. 使用相对流录制宏,不固定位置,相对位置操作。
  2. 宏的存储:保存到模块;保存到加载项。
  3. 常见运算符:
  • 不等于:<>
  • like通配符:
  • *任意个字符
  • 一个字符
  • #一个数字
  • [A-W a-w]a-w或A-W中的一个字符
  • [!0-9] 字符不是0-9之间

4.简单定义变量

Dim x As Integer '整数
Dim st As String '文本
Dim rg As Range '对象
Set rg = Range("A1") '对象赋值
Dim arr(1 to 10) As Integer '数组
'Long 长整数, Single 单精度,Double 双精度,Date 时间

5.数值

dim arr() '定义数组,不能单独给每个变量赋值,用区域赋值
dim arr(10) '下标从0开始'
ReDim [Preserve] arr(1 To j) '数组中不能直接定义变量。需要重定义才能加变量,Preserve保留原本有的值,只改大小
dim arr(1 to  20)

arr = Range("A1:D9") '给数组赋值
Range("A11") = arr(7,2) '数组第七行,第二列

'最大值
Range("h3") = Application.WorksheetFunction.Max(arr)
'match是找到值在数组中的位置,参数是要找的值,要找的数组,精确为0
Range("h2") = Range("a" & Application.WorksheetFunction.Match(Range("h3"), arr, 0) + 1)

'数组的上界,下界
MsgBox UBound(arr)
MsgBox LBound(arr)


  1. 字典(自动去除重复项)
'在VBE界面中 工具—引用勾选Microsoft scripting runtime,没有就浏览scrrun.dll-确定
Dim dic As New Dictionary

'推荐使用方法
Dim dic
Set dic = CreateObject("Scripting.Dictionary")


'增加一项
dic.Add Key, Item 
'通过值取得,修改item
Range("A1") = dic(key)
dic(key) = 200

'通过作为key存入字典,去掉重复值,keys取出
For i = LBound(arr) To UBound(arr)
    If arr(i, 2) = Me.ListBox1.Value Then
        dic(arr(i, 3)) = 1
    End If
Next
Me.ListBox2.List = dic.keys

  1. 调用语句
'调用其他程序
Sub test1()
    Call test 'test是一个其他sub子功能程序
End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值