【问题标题】:UserForm RefEdit - Code to reinitialize range selectionUserForm RefEdit - 重新初始化范围选择的代码
【发布时间】:2015-12-10 22:59:02
【问题描述】:

我创建了一个Userform,其中包含几个选项按钮作为较大宏的一部分。如果存在特定的计算错误,用户窗体将加载,并要求用户选择一种方法来纠正错误。一个选项启用 RefEdit 控件并允许用户选择一个新的起始单元格(并跳过当前和新定义范围之间的错误和单元格)。

我已使用 _Exit 事件来设置一些错误检查(例如,确保选择了有效范围或确保范围是 1x1 范围),但我一直无法找到强制 RefEdit 控件“重新初始化。”我曾尝试使用 RefEdit.SetFocus 方法,但这并没有产生我想要的结果。

基本上,我可以使用一个命令来反映单击 RefEdit 控件上的下拉按钮的行为吗?

Private Sub RefEdit_NewStartCell_Exit(ByVal Cancel As MSForms.ReturnBoolean) On Error Resume Next Set UserRange = Range(RefEdit_NewStartCell.Text) If Err.Number <> 0 Then MsgBox "Invalid range selected" RefEdit_NewStartCell.SetFocus End If On Error GoTo 0

【问题讨论】:

  • 只是一个愚蠢的问题:当出现错误时,您需要的不是Cancel = True吗? (我确定我错了)
  • 不确定,我不太熟悉 Cancel 的工作原理。那会取代这条线吗? If Err.Number &lt;&gt; 0 Then
  • Cancel = True 只会阻止这样的操作:在 ThisWorkbook:Private Sub Workbook_BeforeClose(Cancel As Boolean): Cancel = True: End Sub 如果您尝试关闭工作簿,则会触发 BeforeClose。如果(在 End Sub)Cancel = True 则该操作将自行取消 => 您无法关闭工作簿。如果 RefEdit_NewStartCell_Exit 的工作方式相同,那么If Err.Number &lt;&gt; 0 Then Cancel = True 将阻止它退出,您将坚持选择直到Range(RefEdit_NewStartCell.Text) 在退出时没有错误...但我不确定...试试吧:)
  • 看起来好像不起作用。当我将Cancel = True 放在那里时,用户窗体就会关闭并且代码结束。 编辑: 这是我试过的代码。 Private Sub RefEdit_NewStartCell_Exit(ByVal Cancel As MSForms.ReturnBooleanOn Error Resume NextSet UserRange = Range(RefEdit_NewStartCell.TextIf Err.Number &lt;&gt; 0 Then Cancel = TrueMsgBox 1End If
  • 好的,抱歉...至少尝试过...我需要运行一些测试...

标签: excel vba user-controls userform


【解决方案1】:

这不是一个“真正的”答案,而是一种解决方法(大多数时候 excel 使用 RefEdit 会崩溃,所以我无法运行测试......抱歉)

如果你愿意,可以用你的 RefEdit 来做(我使用了一个文本框):

Private Sub TextBox1_Enter()

  On Error Resume Next
  Set UserRange = Nothing
  UserForm1.Hide

  While UserRange.Count <> 1
    Set UserRange = Application.InputBox("Select Range", , , , , , , 8)
  Wend

  CommandButton1.SetFocus
  TextBox1.Value = UserRange.Address
  UserForm1.Show

End Sub

希望有人尽快得到更好的答案^.^;

至少输入框只会返回一个有效范围(无需检查)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2015-05-10
    • 2015-08-14
    • 1970-01-01
    相关资源
    最近更新 更多