我想显示取决于UserName环境变量的特定UserForm。我在整个代码中的不同位置更新了用户窗体,因此我认为创建两个独立的用户窗体(设计各异)是最容易的(琐碎的事),然后在代码开头使用逻辑“设置” UserForm对象变量。我在这里显然误会了一些东西,原因是当它进入.Show命令时,VBA错误:
Dim usrForm As UserForm
If Environ("UserName") = "redacted" Then
Set usrForm = LlamaForm 'for specific user, form styled differently including picture of Llama
Else
Set usrForm = NormalForm 'for EVERYONE ELSE, normal professional looking form
End If
With usrForm 'initialize UserForm and display wait message
.Cancelbutton.Visible = False
.Proceedbutton.Visible = False
.Exitbutton.Visible = False
.labmsg.Caption = Chr(10) & Chr(10) & Chr(10) & "Starting background processes, please wait..."
.Show vbModeless
End With
我让这个变得太复杂了吗?我真的希望只是在开始时更改引用的表单对象,而不是每次需要更新用户时都使用冗余代码引入逻辑。任何想法或改进将不胜感激。需要说明的是,由于它们的布局/设计千差万别,我想[[真正保留两种不同的用户窗体,而不是操纵一个用户窗体(我知道可以做到的,但是与理解相比,这是更多的工作)为什么我上面的方法不起作用。)
尝试输入此代码
Option Explicit
Public Sub ShowUserForm()
' You can use a generic object, but you lose the early binding features
Dim myUserForm As Object
If Environ("UserName") = "redacted" Then
Set myUserForm = New LlamaForm
Else
Set myUserForm = New NormalForm
End If
myUserForm.Show
End Sub
让我知道是否可行