【发布时间】:2016-10-30 17:52:22
【问题描述】:
我目前创建了一个宏,它需要大量数据(每周从数据库中提取)并将其显示在多个不同的数据透视表中。我还在工作簿的开头有一个摘要页面,列出了不同的客户和机器名称。目前,我编写了一个宏,以便我可以单击其中一个客户名称,并通过 Worksheet_SelectionChange 事件打开与该客户对应的工作表。
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 网站上使用模板(空)(带有访问跟踪、版本控制等)。