运行时错误9消息下标超出范围

时间:2013-09-11 05:58:30

标签: excel vba excel-vba

我正在尝试基本创建我的第一个VBA代码: - 选择一个单元格 - 按A-Z排序 - 透过数据 - 创建折线图 重新调整图表大小以使其更大

我收到运行时错误9消息subscript out of range并突出显示以下行     ActiveWorkbook.Worksheets( “advertiserConversionReport_3045”)。Sort.SortFields。 _         清除

我所做的是打开另一个工作簿并尝试在数据上运行宏。 查看代码(我不是开发人员)我发现错误可能是对初始工作簿advertiserConversionReport_3045的引用,也许是先前设置的pivot Range("A2:F97")

的范围
Sub ActionReport()
'
' ActionReport Macro
' This macro will pivot data from the action report and create a line chart to show     trending of credited conversions by day.
'
' Keyboard Shortcut: Ctrl+shift+a
'
Range("B1").Select
ActiveWorkbook.Worksheets("advertiserConversionReport_3045").Sort.SortFields. _
    Clear
ActiveWorkbook.Worksheets("advertiserConversionReport_3045").Sort.SortFields. _
    Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, _
    DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("advertiserConversionReport_3045").Sort
    .SetRange Range("A2:F97")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "advertiserConversionReport_3045!R1C1:R97C6", Version:=xlPivotTableVersion14) _
    .CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable1" _
    , DefaultVersion:=xlPivotTableVersion14
Sheets("Sheet1").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Day")
    .Orientation = xlRowField
    .Position = 1
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Conversion Action")
    .Orientation = xlRowField
    .Position = 2
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
    "PivotTable1").PivotFields("Credited Conversions"), _
    "Sum of Credited Conversions", xlSum
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Conversion Action")
    .Orientation = xlColumnField
    .Position = 1
End With
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$3:$R$11")
ActiveWorkbook.ShowPivotTableFieldList = False
ActiveSheet.Shapes("Chart 1").ScaleWidth 1.6583333333, msoFalse, _
    msoScaleFromTopLeft
ActiveSheet.Shapes("Chart 1").ScaleHeight 1.7065974045, msoFalse, _
    msoScaleFromTopLeft
ActiveWindow.SmallScroll Down:=-24
ActiveSheet.Shapes("Chart 1").IncrementLeft -38.25
ActiveSheet.Shapes("Chart 1").IncrementTop -81.75
End Sub`

有谁知道如何解决此问题并成功执行宏?

1 个答案:

答案 0 :(得分:1)

您收到该错误,因为“Activeworkbook”没有名为“advertiserConversionReport_3045”的工作表。

避免使用ActiveWorkbook。创建对象,然后使用它们。您可能希望看到此link

尝试这样的事情

Sub Sample()
    Dim thiswb As Workbook, wbNew As Workbook

    Set thiswb = ThisWorkbook

    '~~> Change as applicable
    Set wbNew = Workbooks.Open("C:\Sample.xlsm")

    With wbNew
        .Worksheets("advertiserConversionReport_3045").Sort.SortFields.Clear
    End With
End Sub