Excel 向新工作表动态添加双击事件。VBA

Excel 向新工作表动态添加双击事件。VBA,excel,vba,events,dynamic,Excel,Vba,Events,Dynamic,VBA。我已经知道了如何添加一个在已更改的单元格上触发的事件,但由于某些原因,我无法为已单击的单元格添加该事件。最后,我希望在用户双击a列时触发事件。这是我所能做到的 Sub CreateEventProcedure() Dim VBProj As VBIDE.VBProject Dim VBComp As VBIDE.VBComponent Dim CodeMod As VBIDE.CodeModule Dim LineNum As Long

VBA。我已经知道了如何添加一个在已更改的单元格上触发的事件,但由于某些原因,我无法为已单击的单元格添加该事件。最后,我希望在用户双击a列时触发事件。这是我所能做到的

Sub CreateEventProcedure() 
    Dim VBProj As VBIDE.VBProject 
    Dim VBComp As VBIDE.VBComponent 
    Dim CodeMod As VBIDE.CodeModule 
    Dim LineNum As Long 
    Const DQUOTE = """" ' one " character  

    Set VBProj = ActiveWorkbook.VBProject 
    Set VBComp = VBProj.VBComponents("ThisWorkbook") 
    Set CodeMod = VBComp.CodeModule 
    
    With CodeMod 
        LineNum = .CreateEventProc("Open", "Workbook") 
        LineNum = LineNum + 1 
        .InsertLines LineNum, "    MsgBox " & DQUOTE & "Hello World" & DQUOTE 
    End With 
End Sub 

请尝试下一个代码:

Sub CreateEventDBlClickProcedure()
    Dim VBProj As VBIDE.VBProject, VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule, LineNum As Long

    Set VBProj = ActiveWorkbook.VBProject
    Set VBComp = VBProj.VBComponents("ThisWorkbook")
    Set CodeMod = VBComp.CodeModule
    'Check if the event is not already created:
    If CodeMod.Find("Private Sub Workbook_SheetBeforeDoubleClick", 1, 1, CodeMod.CountOfLines, 1, False) = True Then
            MsgBox "Event already created...": Exit Sub
    End If

    With CodeMod
        .AddFromString "Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)" & vbCrLf & _
                       "    MsgBox  ""Hello World from sheet "" & Sh.Name" & vbCrLf & _
                       "End Sub"
    End With
End Sub

@海莉·布拉德肖:你有时间测试代码吗?上面的代码没有解决您的问题吗?