可以创build一个在多个工作表上工作的通用macros吗?

我已经创build了一个简单的工作表macros,单元格被双击时将单元格的内容发送到外部程序。 起初,我把所有的代码都放在了sheet模块中,并且不得不把它复制到每个我想要的function上。 现在,我设法减less了工作表模块中的代码调用一个标准模块中的子程序,它的工作原理,但我仍然必须将代码复制到每个我需要的function表。 有没有办法只在一个地方(标准模块,工作簿模块或类模块)input代码,并使其在工作簿中的任何工作表上都可以工作,而在工作表后面没有代码? 感谢您的帮助。

ThisWorkbook代码模块有一个Workbook_SheetBeforeDoubleClick事件处理程序,您可以使用它来代替在每个工作表上分别捕获事件。

您需要在工作表上的事件处理程序来处理双击。 把它放在你想运行双击代码的每个工作表后面的代码中。

 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 

你不想在每张纸上重复逻辑。 如果您进行了更改,则必须对每张表进行更改。 通过简单地调用每个工作表的主例程,您只需要编写和维护一次。