1

我创建了一个简单的工作表宏,它在双击单元格时将单元格的内容发送到外部程序。起初,我拥有工作表模块中的所有代码,并且必须将其复制到我想要该功能的每个工作表上。现在,我设法将工作表模块中的代码简化为对标准模块中子例程的调用,并且它可以工作,但我仍然必须将代码复制到我需要该功能的每张工作表上。有没有办法只在一个地方(标准模块、工作簿模块或类模块)输入代码,并让它在工作簿中的任何工作表上运行,而工作表后面没有代码?谢谢您的帮助。

4

2 回答 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 回答