【问题标题】:Select text inside a text box on VBA UserForm在 VBA 用户窗体上的文本框中选择文本
【发布时间】:2016-06-07 20:42:16
【问题描述】:

每次单击时,我都使用以下代码在用户窗体的文本框中选择文本,但是我有近 40 个文本框,我想知道是否有一种方法可以为所有文本框编写单个代码它们而不是复制和粘贴同一段代码 40 次。

Private Sub textbox1_MouseDown(ByVal Button As Integer, _ 
ByVal Shift As Integer,ByVal X As Single, ByVal y As Single)

With Me.textbox1
    .SelStart = 0
    .SelLength = Len(.Text)
End With

End Sub

【问题讨论】:

  • 创建一个封装文本框的用户类。然后您的主代码将简单地创建一个对象(您的新类)来创建文本框并根据需要选择您的文本。
  • 谢谢彼得。我对 vba/userforms 很陌生,我不明白如何创建用户类
  • 这篇文章可以帮到你:assign-code-to-a-button-created-dynamically

标签: vba loops textbox userform mousedown


【解决方案1】:

有多种方法可以编写一个可以为所有这些实例运行的实例。

您需要为每个将调用单个代码实例的文本框的MouseDown 事件添加一行代码。

例如:-

Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
SelectText
End Sub

然后创建一个适用于ActiveControl 的过程:-

Private Sub SelectText()
With ActiveControl
    .SelStart = 0
    .SelLength = Len(.Text)
End With
End Sub

【讨论】:

  • 谢谢 Gary,但是如果文本框没有通用名称怎么办?此时我无法更改它们,因为它们的名称与电子表格中的列相同,并且我正在将此逻辑用于代码的另一部分。
  • @pmv 我已经更改了答案,因为只有您的文本框会调用通用过程(示例中为SelectText),所以我们不需要担心任何形式的检查控件类型。
猜你喜欢
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 2021-12-20
  • 1970-01-01
  • 2018-04-20
  • 2020-11-13
相关资源
最近更新 更多