使按钮在其单击处理程序中不可见

时间:2018-08-14 14:38:12

标签: vba forms button

在我的子窗体(ms-access中的VBA)中,有一个名为“测试”的按钮,单击该按钮后必须将其设置为不可见。

所以我尝试了:

Private Sub Test_Click()
    'Do some stuff
    Me.Test.Visible = False
End Sub

但这不起作用。因为无法使具有焦点的按钮不可见,所以会引发错误。不幸的是,该按钮是表单上的唯一按钮(其他控件是标签)。由于按钮位于子窗体中,因此我尝试将焦点设置为父级中的按钮:

Private Sub Test_Click()
    'Do some stuff
    call me.parent.schclose.SetFocus
    Me.Test.Visible = False
End Sub

但这也不起作用。 'call me.parent.schclose.SetFocus'不会引发错误,但'Me.Test.Visible = False'像以前一样。

那么,如何使按钮不可见?

2 个答案:

答案 0 :(得分:3)

您可以做的是扩展您的用户表单,并添加一个默认情况下可见的按钮。假设当前您的用户表单的高度为300,宽度为300。将表单扩展为500X500,然后将新按钮放在该表单的右下角(将visible属性设置为Yes)。接下来,将此代码添加到表单中:

Private Sub UserForm_Initialize()
Me.Height = 300
Me.Width = 300
End Sub

现在,当单击测试按钮时,它将不可见,而新按钮仍处于隐藏状态,因为它不在您设置的高度范围内。

答案 1 :(得分:-1)

受VBA_SQL_Programmer答案的启发,我在表单中创建了一个空的只读编辑字段,其中包含一个透明边界(这基本上是不可见的),用于将焦点设置为该字段。

所以我的代码如下:

Private Sub Test_Click()
    'Do some stuff
    call me.invisibleTextBox.SetFocus
    Me.Test.Visible = False
End Sub

此方法无需操纵表格的大小即可。

但是也有一个问题,因为将焦点设置为文本框,用户可以看到闪烁的光标。