0

我正在创建一个宏,我从数据库中获取一些数据,然后创建该数据的数据透视。但是在执行此操作时,我收到了一些 1004 错误和一些评论。这是我的代码

     Sub CreatePivot()
     Dim objTable As PivotTable, objField As PivotField
     ActiveWorkbook.Sheets("data").Select
' data is name of the sheet 
     Range("A1").Select
    **Set objTable = Sheet1.PivotTableWizard**
     Set objField = objTable.PivotFields("name")
        objField.Orientation = xlRowField
        Set objField = objTable.PivotFields("location")
        objField.Orientation = xlRawField
        Set objField = objTable.PivotFields("blaa")
        objField.Orientation = xlRowField
        ' Specify a data field with its summary
        ' function and format.
        Set objField = objTable.PivotFields("money")
        objField.Orientation = xlDataField
        objField.Function = xlSum
        objField.NumberFormat = " #,##0"

        ' Specify a page field.
        'Set objField = objTable.PivotFields("GENDER")
        'objField.Orientation = xlPageField

        ' Preview the new PivotTable report.
        ActiveSheet.PrintPreview

        ' Prompt the user whether to delete the PivotTable.
        Application.DisplayAlerts = False
        If MsgBox("Delete the PivotTable?", vbYesNo) = vbYes Then
            ActiveSheet.Delete
        End If
        Application.DisplayAlerts = True

    End Sub

错误是说我收到此运行时错误“1004”:-此命令至少需要两行源数据。您不能对仅一行中的选择使用该命令。请尝试以下操作:如果您使用的是高级筛选器,请选择包含至少两行数据的单元格区域。然后再次单击高级过滤器命令。如果您正在创建数据透视表或数据透视图报告,请键入 [它在此处停止]

这是我的代码卡住了Set objTable = Sheet1.PivotTableWizard

当我通过获取新数据使用相同的代码时,它就可以工作了。在这里,我使用 btn_click 从 db 获取数据,后面有两个宏。一个宏获取数据,然后在 creat pivot 上使用第二个宏。但问题来了。有人可以帮忙吗?

4

1 回答 1

0

除了遗漏之外,我没有看到您已声明Sheet1 As Worksheet.... 默认情况下,它将被初始化为 a Variant,因此不会将正确的对象传递给该 PivotTableWizard方法。

此外,PivotTableWizard(Excel 2010)的描述说

此方法不适用于 OLE DB 数据源。使用 Add 方法添加数据透视表缓存,然后根据缓存创建数据透视表。

于 2013-04-16T08:05:56.507 回答