【问题标题】:Macro failing to get correct PivotTable name宏无法获得正确的数据透视表名称
【发布时间】:2018-03-12 20:39:38
【问题描述】:

我有以下代码(感谢本网站上的回答),它在 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电子表格并导入表格(Using MySQL for Excel add-in)然后运行宏,宏运行完美,给出答案

Active = project1.mytable

但是,如果删除此数据透视表,然后再次导入,Excel 会将新导入的数据透视表名称更改为“project1.mytable.2”,但是,当我运行宏时,它仍然返回

Active = project1.mytable

当我在数据透视表中选择了一个单元格时,我使用 ctrl+a 删除数据透视表,然后删除。

有谁知道为什么它没有选择正确的名称?

【问题讨论】:

  • 如果它是工作表上唯一的一个,为什么不直接使用Sheets("PivotTable").PivotTables(1).Name
  • @Jay 不确定您的代码的目的是什么。您需要对 Pivot-Table 的 Name 做什么?您的工作表是否始终包含一个 PivotTable

标签: mysql vba excel pivot-table


【解决方案1】:

如果“数据透视表”表中只有 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

【讨论】:

  • 感谢您的回答,不幸的是,这仍然返回“Active = project1.mytable”而不是“Active = project1.mytable.2”。在 Excel 上,数据透视表工具下的表名称为“project1.mytable.2”
  • @Jay 你确定你删除了之前的数据透视表吗?
  • @Jay 尝试编辑后的代码,添加一些 Debug 脚本,告诉我你得到了什么
  • 我使用了Ctrl+a然后点击Delete,它似乎删除了整个表,有没有更好的方法来删除数据透视表?我在这里运行代码:extendoffice.com/documents/excel/… 它告诉我我在整个工作簿中只有一个数据透视表(如预期的那样),但是它的数据透视表名称也不正确
  • 我刚刚运行了更新的代码。它返回“Active = project1.mytable\r\n Active = project1.mytable”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多