Excel VBA宏的使用

发布于:2025-08-01 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录:

一、什么是VBA

二、VBA编辑器

三、属性与方法

1、属性Property:对象的状态

2、方法Method:对象能做的事

3、属性与方法的区分

4、查找对象的属性与方法

5、常用对象的表示方法

四、VBA语句

1、VBA语句概述

2、判断语句

3、循环语句

十、示例代码

1、隐藏/显示单元格

2、实现智能数据验证

附录

1、学习资源

2、问题总结


一、什么是VBA

VBA(Visual Basic for Applications)是一种面向对象的语言,也就是说,在 VBA 的世界里,几乎所有可以被操作的东西,都是“对象”。你可以把“对象”理解为 Excel 中具体的实体,比如:

  • 一个工作簿(Workbook)
  • 一张工作表(Worksheet)
  • 某个单元格区域(Range)
  • 图表、按钮、形状等控件

每个对象都有自己的属性(它的状态)和方法(它能做的动作)。理解对象、掌握它的属性和方法,就是写好 VBA 宏的第一步。

二、VBA编辑器

文件→选项,即可打开“Excel选项”对话框。

自定义功能区→勾选开发工具」,如下图所示。

在工具栏「开发工具」「Visual Basic」→双击下图第6处的“ThisWorkbook”,即可弹出编程区域。在“ThisWorkbook”内的代码作用于整个工作簿,若选择“Sheet8(MIDI 150A_2000A)”,此时代码将仅作用于Sheet8。

Alt+F11 可快速打开 VBA编辑器,可见其就是一个类 VB 的编程环境,学过 VB语言的很好上手。

三、属性与方法

属性 = 对象的状态,方法 = 对象的动作

1、属性Property:对象的状态

属性用于描述对象的状态或特征,可以看作是对象的“形容词”。比如,字体是否加粗、背景色是什么、单元格的值是多少,都是属性。

Range("A1").Font.Bold = True  '设置字体加粗
Range("A1").Interior.Color = vbYellow  '设置背景色为黄色

属性通常可以被读取(看一下状态),也可以被设置(改变状态),只要它是可读写的。

当你要连续修改同一个对象的多个属性时,建议使用 With 语句,写法更简洁,逻辑也更清晰:

With Range("A1")
    .Font.Bold = True
    .Font.Color = RGB(255, 0, 0)
End With

2、方法Method:对象能做的事

方法代表对象可以执行的操作,类似于对象的“动词”。比如“选择”、“复制”、“保存”这些行为,都是方法。

Range("A1").Select   '选中A1单元格
Range("A1").Copy     '复制A1单元格
ActiveWorkbook.Save  '保存当前工作簿

大多数方法支持传入参数,用来控制行为的细节。这些参数有的必须提供,有的则是可选的。有些方法还支持命名参数语法,让代码更清晰:

Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes

这个例子就是使用 Sort 方法对 A1:A10 区域进行升序排序,并指定首行为标题。

3、属性与方法的区分

下面这张对比表可以帮你理清两者的区别:

比较项 属性/Property 方法/Method
本质 描述对象的状态或特征 执行对象的动作或操作
使用格式 对象.属性名 对象.方法名(参数)
是否有返回值 通常有 不一定全有
是否会改变对象状态 一般不会直接改变 通常会改变
'获取当前工作表名称(属性)
MsgBox ActiveSheet.Name

'删除名为 Sheet2 的工作表(方法)
ThisWorkbook.Sheets("Sheet2").Delete

4、查找对象的属性与方法

1)代码自动提示

在 VBA 编辑器中,输入对象名称后加上 .(点号),就会自动弹出该对象所有可用的属性和方法。你会看到:

  • 灰色小手图标代表属性
  • 绿色小闪电图标代表方法

2)按F1查看帮助文档

选中对象或方法的名称,按下键盘上的 F1,即可跳转到该对象的详细帮助文档。

文档中通常包含:

  • 对象的层级结构(所属对象是谁)
  • 所有可用属性和方法
  • 每个属性/方法的用法、参数说明、代码示例

也可以登录:Office Visual Basic for Applications (VBA) ,搜索相应的对象(比如Range)。

5、常用对象的表示方法

1)工作簿

Workbooks 代表工作集合,所有的工作簿;Workbooks(n),表示已打开的第n个工作簿

Workbooks(“工作簿名称”)

ActiveWorkbook 正在操作的工作簿

ThisWorlBook 代码所在的工作薄

2)工作表

Sheets(“工作表名称”)

Sheet1 表示第一个插入的工作表,Sheet2 表示第二个插入的工作表

Sheets(n) 表示按排列顺序,第n个工作表

Activesheet 表示活动工作表,光标所在工作表

Worksheet 也表示工作表,但不包括图表工作表、宏工作表等。

3)单元格

Cells 所有单元格

Range(“单元格地址”),比如Range(“A1,C8,D0:D10”)

Cells(行数,列数)

Activecell 正在选中或编辑的单元格

Selection 正被选中或选取的单元格或单元格区域

四、VBA语句

1、VBA语句概述

1)宏语句

Sub 按钮1_Click()
    Range("a1") = 10
End Sub

2)函数语句

Function SheetCount()
    SheetCount = Sheets.Count
End Function

3)程序中应用语句

Sub 按钮1_Click()
    Range("a1") = 10
End Sub

Function SheetCount()
    SheetCount = Sheets.Count
End Function

Sub InputNumber()
    Call 按钮1_Click
    
    For x = 1 To 100
        Cells(x, 1) = x
    Next x
End Sub

2、判断语句

Sub 判断2() '多条件判断

  Select Case Range("a1").Value
  Case Is > 0
     Range("b1") = "正数"
  Case Is = 0
     Range("b1") = "0"
  Case Else
     Range("b1") = "负数"
  End Select

End Sub
Sub select区间判断()

 Select Case Range("a2").Value
 Case 0 To 1000
   Range("b2") = 0.01
 Case 1001 To 3000
   Range("b2") = 0.03
 Case Is > 3000
   Range("b2") = 0.05
 End Select

End Sub

3、循环语句

十、示例代码

1、隐藏/显示单元格

本示例用来实现点击按钮隐藏/显示特定单元格区域,如下面的 gif动图所示。

示例文件移步:https://download.csdn.net/download/liht_1634/91526188

1)创建按钮

打开Excel → 顶部菜单栏选择 「开发工具」 选项卡,点击「插入」→ 在「表单控件」中选择「按钮」,在工作表空白处拖动鼠标绘制按钮。

松开鼠标自动弹出「指定宏」窗口,如下图所示。

2)编写VBA宏

在 「指定宏」 窗口点击 「新建」

打开 VBA编辑器,如下图所示。

完整代码:

Sub 按钮1_Click()

    On Error Resume Next  '开始错误处理
    
    Dim btnName As String
    btnName = Application.Caller  '获取触发宏的按钮名称
    
    Dim btn As Button
    Set btn = ActiveSheet.Buttons(btnName)
    
    '改变按钮上的文字
    If btn.Text = "隐藏" Then
        btn.Text = "显示"
    Else
        btn.Text = "隐藏"
    End If
    
    If Rows("3").Hidden Or Rows("6").Hidden Or Rows("8").Hidden Then
        Rows("3").Hidden = False '显示行
        Rows("6").Hidden = False '显示行
        Rows("8").Hidden = False '显示行
    Else
        Rows("3").Hidden = True  '隐藏行
        Rows("6").Hidden = True  '隐藏行
        Rows("8").Hidden = True  '隐藏行
    End If

End Sub

3)注意事项

(1)保存文件:需保存为 .xlsm 格式(启用宏的工作簿)

(2)安全设置:首次运行宏时需在 文件→选项→信任中心→启用所有宏(3)修改按钮:右键按钮可调整大小/文字/位置

右键 → 「指定宏」 可更换宏

2、实现智能数据验证

本示例用以确保A列只接受数字输入(包括整数、小数、负数和科学计数法),并在输入非数字内容时给出提示并清空单元格。

1)使用说明

  • 按 Alt+F11 打开VBA编辑器

  • 在左侧项目窗口中双击对应的工作表(如 Sheet1

  • 将上述代码粘贴到代码窗口中

2)完整代码

Private Sub Worksheet_Change(ByVal Target As Range)

    On Error GoTo CleanExit  ' 错误处理
    
    ' 只处理A列的更改
    Dim changedCells As Range
    Set changedCells = Intersect(Target, Me.Columns("A"))
    If changedCells Is Nothing Then Exit Sub
    
    Application.EnableEvents = False  ' 禁用事件防止循环触发
    Application.ScreenUpdating = False  ' 禁用屏幕更新
    
    Dim cell As Range
    For Each cell In changedCells
        ' 跳过空单元格
        If Not IsEmpty(cell) And cell.Value <> "" Then
            ' 检查是否为有效数字
            If Not IsNumeric(cell.Value) Then
                ' 非数字处理
                MsgBox "A列只接受数字输入!" & vbCrLf & _
                       "单元格 " & cell.Address & " 输入了无效内容: " & cell.Value, _
                       vbExclamation, "输入错误"
                cell.ClearContents
            ' 检查文本型数字(如'123)
            ElseIf VarType(cell.Value) = vbString Then
                MsgBox "请勿输入文本格式的数字!" & vbCrLf & _
                       "单元格 " & cell.Address & " 的内容将被转换为数字", _
                       vbInformation, "格式修正"
                cell.Value = Val(cell.Value)  ' 转换为数值
            End If
        End If
    Next cell

CleanExit:
    Application.EnableEvents = True  ' 确保事件重新启用
    Application.ScreenUpdating = True

End Sub

附录

1、学习资源

VBA常用技巧资源:非常详实的VBA常用技巧,本内容来自于:ExcelHome

2、问题总结

1)Microsoft已阻止宏运行

右键 → 「属性」 → 「解除锁定」


路,还得一个人走,任谁也帮不了谁。远方再远,慢慢走,总会到…… 觉得不错,动动发财的小手点个赞哦!


网站公告

今日签到

点亮在社区的每一天
去签到