【问题标题】:How to make two textboxes in a userform mutually exclusive如何使用户窗体中的两个文本框互斥
【发布时间】:2020-06-13 10:55:04
【问题描述】:

我在一个用户表单中有两个文本框。

我需要,如果用户在一个文本框中输入了一些数字,然后将光标放在另一个文本框中,则删除第一个文本框数据,反之亦然。

如果其中有数据,我可以锁定另一个文本框,作为一种解决方法。

我尝试复制删除值的锁定方法,但它不起作用。

Sub checkTB()

If ConversionForm.Controls("UnitFromEntry").Text <> "" Then
    ConversionForm.Controls("UnitToEntry").Locked = True
Else

    ConversionForm.Controls("UnitFromEntry").Locked = True
End If
End Sub

我在文本框的更新前事件中调用了这个sub。

Private Sub UnitFromEntry_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Call checkTB
End Sub

【问题讨论】:

  • 查看其他事件,例如 GotFocusEnabled 等属性 - 不确定 Locked 是否是您需要的,但您的问题中没有足够的信息来为您提供不错的答案。
  • 如何使用 GotFocus 事件。我似乎没有在文本框的事件列表中找到它。
  • 我的错...它在 Excel VBA 中称为Enter...它应该做同样的事情
  • 你是对的,我将代码放在错误的事件控制器中。在我将它放入 enter 事件后,它工作得很好。谢谢
  • 如何接受您的回答?我没有看到左侧的复选符号。

标签: excel vba


【解决方案1】:

试试这个

Private Sub UnitToEntry_Enter()
    UnitToEntry.Locked = False
    UnitFromEntry.Locked = True
    UnitFromEntry.Text = ""
End Sub

Private Sub UnitFromEntry_Enter()
    UnitFromEntry.Locked = False
    UnitToEntry.Locked = True
    UnitToEntry.Text = ""
End Sub

【讨论】:

  • 实际上我不想锁定文本框,我希望如果一个文本框有焦点,那么另一个文本框不应该有任何文本。因此它将检查哪个具有焦点并删除其他文本框中的任何数据(如果存在)。抱歉,如果我通过添加与锁定文本框相关的代码造成了混乱。
  • @jafri np 删除所有分配 Locked 值的行
猜你喜欢
  • 1970-01-01
  • 2011-12-06
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多