Userform显示何时不需要,不需要

时间:2014-07-03 04:41:07

标签: excel-vba modal-dialog userform modeless vba

使用excel中的一些代码可能会发生一些奇怪的事情

Private Sub CommandButton2_Click()

Dim thiswb As Workbook
Set thiswb = ActiveWorkbook


Call EnterDataToSS(thiswb)
Me.Hide
BeamNoFind.Show vbModal



End Sub

被调用的代码基本上将一些值放入电子表格中。 任何剩余值都会填充到BeamNoFind Userform上的LISTBOX1。

然后在BeamNoFind用户表单上有一个按钮和LISTBOX1。当您从listbox1中选择项目并单击该按钮时,将打开第三个用户窗体(VBMODELESS)以允许放置该值。

下面是显示第三个用户表单的按钮代码。

Private Sub CommandButton2_Click()
Dim Selected_Length As String
Dim Selected_Name As String

Dim Selected_Length_index As Integer

Selected_Length_index = BeamNoFind.ListBox1.ListIndex

With BeamNoFind.ListBox1

If .ListIndex > -1 Then

    Selected_Name = .Column(0, .ListIndex)
    Selected_Length = .Column(1, .ListIndex)

    CellInputForm.beam_length_label.Caption = Selected_Name & " [ " & Selected_Length & " ] "

    BeamNoFind.Hide
    'ChngDataSrc.Hide
    'Unload ChngDataSrc
    CellInputForm.Show vbModeless



Else
    MsgBox "No selection", vbExclamation, "Oops!"

End If
End With

End Sub

奇怪的是,当我单击按钮以显示我的无模式用户窗体时,要将数据放在单元格中,初始宏将被触发,使您进入第一个用户窗体。 我有注释代码'ChngDataSrc.Hide'和'卸载ChngDataSrc'是我试图阻止用户窗体显示我不想要它。 当我卸载表单时,我得到一个错误而不是表单显示,错误是与初始宏:

Sub get_scheduling_data(control As IRibbonControl)
ChngDataSrc.Show

End Sub

它与vbModeless有关,因为如果我将“vbModeless”从“CellInputForm.Show vbModeless”行替换为“vbModal”,它会正确显示,没有不需要的形式(ChngDataSrc)。但随后表格的功能(选择单元格,按下确定按钮,放置在所选单元格中的值)消失了。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,但它不是一个真正的解决方案, 我放了

ChngDataSrc.Hide在CellInputForm用户窗体的Activate子中。 因此,当运行CellInputForm.show vbModeless,并且ChngDataSrc用户窗体不必要地弹出时,它会再次被隐藏。

我想知道为什么它首先显示出来,但这个修复现在似乎有效。