【宏开发】VBA语言

宏笔记

​ ——VBA语言
若对该知识点有更多想了解的,欢迎私信博主~~

VBA
一:介绍

​ Visual Basic for Applications(VBA)是一种针对Microsoft Office应用程序的编程语言。它允许用户通过编写代码来自动化和自定义Office应用程序,如Excel、Word、PowerPoint等。VBA使用户能够创建自定义的宏和脚本,以执行重复性任务、处理数据、生成报告,或者与应用程序进行交互,从而提高工作效率。

二:特点和用途
  1. 自动化任务

    可以自动执行重复任务,如生成报表

  2. 用户界面

    可以自定义用户的操作界面,方便交互

  3. 数据处理

    允许在Excel里处理和分析大量数据

  4. 自定义函数

    允许自定义函数

  5. 事件处理

    可以捕获Office应用程序中的各种事件,如打开,保存

  6. 错误处理

    支持处理运行时的错误

  7. 访问其他应用程序

    可以与其他Windows应用程序交互

三:语法
  1. 变量

    1. 声明: Dim [变量名称 As 类型]

      ​ 类型:

      1. 基本数据类型

        Integer(整数值)、Long(长整数值)、Single(单精度浮点数)、Double(双精度浮点数)、String(字符串)、Boolean(布尔值)、Date(日期和时间)、Variant(任意数据类型)

      2. 对象引用

        Workbook(工作簿)、Worksheet(工作表)、Range(单元格范围)、CharObject(图表对象)、Shape(形状对象)、

        FileSystemObject(操作系统的文件和文件夹)、ADODB.Connection(数据库连接)、Outlook.Application(Outlook应用程序)、

        Word.Document(Word文档)等

        Dim row As Long, count As Long '声明基本数据类型
        Dim wb As Workbook '声明对象引用
        Dim values As Object '声明对象引用Object
        
    2. 赋值:

      1. 基本数据类型

        变量名称 = 变量值

      2. 对象引用

        Set 变量名称 = 对象引用

        row = wb.Sheet("表1").Cells(1, "A").End(xlUp).Row '赋值基本数据类型
        Set wb = Workbooks.Open("C:\Users\win10\Desktop\工作簿1.xlsx") '赋值对象引用wb一个工作簿
        Set values = CreateObject("Scripting.Dictionary") '赋值对象引用values一个字典
        
        注:对象引用要释放 Set wb = Nothing
  2. 运算符
    1. 算术运算符

      +(加)、-(减)、*(乘)、/(除)、\(取整)、^(指数)

    2. 逻辑运算符

      And(逻辑与)、Or(逻辑或)、Not(逻辑非)、Xor(逻辑异或)

    3. 比较运算符

      =(等于)、<>|!=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)

    4. 字符串运算符

      &(连接两个字符串)

    5. 赋值运算符

      =(将右边的值赋给左边的变量)

    6. 其他运算符

      Is(比较对象引用)、Like(模式匹配)

  3. 判断
    1. if-else

      Dim value As Long
      value = 2
      
      If value < 0 Then
      	MsgBox "value < 0"
      ElseIf value = 0 Then
      	MsgBox "value = 0"
      Else
      	MsgBox "value > 0"
      End If
      
    2. select-case

      Dim value As Long
      value = 2
      
      Select Case value
      	Case 1
      		MsgBox "value = 1"
      	Case 2 
      		MsgBox "value = 2"
      	Case 3
      		MsgBox "value = 3"
      End Select
      
  4. 循环
    1. For

      Dim i As Long
      
      For i = 1 To 4
      	If i >= 0 Then
      		Exit For '跳出当前循环
      	End If
      	i = i + 1
      Next i '可以修改i来控制循环节奏
      
    2. For Each

      Dim cell As Range
      
      For Each cell In ws.Range("A2:A10")
      	MsgBox cell.value
      	Set cell = ws.Cells(cell.Row + 1, "A")
      Next cell '可以修改cell来控制循环节奏
      
  5. 函数和过程
    Public Function Add(a As Double, b As Double) As Double
        Add = a + b
    End Function
    
    Sub TestAdd()
        Dim result As Double
        result = Add(5, 3) ' 结果为 8
    End Sub
    

    区别:

    1. Sub没有返回值,Function可以有返回值,也可以没有(此时等同于过程)

    注意事项:

    1. Sub和Function不能互相嵌套
    2. 模块从上到下解析,调用前要确保已存在,或者分开存放
  6. 类只能在类模板里定义,Public为所有项目可访问,Friend为当前项目可访问

    Public Class Person
    	'有Public、Private、Friend
        Public Name As String
        Public Age As Integer
        
        Public Sub Introduce()
            MsgBox "My name is " & Name & " and I am " & Age & " years old."
        End Sub
    End Class
    
    ' 在标准模块中使用Person类
    Sub TestPersonClass()
        Dim myPerson As New Person
        myPerson.Name = "John"
        myPerson.Age = 30
        myPerson.Introduce
    End Sub
    
  7. 系统函数
    1. 数字

      Abs(绝对值)、Sqr(平方根)

    2. 字符串

      Len(长度)、Left(左侧字符)、Right(右侧字符)、Replace(替换)、Trim(去除空格)、UCase(全大写)、Lcase(全小写)

    3. 日期和时间

      Date(日期)、Time(时间)、Now(当前日期和时间)、DateAdd(增加时间)、DateDiff(间隔)

    4. 类型转换

      CInt(转换成整数)、CDbl(转换成浮点数)、CStr(转换成字符串)、CDate(转换成日期)

  8. 数组

    Dim myArray(3) As Integer ' 声明一个包含 3 个整数的数组(索引从 0 到 2)
    myArray(0) = 10
    myArray(1) = 20
    myArray(2) = 30
    
    Dim myArray As Variant
    myArray = Array(10, 20, 30)
    
    Dim value As Integer
    value = myArray(1) ' 获取数组中索引为 1 的元素(值为 20)
    
    Dim matrix(3, 2) As Integer ' 一个 4x3 的二维数组
    matrix(0, 0) = 1
    matrix(1, 1) = 5
    
  9. 列表

    Dim myCollection As Collection
    Set myCollection = New Collection
    myCollection.Add "Item 1"
    myCollection.Add "Item 2"
    MsgBox myCollection.Item(1) '显示 "Item 1"
    
  10. 字典

    Dim myDictionary As Object
    Set myDictionary = CreateObject("Scripting.Dictionary")
    myDictionary.Add "Key1", "Value1"
    myDictionary.Add "Key2", "Value2"
    MsgBox myDictionary("Key1") ' 显示 "Value1"
    
  11. 系统对象

    1. Application

      1. 警告对话框展示

        Application.DisplayAlerts = True | False '开启|关闭 对话框展示
        
    2. Debug

      1. 打印日志

        Debug.Print "Hello World"
        
    3. Error

      1. 属性

        1. Number 错误代码
        2. Description 错误描述
      2. 函数

        1. Clear 清除错误状态
      On Error Resume Next ' 忽略错误
      
      Dim result As Double
      result = 1 / 0 ' 这会导致除以零的运行时错误
      
      If Err.Number <> 0 Then
         MsgBox "Error: " & Err.Description
         Err.Clear ' 清除错误状态
      End If
      
      On Error GoTo 0 ' 恢复默认错误处理行为
      
  12. Excel
    1. 对象

      1. 工作簿 Workbooks.Open()

        Dim wb As Workbook
        Set wb = Workbooks.Open("C:\Users\win10\Desktop\工作簿1.xlsx")
        
        注:当前工作簿 Set wb = ThisWorkbook
      2. 工作表 工作簿.Sheets()

        Dim ws As WorkSheet
        Set ws = wb.Sheets("表1")
        
      3. 行 工作表.Rows()

        Dim firstRowRange As Range
        
        ' 直接获取行
        Set firstRowRange = ws.Rows(1)
        
        ' 根据单元格获取行
        Set firstRowRange = firstCell.EntireRow
        
      4. 行号 行.Row

        Dim firstRowNumber As Long
        
        ' 获取行的行号
        firstRowNumber = firstRowRange.Row
        
        ' 获取单元格所在行行号
        firstRowNumber = firstCell.Row
        
      5. 列 工作表.Columns()

        Dim firstColumnRange As Range
        
        ' 直接获取列
        Set firstColumnRange = ws.Columns("A")
        
        ' 根据单元格获取列
        Set firstColumnRange = firstCell.EntireColumn
        
      6. 列号

        Dim firstColumnNumber As Long
        
        ' 获取列的列号
        firstColumnNumber = firstRowRange.Column
        
        ' 获取单元格所在列列号
        firstColumnNumber = firstCell.Column
        
      7. 单元格 工作表.Cells()

        Dim firstCell As Range
        Set firstCell = ws.Cells(1, "A")
        
      8. 范围 工作表.Range()

        Dim searchRange As Range
        Set searchRange = ws.Range("A1:C3")
        
    2. 属性

      1. Workbook
        1. name 工作簿的名称
        2. FullName 工作簿的完整路径和文件名
      2. WorkSheet
        1. name 工作表的名称
      3. Range
        1. value 值
        2. HorizontalAlignment 水平对齐方式 有xlLeft、xlCenter、xlRight
        3. VerticalAlignment 垂直对齐方式 有xlTop、xlCenter、xlBottom
        4. ColumnWidth 宽度
        5. RowHeight 高度
        6. NumberFormat 数值格式
    3. 函数

      1. .End():找到最后一个非空单元格

        1. .End(xlUp) 向上搜索

        2. .End(xlDown) 向下搜索

        3. .End(xlToLeft) 向左搜索

        4. .End(xlToRight) 向右搜索

          firstRowNumber = ws.Cells(1, "A").End(xlDown).Row '查找最后一行行号
          
      2. .Find():查找特定的值或条件

        1. .Find() 查找第一个匹配项

        2. .FindLast() 查找最后一个匹配项

        3. .FindNext() 在Find()的基础上查找下一个

        4. .FindPrevious() 在Find()的基础上查找上一个

          Dim searchString As String
          searchString = "Apple" '要查找的值
          
          Dim searchRange As Range
          Set searchRange = ws.Range("A1:A10") '查找范围
          
          Dim firstCell As Range
          Set firstCell = searchRange.Find(What:=searchString)
          
          Dim lastCell As Range
          Set lastCell = searchRange.FindLast(What:=searchString)
          
          Dim nextCell As Range
          Set nextCell = searchRange.FindNext(firstCell)
          
          Dim previousCell As Range
          Set previousCell = searchRange.FindPrevious(firstCell)
          
      3. .Offset():范围偏移、.Resize():范围调整

        1. .Offset() 范围偏移

        2. .Resize() 范围调整

          Dim searchRange As Range
          Set searchRange = ws.Range("A1:C3")
          
          Dim newRange As Range
          Set newRange = searchRange.Offset(2,1) '向下偏移2行,向右偏移1列
          
          Dim resizedRange As Range
          Set resizedRange = newRange.Resize(5, 3) ' 调整为5行3列的范围
          
          注:Offset()等于范围不变更改起始单元格坐标,Resize()等于起始单元格坐标不变更改范围
    4. 过程

      1. 清除内容 范围.Clear

        searchRange.Clear '全部清除
        searchRange.ClearContents '清除内容
        searchRange.ClearFormulas '清除公式
        searchRange.ClearFormats '清除格式
        
        注:Range类型都行
      2. 删除 对象.Delete

        wb.Delete '删除工作簿
        ws.Delete '删除工作表
        firstRowRange.Delete '删除行
        firstColumnRange '删除列
        
        注:单元格不能用Delete,只能用Clear
      3. 排序 行|列.Sort

        ws.Range("A2:H10").Sort key1:=ws.Range("A2"),Order1:=xlAscending,Key2:=ws.Range("B2"),Order2:=xlDescending,Header:=xlNo
        
        注:
        1.会先根据主关键字排序,再根据次关键字排序,以此类推
        2.xlAscending为升序,xlDescending为降序
        3.xlNo排序时会忽略首行,xlYes排序时会包括首行,xlGuess排序时Excel会自动判断
        4.只会排序选中范围之内,之外不会跟着排序,会导致数据不匹配
      4. 自适应宽度 行|列.AutoFit

        ws.Columns("A:A").AutoFit
        
      5. 关闭工作簿

        'SaveChanges用于指定是否保存对工作簿的更改,Filename用于指定保存的名字,不填则用当前
        wb.Close SaveChanges:=False,Filename:="NewFileName.xlsx"
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPS是一款优秀的办公软件,它支持使用VBA语言进行自动化操作。安装VBA语言需要按照以下步骤进行: 1.首先在计算机上安装WPS Office软件,确保已经安装完整。 2.打开WPS软件,进入“文件”菜单,选择“选项”,然后在弹出的“选项”窗口中选择“高级”。 3.在“高级”中选择“开发者”,然后勾选“启用VBA功能”,点击“确定”按钮进行保存。 4.现在已经可以使用VBA语言了,如需要更多功能则需要在自己的电脑上安装编程工具,如Visual Basic for Applications(VBA)。 5.在WPS中编写VBA语言需要使用WPS自己的开发工具,可以在“开发者”中选择“编辑器”进行打开。 6.在“编辑器”中可以编写自己的VBA语言程序,可以通过自动化脚本来实现自己所需的功能。 总之,安装VBA语言非常简单,只需要按照上述方法进行操作即可。如果需要更多的功能可以参考WPS相关的帮助文档或者官网上的使用教程,来了解更多的信息。 ### 回答2: 如果你想在wps中使用vba语言,需要先进行一些安装和设置。首先,确保你已经安装了最新版本的wps软件和vba插件。然后,打开wps软件,选择“文件”-“选项”-“高级”,确保“开发工具”选项卡中的“Visual Basic for Applications(VBA)”复选框已经勾选上。 接着,打开“开发工具”-“Visual Basic”,在弹出的对话框中选择“插入”-“模块”,输入你想要执行的vba代码。保存并关闭代码模块,并返回到wps软件。现在,在wps中运行你的vba,只需要按下“开发工具”-“”-“运行”即可。 需要注意的是,vba语言在wps软件中的支持程度较低,相较于Microsoft Office软件,功能有限。因此,在使用vba的时候需要多进行测试和调试,以确保其正常使用。 ### 回答3: WPS Office是一款全能办公软件。它包含了文字编辑、表格计算和幻灯片制作等功能,但如果需要用到VBA语言,可能需要额外安装。 首先,在安装WPS Office时需要勾选VBA组件。如果未勾选安装,可以通过以下步骤手动安装: 1. 打开WPS Office软件; 2. 点击“工具”菜单,选择“选项”; 3. 在选项界面中,选择“高级”,然后勾选“启用VBA语言支持”; 4. 点击“确定”按钮后,程序会提示安装相关组件; 5. 点击“确定”后安装完成,需要重启WPS Office才能使用VBA语言。 安装完后,就可以在WPS Office中使用VBA语言,进行自动化操作,快速完成一些重复性工作。使用VBA语言可能需要一定的编程基础,可以通过学习相关的编程教程和案例,在实践中逐渐掌握。 总之,安装WPS Office中的VBA语言支持组件,可以使用这款办公软件更加高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值