当前,我正在处理一个用户表单,每当单击组合框下拉按钮时,都会提示输入框输入范围。
问题在于,只要选择了范围(选择一个单元格然后单击“确定”),就会取消选中用户窗体(灰色显示),显示一个空的下拉列表,并在我单击工作簿上的任意位置后迫使我重新选择一个范围
单击下拉按钮时是否可以防止重新选择范围?
下面的代码:
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
答案 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