我有以下代码(感谢本网站上的答案),它在Excel中选择一个工作表,并在其上选择一个数据透视表的名称。
Sub PivotTableName()
Sheets("PivotTable").Select
Dim pt As PivotTable
Set pt = ActivePivotTable
If pt Is Nothing Then
Debug.Print "No Active pivot table"
Else
Debug.Print "Active = " & pt.Name
End If
End Sub
Function ActivePivotTable() As PivotTable
Dim pt As PivotTable, rv
For Each pt In ActiveSheet.PivotTables
Debug.Print pt.Name, pt.TableRange2.Address
If Not pt.Name = "" Then
Set ActivePivotTable = pt
Exit Function
End If
Next pt
End Function
数据透视表是从MySQL数据库导入的,是工作表上唯一的数据透视表。如果打开excel电子表格并导入表格(使用MySQL for Excel加载项),然后运行宏,则宏工作完美,给出答案
Active = project1.mytable
但是,如果删除此透视表并再次导入,Excel会将新导入的数据透视表名称更改为&#34; project1.mytable.2&#34;但是,当我运行宏时,它仍会返回< / p>
Active = project1.mytable
当我在枢轴表中选择了一个单元格时,我使用ctrl + a删除数据透视表,然后删除。
有谁知道为什么它没有找到正确的名字?
答案 0 :(得分:0)
如果“数据透视表”表中只有1 PivotTable
,则以下代码就足够了:
Sub PivotTableName()
Dim i As Long
With Sheets("PivotTable")
If .PivotTables.Count > 0 Then
' ==== DEBUG SCRIPT ====
For i = 1 To .PivotTables.Count
Debug.Print "Active = " & .PivotTables(1).Name
Next i
Debug.Print "Active = " & .PivotTables(1).Name
Else
Debug.Print "No Active pivot table"
End If
End With
End Sub