【问题标题】:Double Click Event on the items of the ListBox of a Userform VBA双击用户窗体 VBA 的列表框项目上的事件
【发布时间】:2018-08-27 20:51:26
【问题描述】:

我正在尝试使用 vba 在 excel 上做一个小的“另存为”界面,这样我就可以将我放入工作表中的一些信息保存在另一个工作表中。我几乎完成了它,它看起来像这样:click here to see my Save As interface

我的问题是我想在双击列表中的一个元素时放置一个事件,比如说 SoCs2。双击时,我希望字符串“SoCs2”出现在下面的文本框中。

我尝试过类似的方法:

Private Sub Listbox1_BeforeDoubleClick(ByVal Cancel As MSForms.ReturnBoolean)

With Me.ListBox1
     For i = 0 To .ListCount - 1
       If .Selected(i) Then
         Me.TextBox1.Value = .List(i, 0)
         Exit For
       End If
     Next
End With

End Sub

我的 ListBox 称为 ListBox1,我的 TextBox 称为 TextBox1。 不幸的是,这段代码不起作用:当我双击我的 ListBox 的一项时,它完全没有任何作用。 有人可以帮我解决这个问题吗?

【问题讨论】:

  • 请不要将您的代码放在sn-p中,因为它无法运行,不需要它。只需缩进 4 个空格,格式即为代码。
  • 好的,我改了,有什么办法解决我的问题吗?
  • 首先,这只是代码的一小部分,至少缺少声明。所以请提供一个 MCVE (stackoverflow.com/help/mcve)。此外,这段代码不起作用也不是一个合适的问题。运行它时会发生什么,显示什么错误消息。这应该是开始修复代码的好方法,因为您可以搜索错误消息并从中推断问题。
  • 没有错误信息,当我双击列表中的一个元素时它什么也不做。
  • 是的,确实没有声明,因为不需要声明。我只是在我的用户窗体中放了一个 ListBox 和一个 TextBox,仅此而已

标签: excel vba forms listbox


【解决方案1】:

您要查找的事件处理程序的名称是 Listbox1_DblClick。试试这个:

Private Sub Listbox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  With Me.ListBox1
    For i = 0 To .ListCount - 1
      If .Selected(i) Then
        Me.TextBox1.Value = .List(i, 0)
        Exit For
      End If
    Next
  End With

End Sub

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 2011-05-26
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2014-10-10
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多