【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

从第17讲开始,陆续分享了许多关于区域、单元格的操作,今天是最后一波了

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

核心概念

VBA中零碎的概念太多,以至于有些小伙伴总是搞不清楚“当前选中区域”和“活动单元格”,它俩有什么区别和联系呢?

ActiveCell(活动单元格):永远是一个单个单元格。即使在 A1:D10 这样一个大的选中区域里,也只有一个单元格是 ActiveCell,它通常是这个区域起始选中的那个单元格(如 A1),或者之后通过 Activate 方法指定的单元格

Selection(当前选区):代表当前所有被选中的对象。这可能是一个单元格区域(如 A1:D10),也可能是一个图表、一个形状等。ActiveCell 总是包含在 Selection 之中

例如,当你通过点击 A1 并拖动至 F1 来选择单元格时,选区 (Selection) 是 A1 到 F1,而活动单元格 (ActiveCell) 是 A1

另外,如果选区仅有一个单元格,那么选区与活动单元格完全相同,它们代表相同的对象

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

如何改变ActiveCell

我们不能直接给 ActiveCell 属性赋值来改变它,正确的方法是使用 Activate 或 Select 方法

示例1:


Worksheets("Sheet1").Range("A1:D5").Select

我们使用Select方法选中A1:D5区域,此时ActiveCell即为A1,执行后结果如下:

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

示例2:

以上选区仍旧不变,还是A1:D5,然后再执行以下代码:


Worksheets("Sheet1").Range("A3").Activate

ActiveCell变为A3,结果如下:

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

应用举例

ActiveCell属性最大的特点是与用户当前的焦点交互,常用于编写响应式或相对定位的代码

3.1根据活动单元格的位置智能判断并设置格式


Sub FormatHeader()
    ' 如果活动单元格在第一行,则视其为标题并加粗
    If ActiveCell.Row = 1 Then
        With ActiveCell
            .Font.Bold = True
            .Interior.Color = RGB(220, 230, 241) ' 浅蓝色背景
        End With
    End If
End Sub

假如当前活动的工作表中存在数据表格,用鼠标选中首行的任意单元格,如C1,然后再执行上述代码,结果如下:

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

执行代码前选择非首行的单元格,则不会有任何变化

3.2 从用户点击的单元格开始,动态生成一个表格框架


Sub CreateQuickTable()
    ' 设置表头
    ActiveCell.Value = "产品"
    ActiveCell.Offset(0, 1).Value = "销售额"
    ActiveCell.Offset(0, 2).Value = "日期"
    ' 为表头区域添加格式
    With ActiveCell.Resize(1, 3) ' 将区域调整为1行3列
        .Font.Bold = True
        .Interior.Color = RGB(240, 240, 240)
    End With
End Sub

执行以上代码前,使用鼠标随便选中工作表中任意单元格,如C6,然后再执行代码,结果如下:

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

【Excel VBA 基础编程】第20讲:ActiveCell:与用户交互的利器

结束语

以下内容也属于区域/单元格操作,感兴趣的朋友可以点击对应链接查看:

【Excel VBA 编程】Excel VBA高效技巧:用SpecialCells方法智能清理Excel数据

【Excel VBA 编程】自动获取已选中区域:application.Selection

【 VBA 编程】动态查找并合并满足条件的单元格(Find + Union 实战)

【Excel VBA 编程】自动获取已选中区域:application.Selection

公众号同时也在不间断地分享免费的编程案例,如果想学习更多的编程知识,无论是用来提升自动化办公效率还是想提升自我,都可以关注我的公众号“努力鸭是黑色的”,解锁更多的VBA技能

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...