Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Fehler in Pivot/Show Details;Errorhandling versagt

Betrifft: Fehler in Pivot/Show Details;Errorhandling versagt von: Andreas Hanisch
Geschrieben am: 18.08.2008 17:03:15

Hallo Herber Fans,

ich habe mir in einer Pivottabelle die Funktion Details ein-/ ausblenden über OnKey auf STRG + D gelegt und dazu auch ein Errorhandling in den Code eingebaut. Wenn ich nun mit der aktiven Zelle (Selection) auf dem PivotDatenFeld oder einem PageField positioniert bin, bekomme ich eine Errormeldung. („Die Methode Execute für das Objekt '_CommandBarButton' ist fehlgeschlagen“). Wenn ich auf den genannten Feldern bin und die Funktion Detail einblenden über das Zell Kontextmenü aufrufen möchte, dann ist der entsprechende Button grau hinterlegt. D.h. nicht für dieses Feld vorgesehen. Also dachte ich, den Fehler über „On Error Resume Next“ abfangen zu können. Dieses war leider nicht von Erfolg gekrönt. Ich dachte bisher immer, daß diese On Error Anweisung alles abfängt was so vorkommen kann. Das scheint leider nicht der Fall zu sein.
Wie kann ich den beschriebenen Fehler handhaben?

https://www.herber.de/bbs/user/54710.xls

Vielen Dank für eine zündende Idee.

Grüße, Andreas

  

Betrifft: AW: Fehler in Pivot/Show Details;Errorhandling versagt von: fcs
Geschrieben am: 19.08.2008 13:26:03

Hallo Andreas,

ich hab die Fehler-Prüfung etwas verfeinert und zusätzlich die Fehlernummer mit in die Prüfungen einbezogen.

Gruß
Franz

Sub Pivot_ShowDetailsOnOff()
  Dim cmdBarCntr As CommandBarControl
  Dim pvTable As PivotTable
  Dim intFehler As Variant
  
  
  Set pvTable = ActiveSheet.PivotTables(1)
  If Selection.Cells.Count > 1 Then Exit Sub
  
  On Error GoTo MoreInnerDetail
  
  intFehler = 1
  With pvTable.PivotFields(Selection.Value)
  intFehler = 2
      If .PivotItems(1).ShowDetail = False Then
          Selection.ShowDetail = True
      ElseIf .PivotItems(1).ShowDetail = True Then
          Selection.ShowDetail = False
      End If
  intFehler = 0
  End With
  
MoreInnerDetail:
  Select Case intFehler
    Case 1
  '    MsgBox intFehler & ":  " & Err.Number & " " & Err.Description
      MsgBox "Bitte Button mit Pivot-Feldname selektieren!"
    Case 2
  '    MsgBox intFehler & ":  " & Err.Number & " " & Err.Description
      Select Case Err.Number
        Case 13
          MsgBox "Detail-Ein-/Ausblenden für dieses Pivot-Feld nicht möglich!"
        Case 1004
          Set cmdBarCntr = Application.CommandBars.FindControl(ID:=462)
          cmdBarCntr.Execute
        Case Else
          MsgBox intFehler & ":  " & Err.Number & " " & Err.Description
      End Select
  End Select
End Sub




  

Betrifft: AW: Fehler in Pivot/Show Details;Errorhandling versagt von: Andreas Hanisch
Geschrieben am: 19.08.2008 14:34:25

Hallo Franz,

schön, Dich wieder hier im Forum zu sehen!

Ich habe Deinen Code eingesetzt und getesetet. Für das PivotDataField funktinoiert das Errorhandling, jedoch leider nicht für den Fall, daß ich auf PageFields positioniert bin. Dann färbt er folgende Zeile ein:

"cmdBarCntr.Execute"

Bei der Analyse bin ich auch über den "Case 13" in der IntFehler Behandlung gestolpert. Ich konnte mir nicht erklären, wo dieser Case definiert wird.

Kannst Du mir da noch einmal einen Rat geben?

Danke Dir.

Viele Grüße, Andreas


  

Betrifft: AW: Fehler in Pivot/Show Details;Errorhandling versagt von: fcs
Geschrieben am: 20.08.2008 09:18:18

Hallo Andreas,

dann muss zusätzlich geprüft werden, ob die selektierte Zelle einen Seitenfeld-Namen enthält. Hoffe das klapt jetzt.

Gruß
Franz

Sub Pivot_ShowDetailsOnOff()
  Dim cmdBarCntr As CommandBarControl
  Dim pvTable As PivotTable
  Dim intFehler As Variant
  Dim objPVField As PivotField
  
  Set pvTable = ActiveSheet.PivotTables(1)
  If Selection.Cells.Count > 1 Then Exit Sub
  
  On Error GoTo MoreInnerDetail
  
  intFehler = 1
  With pvTable.PivotFields(Selection.Value)
  intFehler = 2
      If .PivotItems(1).ShowDetail = False Then
          Selection.ShowDetail = True
      ElseIf .PivotItems(1).ShowDetail = True Then
          Selection.ShowDetail = False
      End If
  intFehler = 0
  End With
  
MoreInnerDetail:
  Select Case intFehler
    Case 1
  '    MsgBox intFehler & ":  " & Err.Number & " " & Err.Description
      MsgBox "Bitte Button mit Pivot-Feldname selektieren!"
    Case 2
  '    MsgBox intFehler & ":  " & Err.Number & " " & Err.Description
      Select Case Err.Number
        Case 13
          MsgBox "Detail-Ein-/Ausblenden für dieses Pivot-Feld nicht möglich!"
        Case 1004
          For Each objPVField In pvTable.PageFields
            If Selection.Value = objPVField.Name Then
              MsgBox "Für Seitenfelder können keine Details ein-/ausgeblendet werden!"
              Exit Sub
            End If
          Next
          Set cmdBarCntr = Application.CommandBars.FindControl(ID:=462)
          cmdBarCntr.Execute
        Case Else
          MsgBox intFehler & ":  " & Err.Number & " " & Err.Description
      End Select
  End Select
End Sub




  

Betrifft: AW: Fehler in Pivot/Show Details;Errorhandling versagt von: Andreas Hanisch
Geschrieben am: 22.08.2008 21:52:28

Hallo Franz,

entschuldige die späte Antwort. Ich hatte erst nun Zeit Deinen Code zu testen und mir etwas genauer anzusehen. Er läuft wunderbar. Mir ist nun auch klar, was es mit den Case Selects auf sich hat, die nirgendwo definiert sind. Sie beziehen sich auf die Error Number, einem eigenständigen VBA Objekt! Also habe ich gleich noch ein bißchen dazu in der VBA Hilfe gelesen. Das in Verbindung mit dem Prüfen auf die Orientation bringt für ne Menge Pivot Makros neue Ideen! Danke Dir für Deine Unterstützung und neue Inspiration.

Habe ein schönes Wochenende.

Grüße, Andreas


 

Beiträge aus den Excel-Beispielen zum Thema "Fehler in Pivot/Show Details;Errorhandling versagt"