excel - 在 VBA 中更改 Multipage 选项卡的颜色
问题描述
我正在使用 VBA 中的表单,我想知道是否可以让我的 Multipages 中的选项卡在活动时更改颜色,以便与其他选项卡形成更好的对比。这是一个截图
有没有办法将活动选项卡与非活动选项卡进行对比,以便用户知道他正在使用哪个选项卡?
或者您有什么想法可以使活动选项卡相对于非活动选项卡更好地显示?
解决方案
通过复选标记标记页面标题的方法
“或者你有什么想法可以让活动选项卡在非活动选项卡上看起来更好吗?” -
一种可能且有用的方法是
- 用复选标记(例如
ChrW(&H2611)
)标记每个点击的页面标题,然后 - 自动取消标记前一页标题:代码通过在任何多页事件中设置的多页属性“记住”当前/旧页面索引(首先通过初始化)。
.Tag
..._Change()
.Tag
UserForm_Initialize()
由于标题可能包含普通空白,我选择在复选ChrW(&HA0)
标记字符中添加一个受保护的空白 ( ),以便简单地Replace()
维护原始页面标题中的空白。
用户窗体中的示例代码
Private Sub MultiPage1_Change()
'Purpose: mark current page caption by a checkmark
With Me.MultiPage1
Dim pg As MSForms.Page
'a) de-mark old caption
Set pg = oldPage(Me.MultiPage1)
pg.Caption = Replace(pg.Caption, ChkMark, vbNullString)
'b) mark new caption & remember latest multipage value
Set pg = .Pages(.Value)
pg.Caption = ChkMark & pg.Caption
.Tag = .Value ' << remember latest page index
End With
End Sub
帮助功能和UserForm_Initialize()
例程
Function oldPage(mp As MSForms.MultiPage) As MSForms.Page
'Purpose: return currently marked page in given multipage
With mp
Set oldPage = .Pages(Val(.Tag))
End With
End Function
Function ChkMark() As String
'Purpose: return ballot box with check + blank space
ChkMark = ChrW(&H2611) & ChrW(&HA0) ' ballot box with check + blank
End Function
Private Sub UserForm_Initialize()
'Purpose: mark start page & remember page index
Const startIndx As Long = 0
With Me.MultiPage1
.Pages(startIndx).Caption = ChkMark & .Pages(startIndx).Caption
.Tag = startIndx
End With
End Sub
推荐阅读
- amazon-web-services - 如何在 AW 阶跃函数的状态机中发送关于每个任务执行的通知?
- google-cloud-platform - 谷歌云 - DNS
- python - 当一列是数组而另一列是字符串时,如何在pyspark中合并两个数据框?
- binding - 将特定 MPI 等级分组到单个处理单元
- jquery - 选择具有 css 属性 cursor:pointer 的 dom
- python - Python,matplotlib,通过设置为属性的点散布对象
- python - 熊猫如何在时间序列数据上“get_dummies”
- java - Spring mvc - 无法打开 ServletContext 资源 /WEB-INF/dispatcher-servlet.xml
- c++ - 如何在 C++ 中应用二进制搜索来搜索点/对?
- javascript - 在这种情况下它是否使用异步?我试图理解事件循环+承诺