我想运行一个带状态栏的用户表单。
我用代码bolow显示我的表单。 我应该如何声明变量并为这些变量赋值?
非常重要:我必须在我的项目中使用后期绑定。
Sub RunMyUserForm()
With MyUserForm
.LabelProgress.Width = 0
.TextBox1 = 1
'to make the progress bar color match the workbook's current theme:
.LabelProgress.BackColor = ActiveWorkbook.Theme.ThemeColorScheme.Colors(msoThemeAccent1)
.Show vbModeless
End With
End Sub
提前感谢您的帮助!
更新信息:
Compile error: Variable not defined
- 部分代码msoThemeAccent1
被标记为黄色。这就是我在定义变量方面寻求帮助的原因。 Err.Description: "Value is out of range"
,Err.Number: -2147024809
)答案 0 :(得分:1)
您的编译器将msoThemeAccent1
视为变量,并且未声明。这就是为什么您的代码无法与Option Explicit
一起运行的原因,也是您禁用Option Explicit
时代码引发错误的原因。 .Colors
是一个基于1的集合(?)所以当你打电话:
ActiveWorkbook.Theme.ThemeColorScheme.Colors(msoThemeAccent1)
正在编译:
ActiveWorkbook.Theme.ThemeColorScheme.Colors(0)
这提出了一个预期的,虽然神秘的错误。
我使用了一些代码来检查这个常量的值,但事后我应该刚才参考文档:
http://office.microsoft.com/en-us/excel-help/HV080559557.aspx
这应该为您解决
ActiveWorkbook.Theme.ThemeColorScheme.Colors(5)
或者,如果您需要在代码中的多个位置依赖此值,则可以声明变量(公共或私有,范围取决于您需要它)。
Public Const myAccentColor1 as Long = 5
然后,在您的代码中,您可以:
ActiveWorkbook.Theme.ThemeColorScheme.Colors(myAccentColor1)
修订
我现在明白了,没有参考MS Office Object Library这是有道理的。这是我在我的XLSB文件中保留引用的少数几个库之一,所以我的困惑是因为我认为我使用了适当的后期绑定,但我确实使用了早期绑定。