代码之家  ›  专栏  ›  技术社区  ›  ben mazor

Excel VBA Userform If Focus Changes触发器

  •  -3
  • ben mazor  · 技术社区  · 7 年前

    我在VBA中有几个用户表单,我想添加一个功能,当用户第一次单击文本框(将焦点更改为文本框)时,其中的任何文本都会被选中。我在一些会计应用程序和您第一次单击URL栏时的web浏览器中看到了此功能。它本质上意味着用户可以立即覆盖文本字段。我想知道如何在VBA中做到同样的效果,但我还是个新手。我查看了几个子触发器(不知道正确的术语),但没有看到任何子触发器。当你点击文本框时,我找到了一个,但我不希望每次点击字段时,文本都被选中。 谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   pokemon_Man    7 年前

    将其放入textbox事件中

    Dim checked As Boolean
    
    Private Sub TextBox1_Change()
        If checked = True Then
            TextBox1.SelStart = 0
            TextBox1.SelLength = 0
        checked = True
        End If
    End Sub
    
    
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        checked = False
    End Sub
    
    Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        If checked = False Then
            TextBox1.SelStart = 0
            TextBox1.SelLength = Len(TextBox1)
            checked = True
        End If
    End Sub
    

    单击文本框后,它将高亮显示文本,如果单击文本,它将取消高亮显示并允许您修改文本。如果在文本框外单击,然后在内部单击“上一步”,则会重新高亮显示整个文本。