我正在创建一个宏,我从db中获取一些数据,然后创建该数据的数据透视。但在这样做时,我得到了一些评论的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': - 此命令至少需要两行源数据。您不能仅在一行中的选择上使用该命令。请尝试以下操作:如果您使用的是高级过滤器,请选择包含至少两行数据的单元格范围。然后再次单击“高级筛选”命令。如果您要创建数据透视表或数据透视图报表,请键入[它在此处停止]
这是我的代码卡住设置objTable = Sheet1.PivotTableWizard
当我使用相同的代码时,通过获取新数据然后它的工作。在这里我使用btn_click从db获取数据,然后在那个宏后面有两个宏。一个宏获取数据,然后在creat pivot上有第二个宏。但问题即将来临。任何人都可以帮忙吗?
答案 0 :(得分:0)
除了遗漏之外,我没有看到您已声明Sheet1 As Worksheet
....默认情况下,它会被初始化为Variant
,因此无法将正确的对象传递给{{1}方法。
此外,PivotTableWizard
(Excel 2010)的说明是
此方法不适用于OLE DB数据源。使用Add方法添加数据透视表缓存,然后根据缓存创建数据透视表。