excel - Application.Caption 行为:也返回窗口标题
问题描述
Application.Caption 的行为会根据您是设置还是返回属性而有所不同。
例如,以下子:
Sub SetCap()
With Application
Debug.Print .Caption ' Returns the default: something like "Microsoft Excel - Book1"
.Caption = "MyCaption" ' Set the .Caption property to a custom string
.Windows(1).Caption = "MyWindow" ' Also customise the Window caption
Debug.Print .Caption ' This still returns "MyCaption - MyWindow"
End With
End Sub
我理解应用程序标题和窗口标题是两个独立的东西,默认情况下它们会一起出现在应用程序的标题中,用“ - ”分隔。
您可以将任何您喜欢的字符串分配给 Application.Caption。然而,令人好奇的是,当返回Application.Caption 时,文本不会返回您刚刚设置的字符串,而是包含分隔符和窗口标题。
显然你可以用“-”分割字符串并返回第一部分:
Dim Arr As Variant
Arr = split(Application.Caption, “ - ”)
Debug.Print Arr(0)
...但是,如果实际的 Caption 包含这样的字符串,这将失败。例如,如果您这样做:
Application.Caption = “First Part – Second Part”
...然后如上所述拆分将排除第二部分。
有谁知道为什么会出现这种行为?有没有办法只返回实际的 Application.Caption,而不包括分隔符和窗口标题?
解决方案
您可以使用...解决此问题。</p>
Debug.Print Right$(Application.Caption, Len(Application.Caption) - Len(ActiveWindow.Caption) - 3)
获取您之前设置的标题。
为什么它返回的东西不是以前设置的?
因为微软就是这样做的。
不同的版本似乎有不同的顺序所以
If Left$(Application.Caption, Len(ActiveWindow.Caption)) = ActiveWindow.Caption Then
Debug.Print Right$(Application.Caption, Len(Application.Caption) - Len(ActiveWindow.Caption) - 3)
Else
Debug.Print Left$(Application.Caption, Len(Application.Caption) - Len(ActiveWindow.Caption) - 3)
End If
可能总是返回正确的结果。
推荐阅读
- xml - 使用groovy从xml中提取值
- javascript - 使用 Material-UI 创建自定义变体
- ruby - fastlane中的键值列表
- sql-server - 对 Linux 上的 SQL Server 的模糊作业调度程序支持
- php - 如何使用现有的 PHP 表单在主题行中显示域名
- flutter - Flutter 如何使用 Udemy API
- swift - macOS:在 NSMenu NSMenuItem 之间添加分隔线?
- javascript - 为什么此合并排序代码在 python 中有效,但在 javascript 中无效
- css - 来自javascript的attr()变量的CSS动画错误
- docker - docker-compose 文件中的 COPY 失败