任务描述
1、效果图
2、功能描述
(1)MyTab选项卡->Opposite按键:将选中单元格的数值变为相反数
(2)MyTab选项卡->Round(Percentile)按键:将选中单元格的数值四舍五入保留两位小数,数值采用千分位表示,如123,456.78
(3)MyTab选项卡->Round(Integer)按键:将选中单元格的数值四舍五入保留整数,数值采用千分位表示,如123,456
以下是自定义功能区的创建过程:
一、编写宏代码,保存到xlsm文件中
1、打开一个新的Excel文档,按Alt+F11打开VBE,插入模块
2、在新插入的模块中填入VBA代码
示例代码:
'功能:选区内数值四舍五入保留两位小数,以千分号格式显示,负数仍以“-”显示
Sub RoundToPercentile(control As IRibbonControl)
For Each rng In Application.Selection
If rng.Value <> "" And VBA.IsNumeric(rng) Then
Range(rng.Address).NumberFormatLocal = "#,##0.00"
End If
Next
End Sub
'功能:选区内数值四舍五入保留整数,以千分号格式显示,负数仍以“-”显示
Sub RoundToInteger(control As IRibbonControl)
For Each rng In Application.Selection
If rng.Value <> "" And VBA.IsNumeric(rng) Then
Range(rng.Address).NumberFormatLocal = "#,##0"
End If
Next
End Sub
'功能:选区内数值正负号变换
Sub TakeOpposite(control As IRibbonControl)
Dim rng As Range
For Each rng In Application.Selection
If rng.Value <> "" And VBA.IsNumeric(rng) Then
Range(rng.Address).Value = -Range(rng.Address).Value
End If
Next
End Sub
3、保存Excel文档为xlsm
二、修改xlsm文件(360压缩为例)
1、在windows下创建一个名为customUI的文件夹,文件夹下创建images文件夹、_rels文件夹和customUI.xml文件。
注意:以下所有编辑的xml内容中不能出现中文(包括中文注释,我之前在内容中加入了中文导致无法生成自定义的功能区)
2、images文件夹存放功能区图标的图片(支持PNG、JPG、GIF、BMP格式),将需要使用的图标放入该文件夹
3、在_rels文件夹下新建customUI.xml.rels文件,在文件中添加如下内容:
注:Relationship标签绑定了图标Id和图标的路径,在customUI.xml中button标签的image属性将使用到这个Id。
4、customUI.xml是Excel自定义功能区的设计定义文件,在文件中添加如下内容:
说明:
(1)tab标签定义了一个选项卡,label属性为功能区选项卡上显示的名称,下面group和button标签的label属性同理;
(2)group标签定义了一个组别;
(3)button 标签定义了一个按键,image属性值为按键图标的ID(ID与图标路径在customU/_rels/CustomUI.xml.rels文件内已经绑定),onAction属性的值为点击按键后需要执行的宏的名称;
(4)“ ”表示换行。
最终,customUI文件夹的目录树如下:
└─customUI
│ customUI.xml
├─images
│ Opposite.png
│ RoundToInteger.png
│ RoundToPercentile.png
└─_rels
customUI.xml.rels
6、用压缩软件打开xlsm文件(可将后缀改为.xlsm.zip再打开,弄好后再改回来)
打开_rels目录下的的.rels文件,在前添加如下xml标签,这个标签指定了customUI.xml文件的路径:
添加后结果如下(记事本打开.rels文件格式不好看,我借助在线代码格式化调整了格式):
7、将准备好的customUI文件夹复制到压缩文件中
执行完以上的步骤,修改xlsm文件的过程已经完成。
三、测试
关闭压缩软件窗口,用Excel打开修改好的xlsm文件,弹出如下提示:
点击“是”。然后弹出提示,点击“关闭”。即可在选项卡中看到customUI.xml中所设计的选项卡。
选中单元格,点击按键可以测试选项卡中按键的功能是否正确。
重新保存后,修复提示将不会再弹出。将该xlsm文档保存成xlam(加载宏)后,即可在别的Excel中加载使用。
总结一下,自定义Excel的功能区有以下一些步骤:
1、编写宏,将带有宏的Excel文档保存成xlsm文件;
2、customUI/images文件夹中放入图标,在customUI/_rels文件夹中创建customUI.xml.rels文件,在文件中给图标指定Id;
3、选项卡的设计需求编写customUI/customUI.xml;
4、用压缩文件编辑xlsm文件的_rels/.rels文件,并将customUI复制到xlsm文件中。
5、大功告成,用Excel打开xlsm验证结果。
示例的xlsm文件已经上传到:https://download.csdn.net/download/u014695839/10949173
最后,我希望能各位多多交流,如有问题,务必指正!