如何显示用户窗体,然后隐藏,然后再次显示而不运行用户窗体,再次激活代码

时间:2019-11-11 01:02:04

标签: excel vba

我在使用用户表单方面取得了进展。单击工作表按钮时,我显示用户窗体。该按钮将调用startProgressIndicator()

Sub startProgressIndicator()
    UserForm1.Show
End Sub

我将其作为用户表单代码:

Private Sub UserForm_Activate()
    Call myCode
End Sub

然后我想隐藏进度栏,并要求用户输入。这发生在myCode中。我在UserForm1.Hide的开头加入了myCode

在获得用户输入后,我想再次显示进度指示器。 我尝试了UserForm1.Show,但是,这只是再次调用myCode。我只想再次看到相同的用户窗体。

我尝试使用UserForm1.Visible = False,但随后出现此错误

  

功能或接口标记为受限,或者功能使用   Visual Basic不支持自动化类型

1 个答案:

答案 0 :(得分:1)

简短的答案是重写myCode,使其不包含.Hide。将myCode分成逻辑块。

但是,您应该将逻辑与显示分开(请参阅Rubberduck UserForm1.Show(*))。这样-您仅在需要时才从表单中调用.Hide(例如,在“关闭”按钮上单击)。

@ChrisNeilsen建议使用_Initialize,这样可以解决当前的问题,但将来不会为您提供更好的编程方法。同样,如果您决定修改myCode,则可能会遇到难以识别的错误。

  

@ChrisNeilsen:使用“ UserForm_Initialize”而不是“ UserForm_Activate”

(*)不需要免责声明,我与Rubberduck毫无关系,但确实读得很好!