gpt4 book ai didi

excel - 使用 VBA 根据枢轴钻头重命名工作表名称

转载 作者:行者123 更新时间:2023-12-03 02:58:50 25 4
gpt4 key购买 nike

我在 Excel 中有一个数据透视表,如下所示:

Team         Doc 1  Doc 2   Grand Total
Team A 13 12 25
Team B 8 7 15
Team C 32 5 37
Grand Total 53 24 77

我已经编写了一段 VBA,它将格式化任何向下钻取工作表以进行打印(Workbook_NewSheet(ByVal Sh As Object))。但是,由于我试图使其尽可能用户友好,因此我真的希望能够使用 vba 自动重命名从数据透视表生成的任何工作表。但是,我不确定如何执行此操作,因为每个工作表的内容会根据用户单击的位置而有所不同(即,如果用户单击“Team A Doc 1 Total”,则该工作表应命名为“Team A Doc 1”但如果用户单击 Doc 2 的 Grand Total 行,则该工作表应命名为“Grand Total Doc 2”) - 我认为可能会出现 15 个不同的工作表名称,这就是为什么我猜测工作表默认为表1!我认为可以通过使用 offset 来根据事件单元格获取团队名称或列名称来生成名称,但我不太确定从哪里开始,因此任何建议/帮助将不胜感激!

谢谢

最佳答案

我希望我可以发表评论,但我还不能,因为我没有足够的代表点! (必须重新启动我的帐户!)

我建议您在手动深入任何给定数据点时录制宏,并查看录制的 vba 代码的外观。我认为从那里您可以配置代码,使工作表的名称基于记录代码的某些元素。

因为我希望这是一条评论,所以如果没有帮助,我会删除它。

更新您新发布的答案:

要在用户向下钻取时检查工作表是否已存在,您可以在获取工作表名称后检查工作表是否存在,如果存在,请选择它,而不是创建一个新工作表。否则,你就创建它。

请参阅此代码:

Private Sub Workbook_NewSheet(ByVal sh As Object)

Application.ScreenUpdating = False

Dim shtCur As Worksheet
Set shtCur = ActiveSheet

Sheets("DQ Summary").Select
RN = ActiveCell.Row
CN = ActiveCell.Column
SheetName = Cells(RN, 2).Value & " - " & Cells(9, CN).Value


If SheetExists(SheetName) Then
Worksheets(SheetName).Select
Else

shtCur.Move _
After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
shtCur.Name = "SheetName"
End If


Application.ScreenUpdating = True


End Sub

Function SheetExists(wsName As String, Optional wb As Workbook = Nothing) As Boolean

SheetExists = False
Dim WS As Worksheet

If wb Is Nothing Then Set wb = ThisWorkbook

On Error Resume Next
Set WS = wb.Worksheets(wsName)
On Error GoTo 0

If Not WS Is Nothing Then SheetExists = True

End Function

关于excel - 使用 VBA 根据枢轴钻头重命名工作表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11776353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com