Excel 向新工作表动态添加双击事件。VBA
VBA。我已经知道了如何添加一个在已更改的单元格上触发的事件,但由于某些原因,我无法为已单击的单元格添加该事件。最后,我希望在用户双击a列时触发事件。这是我所能做到的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
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
@海莉·布拉德肖:你有时间测试代码吗?上面的代码没有解决您的问题吗?