Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 通过模块向工作表中添加宏代码_Excel_Vba_Macros - Fatal编程技术网

Excel 通过模块向工作表中添加宏代码

Excel 通过模块向工作表中添加宏代码,excel,vba,macros,Excel,Vba,Macros,我目前创建了一个宏,它接收大量数据(每周从数据库中提取),并将其显示在多个不同的透视表中。我在工作簿的开头还有一个摘要页面,列出了不同的客户和机器名称。目前,我编写了一个宏,这样我就可以单击其中一个客户名称,并通过工作表选择更改事件打开与该客户关联的工作表 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If SheetExists(Right(Replace(Replace(ActiveCell.Value, "

我目前创建了一个宏,它接收大量数据(每周从数据库中提取),并将其显示在多个不同的透视表中。我在工作簿的开头还有一个摘要页面,列出了不同的客户和机器名称。目前,我编写了一个宏,这样我就可以单击其中一个客户名称,并通过工作表选择更改事件打开与该客户关联的工作表

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If SheetExists(Right(Replace(Replace(ActiveCell.Value, "/", "-"), "'", ""), 31)) Then
        ActiveWorkbook.Sheets(Right(Replace(Replace(ActiveCell.Value, "/", "-"), "'", ""), 31)).Activate
    End If
End Sub

Function SheetExists(SheetName As String, Optional wb As Excel.Workbook)
   Dim s As Excel.Worksheet
   If wb Is Nothing Then Set wb = ThisWorkbook
   On Error Resume Next
   Set s = wb.Sheets(SheetName)
   On Error GoTo 0
   SheetExists = Not s Is Nothing
End Function
不幸的是,由于工作的性质,我不能分享太多的代码本身


我的问题在于下周重新生成报告时:是否可以让生成详细工作表和摘要的宏将SelectionChange代码添加到新摘要中?谢谢

模板似乎是最好的选择


谢谢

模板似乎是最好的选择


谢谢

使用加载项或模板执行此操作您的数据是什么样子的?你能显示你的宏的代码吗?用事件代码更新,不幸的是我不能显示生成宏的很多内容,我一直认为数据是机密的,而不是你正在编写的VBA代码。无论如何,基本问题是您正在寻找VBA代码来更改VBA代码。虽然这是可能的,但我只知道VBA代码可以更改驻留在模块中的VBA代码。但是,您需要更改工作表上的代码。据我所知,这是不可能的。因此,最好的建议仍然是@Nathan_Sav建议的:模板或插件。我通常使用SharePoint网站上的模板(空)(具有访问跟踪、版本控制等功能)。使用加载项或模板执行此操作您的数据是什么样子的?你能显示你的宏的代码吗?用事件代码更新,不幸的是我不能显示生成宏的很多内容,我一直认为数据是机密的,而不是你正在编写的VBA代码。无论如何,基本问题是您正在寻找VBA代码来更改VBA代码。虽然这是可能的,但我只知道VBA代码可以更改驻留在模块中的VBA代码。但是,您需要更改工作表上的代码。据我所知,这是不可能的。因此,最好的建议仍然是@Nathan_Sav建议的:模板或插件。我通常使用SharePoint网站上的模板(空)(带有访问跟踪、版本控制等)。