第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:添加一个名称。