宏无法获得正确的数据透视表名称

时间:2018-03-12 12:06:14

标签: mysql excel vba excel-vba pivot-table

我有以下代码(感谢本网站上的答案),它在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删除数据透视表,然后删除。

有谁知道为什么它没有找到正确的名字?

1 个答案:

答案 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