我创建了一个简单的工作表宏,在双击单元格时将单元格的内容发送到外部程序。起初,我拥有了表单模块中的所有代码,并且必须将其复制到我想要其功能的每个表单上。现在,我设法将工作表模块中的代码减少到调用标准模块中的子程序,它可以工作,但我必须将代码复制到我需要其功能的每个工作表上。有没有办法只在一个地方(标准模块,工作簿模块或类模块)输入代码,并让它在工作簿中的任何工作表上运行,而工作表后面没有代码?谢谢你的帮助。
答案 0 :(得分:5)
ThisWorkbook
代码模块有一个Workbook_SheetBeforeDoubleClick
事件处理程序,您可以使用它而不是在每张工作表上单独捕获事件。
答案 1 :(得分:2)
您需要在工作表上使用事件处理程序来处理双击。将其放在要运行双击代码的每个工作表后面的代码中。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sWorksheet As String
Dim sValue As String
Dim sCell As String
sWorksheet = ActiveSheet.Name
sValue = Target.Text
sCell = Target.Address
Call DoubleClicked(sWorksheet, sValue, sCell)
End Sub
将您的主程序放在模块中,而不是放在工作表上。
Option Explicit
Sub DoubleClicked(SheetName As String, CellText As String, CellAddress As String)
' your code goes here
MsgBox "You double-clicked cell " & CellAddress & " on sheet " _
& SheetName & ". The text in that cell is: " & CellText
End Sub
您不希望在每张纸上重复逻辑。如果进行更改,则必须为每张纸更改它。只需从每张表中调用主例程,您只需编写并维护一次。