ComboBox输入框导致范围的重新选择

时间:2018-08-15 18:23:54

标签: excel vba excel-vba

当前,我正在处理一个用户表单,每当单击组合框下拉按钮时,都会提示输入框输入范围。

问题在于,只要选择了范围(选择一个单元格然后单击“确定”),就会取消选中用户窗体(灰色显示),显示一个空的下拉列表,并在我单击工作簿上的任意位置后迫使我重新选择一个范围

单击下拉按钮时是否可以防止重新选择范围?

enter image description here enter image description here enter image description here

下面的代码:

Private Sub ComboBox1_DropButtonClick()
    Dim InputCell As Range
    Set InputCell = Application.InputBox("Select Lookup Cell", "Obtain Object Range", Type:=8)
    ComboBox1.Text = InputCell.Address(0, 0, external:=True)
End Sub

2 个答案:

答案 0 :(得分:1)

当我过去使用RefEdit对象时,我使用了真实的东西(我知道这是问题所在),而只是使用了Change事件。

也许您可以只使用Enter事件(您只需第一次忽略它,如果它是初始化时第一个获得焦点的对象)

资源:

Using RefEdit Controls in Excel Dialogs-乔恩·佩尔帖

  

RefEdit必须直接放在用户窗体上。   在框架或多页上的RefEdit中,会发生奇怪的事情,   包括异常的Excel崩溃。

     

不得在无模式表单上使用RefEdits。在无模式表单上使用RefEdits   表单将导致异常的Excel崩溃。

     

应避免使用RefEdit事件过程。请勿使用RefEdit事件   行为可靠,并且可能会导致VBA错误,这很困难   进行调试。

     

必须删除对RefEdit的引用。将UserForm添加到   VB项目,Excel添加对Microsoft Forms 2.0 Object的引用   图书馆。该参考对于正确操作   您的项目中的用户窗体。要查看您的项目引用了什么,   在项目资源管理器中选择项目,然后选择引用   在“工具”菜单中。

Alternative to Excel’s Flaky RefEdit Control-乔恩·佩尔帖

  

新方法使用对话框中的TextBox而不是RefEdit。

     

TextBox不像RefEdit那样直接与范围交互。相反,单击此下拉按钮后,对话框将暂时隐藏,并出现一个InputBox来征求用户的输入。

     

“使用类型8指示范围对象可能很诱人,但是   是一个模糊的故障,导致工作表失败   包含在其格式中使用公式的条件格式设置条件   定义。幸运的是,使用类型0指定公式仅适用于   很好。”

Cannot use keyboard shortcuts to select ranges in RefEdit control in Excel

答案 1 :(得分:0)

从此来源:Ozgrid

尽管我将使用自定义文本框,但是如果有人想使用组合框,这也可以使用。

Private Sub ComboBox1_DropButtonClick()
    Static Abort As Boolean

    If Abort Then Exit Sub
    Abort = False

    Dim InputCell As Range
    Set InputCell = Application.InputBox("Select Lookup Cell", "Obtain Object Range", Type:=8)

    ComboBox1.Text = InputCell.Address(0, 0, external:=True)

    Abort = True
End Sub