永久更改用户表单
Permanently Changing User Forms
我正在尝试永久更改用户窗体,这样我只需 运行 一次代码,而不是每次单击打开用户窗体的按钮时都 运行。
我发现这对某些人有效。我不确定我可能出了什么问题。
Sub FormatUserForms(UF As UserForm)
UF.BackColor = RGB(51, 51, 102)
Dim ctrl As Control
With ThisWorkbook.VBProject.VBComponents("UFNewRequest").Designer
For Each ctrl In UF.Controls
Select Case TypeName(ctrl)
Case "Label"
ctrl.BackColor = RGB(51, 51, 102)
ctrl.ForeColor = RGB(247, 247, 247)
Case "CommandButton"
ctrl.BackColor = RGB(247, 247, 247)
ctrl.ForeColor = RGB(0, 0, 0)
Case "TextBox"
ctrl.BackColor = RGB(247, 247, 247)
ctrl.ForeColor = RGB(0, 0, 0)
Case "OptionButton"
ctrl.BackColor = RGB(51, 51, 102)
ctrl.ForeColor = RGB(247, 247, 247)
End Select
Next
End With
End Sub
Sub formatting()
FormatUserForms UFNewRequest
End Sub
感谢您对此的任何帮助!
你把两件事混在一起了。使用 ThisWorkbook.VBProject.VBComponents("UFNewRequest").Designer
对象是正确的轨道,但您没有使用它。相反,您的代码适用于作为参数传递的表单 - 这仅在运行时有效。
Sub FormatUserForm(frm As Object)
Dim d As UserForm
Set d = frm.Designer
d.BackColor = RGB(51, 51, 102)
Dim ctrl As Control
For Each ctrl In d.Controls
Select Case TypeName(ctrl)
(...)
End Select
Next ctrl
End Sub
您可以为项目中的所有表单调用该函数:
Dim f As Object
For Each f In ThisWorkbook.VBProject.VBComponents
If f.Type = 3 Then
Call FormatUserForm(f)
End If
Next f
我想有一种方法可以为 f 使用早期绑定,但是您必须将对 VBE 的引用添加到您的项目中,而我不允许在我的计算机上执行此操作,因此我无法进行测试。可能还有一个为魔法类型数字 3 (=forms) 定义的常量
我正在尝试永久更改用户窗体,这样我只需 运行 一次代码,而不是每次单击打开用户窗体的按钮时都 运行。
我发现这对某些人有效。我不确定我可能出了什么问题。
Sub FormatUserForms(UF As UserForm)
UF.BackColor = RGB(51, 51, 102)
Dim ctrl As Control
With ThisWorkbook.VBProject.VBComponents("UFNewRequest").Designer
For Each ctrl In UF.Controls
Select Case TypeName(ctrl)
Case "Label"
ctrl.BackColor = RGB(51, 51, 102)
ctrl.ForeColor = RGB(247, 247, 247)
Case "CommandButton"
ctrl.BackColor = RGB(247, 247, 247)
ctrl.ForeColor = RGB(0, 0, 0)
Case "TextBox"
ctrl.BackColor = RGB(247, 247, 247)
ctrl.ForeColor = RGB(0, 0, 0)
Case "OptionButton"
ctrl.BackColor = RGB(51, 51, 102)
ctrl.ForeColor = RGB(247, 247, 247)
End Select
Next
End With
End Sub
Sub formatting()
FormatUserForms UFNewRequest
End Sub
感谢您对此的任何帮助!
你把两件事混在一起了。使用 ThisWorkbook.VBProject.VBComponents("UFNewRequest").Designer
对象是正确的轨道,但您没有使用它。相反,您的代码适用于作为参数传递的表单 - 这仅在运行时有效。
Sub FormatUserForm(frm As Object)
Dim d As UserForm
Set d = frm.Designer
d.BackColor = RGB(51, 51, 102)
Dim ctrl As Control
For Each ctrl In d.Controls
Select Case TypeName(ctrl)
(...)
End Select
Next ctrl
End Sub
您可以为项目中的所有表单调用该函数:
Dim f As Object
For Each f In ThisWorkbook.VBProject.VBComponents
If f.Type = 3 Then
Call FormatUserForm(f)
End If
Next f
我想有一种方法可以为 f 使用早期绑定,但是您必须将对 VBE 的引用添加到您的项目中,而我不允许在我的计算机上执行此操作,因此我无法进行测试。可能还有一个为魔法类型数字 3 (=forms) 定义的常量