VBA专题10-5:使用VBA操控Excel界面之隐藏/取消隐藏及最小化功能区
可以重命名和隐藏内置选项卡和内置组,改变其在功能区中的顺序。然而,不能重命名和隐藏内置控件,修改内置控件的图标,修改功能区内置组中内置控件的顺序。
要在组中添加内置的和自定义控件,必须将它们添加到内置选项卡中的自定义组,或者新的、自定义的选项卡。
隐藏和取消隐藏功能区
当隐藏功能区时,功能区选项卡和选项卡中的控件全被隐藏。
示例代码:
'隐藏和取消隐藏功能区
Application.ExecuteExcel4Macro"Show.ToolBar(""Ribbon"",False)" '隐藏
Application.ExecuteExcel4Macro"Show.ToolBar(""Ribbon"",True)" '取消隐藏
尽管功能区被隐藏了,但其高度仍然是隐藏前的值。因此,检查功能区的高度不能告诉是否功能区被隐藏。下面的代码是检查功能区是否隐藏的合适的方法:
'检查是否功能区被隐藏
If Application.CommandBars("Ribbon").Visible Then
Debug.Print"可见的"
Else
Debug.Print"隐藏"
End If
最小化功能区
当功能区最小化时,仅能看到功能区选项卡的名称。单击选项卡的名称将临时显示该选项卡的控件。不使用VBA代码,要切换到显示该选项卡中的控件,只需双击当前选择的选项卡的名称或者按Ctrl+F1键。
没有单独的VBA命令来最小化功能区。下面的语句仅切换选项卡中控件的显示:
'切换显示功能区中的控件
Application.CommandBars.ExecuteMso "MinimizeRibbon"
注意,MinimizeRibbon命令在Excel 2007中不存在。上面的代码只适用于Excel 2010及以后的版本。
如果功能区最初是最小化的,那么无意中执行上面语句将恢复显示功能区中的控件。要确保仅在功能区最初没有最小化时执行该语句,首先要检查功能区的高度,当没有最小化时功能区高度值大于100,或者可以使用GetPressedMso方法来检查功能区的状态。下面的代码展示了最小化功能区的两种可能的方法:
'最小化功能区
'第1种方法
With Application
If.CommandBars("Ribbon").Height > 100 Then
.CommandBars.ExecuteMso "MinimizeRibbon"
End If
End With
'第2种方法
With Application
If Not.GetPressedMso("MinimizeRibbon") Then
.ExecuteMso"minimizeRibbon"
End If
End With
如果功能区被隐藏,那么上面的切换语句不会取消隐藏。因此,下面的代码在最小化前使功能区取消隐藏(如果其最初是隐藏的):
'最小化功能区
'如果被隐藏则取消隐藏功能区
With Application
If Not.CommandBars("Ribbon").Visible Then
.ExecuteExcel4Macro"Show.ToolBar(""Ribbon"",True)"
End If
End With
'最小化功能区
With Application.CommandBars
If Not.GetPressedMso("MinimizeRibbon") Then
.ExecuteMso"MinimizeRibbon"
End If
End With
如果功能区是自动隐藏的,那么执行该VBA代码语句来切换显示功能区控件将不被允许,并会导致运行时错误。因此,下面的代码在最小化功能区之前检查功能区的高度,当功能区自动隐藏时其高度值小于25:
'最小化功能区
With Application
'检查功能区是否自动隐藏
If.CommandBars("Ribbon").Height < 25 Then
MsgBox "当其自动隐藏时不能最小化功能区"
Else
'如果隐藏则取消隐藏功能区
If Not .CommandBars("Ribbon").VisibleThen
.ExecuteExcel4Macro"Show.ToolBar(""Ribbon"",True)"
End If
'最小化功能区
With .CommandBars
If Not.GetPressedMso("MinimizeRibbon") Then
.ExecuteMso"MinimizeRibbon"
End If
End With
End If
End With
说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,仅供学习研究。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 线程应用 - 中断interrupt详解
- ThreadLocal全面解析
- tomcat类加载机制了解一下
- tomcat-超详细的启动流程(init)
- tomcat-超详细的启动流程(start)
- NIO学习(一)Buffer缓冲区
- NIO学习(二)Channel通道与Selectors选择器
- Spring学习(一)bean的初始化过程
- Spring学习(二)bean的循环依赖
- Spring学习(三)后置处理器BeanPostProcessor
- Spring学习(四)AOP基础
- Spring知识点(五)代理模式
- Spring知识点(六)bean的生命周期
- Mybatis源码学习(一)SqlSessionFactoryBuilder
- 小程序工具初探