Excel VBA范例大全
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第12章 处理名称

图形、图表有自己的名称,单元格或者区域也可以定义为一个名称。将区域定义为名称应用在公式或者图表中可以更加形象化。例如,B列存放产品单价,则可以将B列定义为“单价”,求平均单价的公式“=AVERAGE(B:B)”则可以修改为“=AVERAGE(单价)”,此种方式可以让人更容易理解公式的含义。本章通过4个实例讲解使用名称的技巧。

● 实例91对区域及图片、图表命名

● 实例92显示与隐藏名称

● 实例93将包含指定名称的对象隐藏

● 实例94利用名称动态求和

实例91 对区域及图片、图表命名

【技巧说明】 对区域及图片、图表命名。

【案例介绍】 单元格区域本身只能以有效格式的地址表示,只有定义名称后才能使用其他字符表示;而图片、图表等一般都以“图片1”、“图表2”等方式表示,不够形象,也不够具体化。本例则对三个类型进行名称的修改,数据如图2.109所示,现需要将B2∶B8命名为“成绩”,将图表命名为“成绩柱形图表”,将图片命名为“影星朱茵”。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub命名()
Sheet1.Range("B2:B8").Name="成绩"
Sheet1.Shapes("图表 1").Name="成绩柱形图表"
Sheet1.Shapes("图片 1").Name="影星朱茵"
MsgBox "命名完成!", 64, "OK"
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 利用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,结果如图2.110所示。

图2.109 默认名称

图2.110 修改后的名称

提示

本实例参见光盘样本:..\第2部分\实例91.xlsm。

【相关知识说明】

(1)Name:返回或设置一个String值,代表对象的名称。

(2)Shape:代表工作表上的所有形状。

实例92 显示与隐藏名称

【技巧说明】 显示与隐藏名称。

【案例介绍】 在名称管理器中可以显示及修改工作簿中所有名称,如图2.111所示。可以通过代码将之完全隐藏或者显示。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub隐藏名称()
    Dim mystr As Name
    For Each mystr In ThisWorkbook.Names
    mystr.Visible=False
    Next mystr
    MsgBox "名称已完全隐藏!", 64, "提示"
 End Sub
Sub显示名称()
    Dim mystr As Name
    For Each mystr In ThisWorkbook.Names
    mystr.Visible=True
    Next mystr
    MsgBox "名称已完全显示!", 64, "提示"
 End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 利用快捷键Alt+F8调出运行宏窗口,选择“隐藏名称”,然后单击“执行”按钮,结果如图2.112所示。

图2.111 工作簿中的名称管理器

图2.112 所有名称已隐藏

提示

本实例参见光盘样本:..\第2部分\实例92.xlsm。

【相关知识说明】

(1)ThisWorkbook:表示正在运行当前宏代码的工作簿。

(2)Visible:返回或设置一个Boolean值,它确定对象是否可见。可读/写。

实例93 将包含指定名称的对象隐藏

【技巧说明】 将名称中包含“箭头”二字的对象隐藏。

【案例介绍】 工作表中有很多图形对象,如图2.113所示,现需要将所有带有箭头的对象隐藏。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub隐藏对象()
    Dim mystr  As Shape
    For Each mystr In Sheet1.Shapes
      If mystr.Name Like "*箭头*" Then
          mystr.Visible=False
      End If
    Next
    MsgBox "所有箭头已完全隐藏!", 64, "提示"
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 利用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,结果如图2.114所示。

图2.113 工作簿中图形

图2.114 隐藏箭头后的图形

提示

本实例参见光盘样本:..\第2部分\实例93.xlsm。

实例94 利用名称动态求和

【技巧说明】 利用名称动态求和。

【案例介绍】 如图2.115所示,B、C、D三列存放成绩数据,单元格E2存放求和项目。现需要对三个科目进行动态求和,即求和数据跟随E2选择的求和项目变化,并且人员数目增加或者减少时求和数据也同样能适应变化。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 使用快捷键Ctrl+R,显示工程资源管理器。

[3] 双击左边列表中的“Sheet1”,打开工作表代码窗口。

[4] 在右边代码窗口输入以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address="$E$2" Then
 ActiveWorkbook.Names.Add Name:="语文", RefersToR1C1:="=Sheet1!" &
      Range([b2], Range("b1048576").End(xlUp)).Address(, , xlR1C1)
 ActiveWorkbook.Names.Add Name:="数学", RefersToR1C1:="=Sheet1!" &
      Range([c2], Range("c1048576").End(xlUp)).Address(, , xlR1C1)
 ActiveWorkbook.Names.Add Name:="地理", RefersToR1C1:="=Sheet1!" &
      Range([d2], Range("d1048576").End(xlUp)).Address(, , xlR1C1)
MsgBox Target & "合计为:" & WorksheetFunction.Sum(Range(Target.Text))
End If
End Sub

[5] 关闭VBE窗口返回到工作表。

[6] 在单元格E2下拉框中选择一个求和项目,程序将弹出该项目的汇总数据,如图2.116所示。

图2.115 成绩表

图2.116 选择求和项目并动态求和

提示

1.本实例参见光盘样本:..\第2部分\实例94.xlsm。

2.为单元格命名必须使用R1C1样式的单元格地址。

【相关知识说明】

Names.Add:添加一个名称。