2017-07-06 23 views
0

私は一緒につなげたコードに取り組んでいますが、私が探しているのは、 "used"の範囲が見つかった後です(私は.usedrangeを使用しようとしていません信頼性)は、SourceData:=が文字列を期待していることです(私は思う)。ピボットデータ範囲の文字列または範囲の更新

Dataシートからピボットテーブルのデータ範囲までの範囲を通過する方法はありますか?私はRealUsedRange.Addressを追加しようとしましたが、それは運もありませんでした。

Sub UpdatePivotRange() 

    Dim Rng1  As Range 
    Dim oWB   As Workbook 
    Dim oWS   As Worksheet 
    Dim DataSheet As Worksheet 
    Dim oPT   As PivotTable 

    Set oWB = ThisWorkbook 
    Set DataSheet = oWB.Sheets("Data") 
    Set Rng1 = RealUsedRange 

    If Rng1 Is Nothing Then 
     MsgBox "There is no used range, the worksheet is empty." 
    Else 
     For Each oWS In oWB.Worksheets 
      For Each oPT In oWS.PivotTables 
      'ERRROR BEGINS HERE ##### 
       oPT.ChangePivotCache _ 
        oWB.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Rng1) 
      'ERROR ENDS HERE ##### 
      Next oPT 
     Next oWS 
    End If 

End Sub 

Public Function RealUsedRange() As Range 

    Dim FirstRow  As Long 
    Dim LastRow   As Long 
    Dim FirstColumn  As Integer 
    Dim LastColumn  As Integer 
    Dim DataSheet  As Worksheet 
    Dim oWB    As Workbook 

    On Error Resume Next 
    Set oWB = ThisWorkbook 
    Set DataSheet = oWB.Sheets("Data") 
     With DataSheet 

      FirstRow = DataSheet.Cells.Find(What:="*", After:=Cells(1, 1), LookIn:=xlValues, LookAt:= _ 
      xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext).Row 

      FirstColumn = DataSheet.Cells.Find(What:="*", After:=Cells(1, 1), LookIn:=xlValues, LookAt:= _ 
      xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column 

      LastRow = DataSheet.Cells(.Rows.Count, "A").End(xlUp).Row 

      LastColumn = DataSheet.Cells(1, Columns.Count).End(xlToLeft).Column 

      Set RealUsedRange = Range(Cells(FirstRow, FirstColumn), Cells(LastRow, LastColumn)) 

     End With 
    MsgBox "The range is" & RealUsedRange.Address 
    On Error GoTo 0 

End Function 

答えて

0

私は追加することによって、エラーが発生した行を修正することができました:

oPT.ChangePivotCache _ 
        oWB.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Data!" & Rng1.Address(ReferenceStyle:=xlR1C1)) 

希望を、これは将来的に探している人を助けます。

関連する問題