【问题标题】:Double click event in the excel sheet column to fill all textboxes of a Userform双击Excel工作表列中的事件以填充用户表单的所有文本框
【发布时间】:2018-09-18 11:21:11
【问题描述】:

当单击双击行中的特定列时,我正在尝试使用工作表的双击事件来填充用户表单中的所有文本框。

例如:我有 6 列

ID Project  Approval  tool  status  feedback 
1   A1         yes    123   ongoing  good   
2   B2         no     456   stop     bad

当我双击列 ID 中的任何单元格时,带有文本框的用户表单将弹出一个文本框,其中填充了所有列(项目、批准、工具、状态、反馈)中的值,该行是双倍的-点击。所以,当我双击列 ID 中的“1”时,应该会弹出一个用户表单,其中包含文本框值“A1”、“yes”、“123”、“ongoing”、“good”。

这是我目前正在尝试双击事件的代码。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, CANCEL As Boolean)
Dim UserForm2 As frm_Update

    If Target.Column = 1 Then
        Set UserForm2 = New frm_Update

        CANCEL = True
        With UserForm2

            Dim wks As Worksheet
            Set wks = ThisWorkbook.Worksheets("Sheet1")
            wks.Activate
            .txtProject = Cells(Target.Row, 2)
            .txtapproval = Cells(Target.Row, 3)
            .txttool = Cells(Target.Row, 4)
            .txtstatus = Cells(Target.Row, 5)
            .txtfeedback = Cells(Target.Row, 6)

            Me.Show
        End With
    End If

End Sub

我使用此Double click event 作为我的问题的参考,但我无法解决问题。当我运行代码时,我的用户表单没有打开。

【问题讨论】:

  • 如果你想显示用户表单,我有什么好处。我指的是工作表而不是用户表单。它甚至不应该编译,因为 SHow 不是工作表的方法,
  • 另外,您不需要激活您的工作表。您已经有一个绑定到您的工作表。因此,删除 wks.Activate 并将您的手机呼叫更改为:.txtProject = wks.Cells(Target.Row, 2)

标签: vba excel


【解决方案1】:

Me 在工作表的事件例程中指的是工作表,而不是表单。由于工作表没有Show-方法,您应该会收到运行时错误。 只需将行更改为.Show 即可显示表单。

为避免此类错误,请始终将Option explicit 放在所有模块的顶部。如果你这样做,你会得到一个编译器错误找不到方法或数据成员

【讨论】:

  • 最好执行 Debug/Compile 然后编译器报告缺少方法。
  • 我现在尝试了所有更改,但在这一行中出现错误“未定义用户定义的类型”:Dim UserForm2 As frm_Update
  • 这意味着你没有用户表单frm_Update
  • 实际上我的用户表单名称是'Userform2'。我应该替换为 frm_Userform2
  • 不!如果名字是Userform2,那么你必须写Dim frm_Update As UserForm2,然后是Set frm_Update = New UserForm2。我希望你到那时知道如何处理With UserForm2。我还建议阅读this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多