我创建了一个简单的工作表宏,它在双击单元格时将单元格的内容发送到外部程序。起初,我拥有工作表模块中的所有代码,并且必须将其复制到我想要该功能的每个工作表上。现在,我设法将工作表模块中的代码简化为对标准模块中子例程的调用,并且它可以工作,但我仍然必须将代码复制到我需要该功能的每张工作表上。有没有办法只在一个地方(标准模块、工作簿模块或类模块)输入代码,并让它在工作簿中的任何工作表上运行,而工作表后面没有代码?谢谢您的帮助。
问问题
3084 次
2 回答
5
ThisWorkbook
代码模块有一个事件处理程序,您可以使用它而Workbook_SheetBeforeDoubleClick
不是在每张纸上单独捕获事件。
于 2012-08-10T17:04:19.433 回答
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
您不希望在每张纸上重复逻辑。如果您进行更改,则必须为每张纸进行更改。通过简单地从每个工作表调用主程序,您只需编写和维护一次。
于 2012-08-10T16:57:40.093 回答