Nicht vorhandene Objekteigenschaft abfangen

Dieses Thema Nicht vorhandene Objekteigenschaft abfangen im Forum "Microsoft Office Suite" wurde erstellt von estoep, 14. Juni 2006.

Thema: Nicht vorhandene Objekteigenschaft abfangen Hallo zusammen, ich bastele mal wieder mit Pivottabellen rum.  ;) Folgender Code setzt mir auf mehreren Sheets die...

  1. Hallo zusammen,

    ich bastele mal wieder mit Pivottabellen rum.  ;)

    Folgender Code setzt mir auf mehreren Sheets die Pivot-Anzeige bestimmter Felder auf Alle und druckt das Sheet dann aus.
    Das funktioniert im Prinzip prima.
    Außer daß bei zwei Sheets das Field City zwar da ist, aber nicht als Auswahl angeboten wird.

    In dem Fall liefert mir
              PfLfd.CurrentPage = Alle
    den Fehler:
    <Die CurrentPage-Eigenschaft des PivotField-Objektes kann nicht zugeordnet werden.>

    Frage: kann ich irgendwie abfangen, ob das Field diese Eigenschaft besitzt? Bzw. wie müßte ich meine Einschränkung IF ...???? formulieren, wenn ich nicht weiß, auf welchem Sheet das Field angezeigt wird.

    Danke für Eure Hilfe.

    Hier der Source:
    --------------------------------------------------------------------------------
    For iLfd = 1 To 6
      strPrintPageLfd = SucheInRange(RgSheetToPrint, SheetPvChart & iLfd, ge_BerichtsTyp.ClaimSummary)
      If Len(Trim(strPrintPageLfd)) > 0 Then
        Set ChPrint = WbPrint.Sheets(strPrintPageLfd)
        For Each PfLfd In ChPrint.PivotLayout.PivotTable.PivotFields
          If PfLfd.Name = Status _
          Or PfLfd.Name = Type _
          Or PfLfd.Name = Country _
          Or PfLfd.Name = City Then
    ''??       If ????  Then
              PfLfd.CurrentPage = Alle
    ''??        End If
          End If
        Next PfLfd
        ChPrint.print
      Next iLfd


    <Die CurrentPage-Eigenschaft des PivotField-Objektes kann nicht zugeordnet werden.>
     
  2. Hast du es schon mal so probiert ?
    Code:
            On Error Resume Next
            PfLfd.CurrentPage = Alle
            If Err.Number <> 0 Then
             ->hat nicht geklappt
              Err.Clear
             ->...
            Else
             ->hat geklappt :-)
             ->...
            End If
            On Error GoTo 0
    Gruß Matjes :)
     
  3. Danke, das funzt. :)

    Aber interessieren würde es mich doch, ob ich das Vorhandensein von Eigenschaften abfragen kann.
     
  4. Hallo estoep,

    ich hab dir mal ein Beispiel zusammengestellt, daß die erste Pivot-Tabelle in der aktiven Mappe etwas analysiert.

    Gruß Matjes :)
    Code:
    Option Explicit
    '****************************************************************************
    Sub Excel_PivotTable_Analyse2()
      
      Dim pt As PivotTable
            
     ->** 1.gefundene Pivot-Tabelle setzen
      Set pt = PivotTabelle_dieErsteSetzen(ActiveWorkbook)
      If pt Is Nothing Then GoTo AUFRAEUMEN
      pt.Parent.Activate->Blatt mit Pivot-Tabelle aktivieren
      
      
     ->*** ALLE Pivot-Felder dieser Pivot-Tabelle ausgeben
      Call PivotTabelle_AllePivotFelderAusgeben(pt)
      
      
     ->*** Pivot-Felder dieser Pivot-Tabelle nach verschiedenen Kategorien ausgeben
     ->EINGEBLENDETE Pivot-Felder dieser Pivot-Tabelle ausgeben
      Call PivotTabelle_EingeblendetePivotFelderAusgeben(pt)
     ->ANGEZEIGTE DATEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Call PivotTabelle_AngezeigteDatenPivotFelderAusgeben(pt)
     ->ANGEZEIGTE SEITEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Call PivotTabelle_AngezeigteSeitenPivotFelderAusgeben(pt)
     ->SPALTEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Call PivotTabelle_SpaltenPivotFelderAusgeben(pt)
     ->ZEILEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Call PivotTabelle_ZeilenPivotFelderAusgeben(pt)
     ->AUSGEBLENDETE Pivot-Felder dieser Pivot-Tabelle ausgeben
      Call PivotTabelle_AusgeblendetePivotFelderAusgeben(pt)
      
      
     ->***
     ->AUSGEBLENDETE ITEMS eines sichtbaren Pivot-Felder dieser Pivot-Tabelle ausgeben
     ->Anschließend Abfrage, ob alle Items diese Feldes sichtbar gemacht werden sollen
     ->Bei ja, alle ausgeblendeten Items einblenden
      Call PivotTabelle_AusgeblendeteItemsEinesPivotFeldesAusgeben(pt)
      
     ->***
     ->AUSGEBLENDETE ITEMS eines SEITEN-Pivot-Feldes dieser Pivot-Tabelle ausgeben
     ->Anschließend Abfrage, ob alle Items diese Feldes sichtbar gemacht werden sollen
     ->Bei ja, alle ausgeblendeten Items einblenden
      Call PivotTabelle_AusgeblendeteItemsEinesSeitenPivotFeldesAusgeben(pt)
      
    AUFRAEUMEN:
      Set pt = Nothing
    End Sub
    '****************************************************************************
    Private Function PivotTabelle_dieErsteSetzen(wb As Workbook) As PivotTable
    '*** 1.gefundene Pivot-Tabelle setzen
      
      Dim ws As Worksheet, pt As PivotTable
      
      For Each ws In ActiveWorkbook.Worksheets
        If ws.PivotTables.Count > 0 Then
          Set pt = ws.PivotTables(1)
          Exit For
        End If
      Next
      
      If pt Is Nothing Then
        MsgBox Es ist keine Pivot-Tabelle in der Mappe-> & wb.Name &-> vorhanden.
      Else
        MsgBox Die Pivot-Tabelle-> & pt.Name &-> wurde ausgewählt.
        Set PivotTabelle_dieErsteSetzen = pt
      End If
      
    AUFRAEUMEN:
      Set ws = Nothing: Set pt = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_AllePivotFelderAusgeben(pt As PivotTable)
    'ALLE Pivot-Felder dieser Pivot-Tabelle ausgeben
      Dim pf As PivotField
      Dim s As String, x As Long
      
      s = 
      For x = 1 To pt.PivotFields.Count
        Set pf = pt.PivotFields(x)
        s = s & Feld  & x & :  Name: & pf.Name & vbLf
      Next
      
      MsgBox _
        Auflistung ALLER Pivot-Felder der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
        s
        
    AUFRAEUMEN:
      Set pf = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_EingeblendetePivotFelderAusgeben(pt As PivotTable)
    'EINGEBLENDETE Pivot-Felder dieser Pivot-Tabelle ausgeben
      Dim pf As PivotField
      Dim s As String, x As Long
      
      s = 
      For x = 1 To pt.VisibleFields.Count
        Set pf = pt.VisibleFields(x)
        s = s & Feld  & x & :  Name: & pf.Name & vbLf
      Next
      
      MsgBox _
        Auflistung EINGEBLENDETE Pivot-Felder der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
        s
        
    AUFRAEUMEN:
      Set pf = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_AusgeblendetePivotFelderAusgeben(pt As PivotTable)
    'AUSGEBLENDETE Pivot-Felder dieser Pivot-Tabelle ausgeben
      Dim pf As PivotField
      Dim s As String, x As Long
      
      s = 
      For x = 1 To pt.HiddenFields.Count
        Set pf = pt.HiddenFields(x)
        s = s & Feld  & x & :  Name: & pf.Name & vbLf
      Next
      If s =  Then s = Keine ausgeblendeten Felder vorhanden.
      
      MsgBox _
        Auflistung AUSGEBLENDETE Pivot-Felder der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
        s
        
    AUFRAEUMEN:
      Set pf = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_AngezeigteSeitenPivotFelderAusgeben(pt As PivotTable)
    'ANGEZEIGTE SEITEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Dim pf As PivotField
      Dim s As String, x As Long
      
      s = 
      For x = 1 To pt.PageFields.Count
        Set pf = pt.PageFields(x)
        s = s & Feld  & x & :  Name: & pf.Name & vbLf
      Next
      If s =  Then s = Keine SEITEN-Felder vorhanden.
      
      MsgBox _
        Auflistung ANGEZEIGTE SEITEN-Pivot-Felder der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
        s
    
    AUFRAEUMEN:
      Set pf = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_SpaltenPivotFelderAusgeben(pt As PivotTable)
    'SPALTEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Dim pf As PivotField
      Dim s As String, x As Long
      
      s = 
      For x = 1 To pt.ColumnFields.Count
        Set pf = pt.ColumnFields(x)
        s = s & Feld  & x & :  Name: & pf.Name & vbLf
      Next
      If s =  Then s = Keine SPALTEN-Felder vorhanden.
      
      MsgBox _
        Auflistung SPALTEN-Pivot-Felder der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
        s
    
    AUFRAEUMEN:
      Set pf = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_ZeilenPivotFelderAusgeben(pt As PivotTable)
    'ZEILEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Dim pf As PivotField
      Dim s As String, x As Long
      
      s = 
      For x = 1 To pt.RowFields.Count
        Set pf = pt.RowFields(x)
        s = s & Feld  & x & :  Name: & pf.Name & vbLf
      Next
      If s =  Then s = Keine ZEILEN-Felder vorhanden.
      
      MsgBox _
        Auflistung ZEILEN-Pivot-Felder der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
        s
    
    AUFRAEUMEN:
      Set pf = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_AngezeigteDatenPivotFelderAusgeben(pt As PivotTable)
    'ANGEZEIGTE DATEN-Pivot-Felder dieser Pivot-Tabelle ausgeben
      Dim pf As PivotField
      Dim s As String, x As Long
      
      s = 
      For x = 1 To pt.DataFields.Count
        Set pf = pt.DataFields(x)
        s = s & Feld  & x & :  Name: & pf.Name & vbLf
      Next
      If s =  Then s = Keine DATEN-Felder vorhanden.
      
      MsgBox _
        Auflistung ANGEZEIGTE DATEN-Pivot-Felder der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
        s
    
    AUFRAEUMEN:
      Set pf = Nothing
    End Function
    '****************************************************************************
    Private Function PivotTabelle_AusgeblendeteItemsEinesPivotFeldesAusgeben(pt As PivotTable)
    'AUSGEBLENDETE ITEMS eines sichtbaren Pivot-Felder dieser Pivot-Tabelle ausgeben
    'Anschließend Abfrage, ob alle Items diese Feldes sichtbar gemacht werden sollen
    'Bei ja, alle ausgeblendeten Items einblenden
    
      Dim pf As PivotField, pe As PivotItem
      Dim s As String, x As Long, y As Long, bSeitenFeld As Long
      
      s = 
      For x = 1 To pt.VisibleFields.Count
        Set pf = pt.VisibleFields(x)
        bSeitenFeld = False
        For y = 1 To pt.PageFields.Count
          If pf.Name = pt.PageFields(y).Name Then bSeitenFeld = True: Exit For
        Next
        If Not bSeitenFeld Then
         ->kein Seitenfeld
          If pf.HiddenItems.Count > 0 Then
           ->ein Feld mit ausgeblendeten Items gefunden
            For y = 1 To pf.HiddenItems.Count
              Set pe = pf.HiddenItems(y)
              s = s & pe.Name & vbLf
            Next
            If vbYes = MsgBox( _
              Auflistung AUSGEBLENDETE ITEMS des Pivot-Feldes-> & pf.Name & _
             -> der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
              s & vbLf & _
              Sollen die ausgeblendeten Items eingeblendet werden?, _
              vbDefaultButton1 + vbQuestion + vbYesNo) Then
              
             ->ausgeblendete Items sichtbar machen
             ->!!!!!!!!! vom höchsten zum niedrigsten Index !!!!!!!!!
             ->klappt nur bei Nicht SEITENFELDERN
              For y = pf.HiddenItems.Count To 1 Step -1
                pf.HiddenItems(y).Visible = True
              Next
            End If
          End If
        End If
      Next
      
      If s =  Then
        MsgBox _
          Keine Pivot-Feld mit AUSGEBLENDETEN ITEMS in Pivot-Tabelle-> & _
          pt.Name &-> vorhanden.
      End If
      
    
    AUFRAEUMEN:
      Set pf = Nothing: Set pe = Nothing
    End Function
    
    '****************************************************************************
    Private Function PivotTabelle_AusgeblendeteItemsEinesSeitenPivotFeldesAusgeben(pt As PivotTable)
    'AUSGEBLENDETE ITEMS eines Seiten-Pivot-Feldes dieser Pivot-Tabelle ausgeben
    'Anschließend Abfrage, ob alle Items diese Feldes sichtbar gemacht werden sollen
    'Bei ja, alle ausgeblendeten Items einblenden
    
      Dim pf As PivotField, pe As PivotItem
      Dim s As String, x As Long, y As Long
      
      s = 
      For x = 1 To pt.PageFields.Count
        Set pf = pt.PageFields(x)
        If pf.HiddenItems.Count > 0 Then
         ->ein Feld mit ausgeblendeten Items gefunden
          For y = 1 To pf.HiddenItems.Count
            Set pe = pf.HiddenItems(y)
            s = s & pe.Name & vbLf
          Next
          If vbYes = MsgBox( _
            Auflistung AUSGEBLENDETE ITEMS des Seiten-Pivot-Feldes-> & pf.Name & _
           -> der Pivot-Tabelle-> & pt.Name &-> & vbLf & _
            s & vbLf & _
            Sollen alle Items eingeblendet werden?, _
            vbDefaultButton1 + vbQuestion + vbYesNo) Then
            pf.CurrentPage = (Alle) ->bei Excel 97
          End If
        End If
      Next
      
      If s =  Then
        MsgBox _
          Keine Seiten-Pivot-Feld mit AUSGEBLENDETEN ITEMS in Pivot-Tabelle-> & _
          pt.Name &-> vorhanden.
      End If
      
    AUFRAEUMEN:
      Set pf = Nothing: Set pe = Nothing
    End Function
     
Die Seite wird geladen...

Nicht vorhandene Objekteigenschaft abfangen - Ähnliche Themen

Forum Datum
Windows Installer will andauernd nicht mehr vorhandenes Omnipage installieren Windows XP Forum 3. Juni 2015
Windows Explorer: vorhandene Ordner werden nicht angezeigt Windows 7 Forum 26. Jan. 2015
Nicht vorhandener Lokaler Datenträger Windows XP Forum 9. Juli 2012
dialog vom zweiten nicht vorhandenen bildschirm bekommen Windows XP Forum 28. Okt. 2010
15 nicht "vorhandene", nicht verfaßte eMails verschickt: Trojaner? Microsoft Office Suite 6. Juni 2009