Excel VBA:调用Application.InputBox后,模态窗体将进行无模式操作

时间:2014-02-20 18:53:26

标签: excel-vba vba excel

我有一个包含按钮cmdChangeWeight的MODAL表单formX。用户单击cmdChangeWeight并在Type 1 Application.InputBox中输入权重,然后单击OK或CANCEL返回到formX。

问题是在Type 1 Application.InputBox打开后,用户可以点击并滚动我的工作表,即使他们点击OK或取消,但我的MODAL表格仍然打开。我的期望是在输入完成并且控件传回formX后,用户再也无法触及底层工作表。

'问题似乎出现在Application.InputBox语句中。在那之后,我可以点击工作表单元格,但之前不能。 InputBox如何使我的表单在模态时始终处于模态状态?我有另一个Application.InputBox(类型8)调用相同窗体的另一个按钮,但当它关闭时,触摸工作表的能力结束(预期)。

   On Error Resume Next
    Application.DisplayAlerts = False
    'Prompt user for new weight. Allow cancel.
    vResponse = Application.InputBox(Prompt:="ID " & sID & ", " & _
        Format(dDate, gsDATE_DISPLAY_FORMAT) & ", " & _
        sProduct & vbCrLf & _
        "Available = " & Format(Me.lstSource.List(iItemNum, 4), "0.00") & vbCrLf & _
        "Enter new weight (in lbs)", _
        Title:="Change Weight", Default:=Format(rOldWeight, "0.00"), type:=1)
    On Error GoTo ErrorHandler
    Application.DisplayAlerts = True

'我尝试将InputBox行更改为此,我遇到了同样的问题。

vResponse = Application.InputBox("Hi", type:=1)

'然后我尝试从Application.InputBox更改为InputBox。这样做是为了保护我的工作表,但在所有情况下都不是一个可接受的解决方案。我仍然想知道真正的答案。

vResponse = InputBox(Prompt:="ID " & sID & ", " & _
                    Format(dDate, gsDATE_DISPLAY_FORMAT) & ", " & _
                    sProduct & vbCrLf & _
                    "Available = " & Format(Me.lstSource.List(iItemNum, 4), "0.00")  & _
                    vbCrLf & vbCrLf & _
                    "Enter new weight (in lbs)", _
                    Title:="Change Weight", Default:=Format(rOldWeight, "0.00"))

在我关闭Application.InputBox后,我的模态表单是如何允许工作表可滚动和可点击的?

谢谢! 斜里

(P.S。这是转发,因为我在故障排除方面得到了进一步的帮助,需要大家再看看。)

0 个答案:

没有答案