根据变量显示备用用户表 单

问题描述 投票:0回答:1

我想显示取决于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

我让这个变得太复杂了吗?我真的希望只是在开始时更改引用的表单对象,而不是每次需要更新用户时都使用冗余代码引入逻辑。任何想法或改进将不胜感激。需要说明的是,由于它们的布局/设计千差万别,我想[[真正保留两种不同的用户窗体,而不是操纵一个用户窗体(我知道可以做到的,但是与理解相比,这是更多的工作)为什么我上面的方法不起作用。)

excel vba userform
1个回答
1
投票
您可以使用通用对象,但会丢失早期的绑定功能

尝试输入此代码

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
让我知道是否可行
© www.soinside.com 2019 - 2024. All rights reserved.