Microsoft Excel

Herbers Excel/VBA-Archiv

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

VBA Gruppierung - Fehler bei einem Element abfange

Betrifft: VBA Gruppierung - Fehler bei einem Element abfange von: Markus
Geschrieben am: 04.11.2014 08:48:54

Hallo zusammen,

ich bin neu hier und freue mich schon auf eure Hilfe.

Leider habe ich bei VBA ein Problem.

Bei der Gruppierung von Elementen in einer Pivot-Tabelle via VBA Code kann es in meinen Daten vorkommen, dass die Auswahl nur ein Element enthält und dies kann bei Pivots nicht gruppiert werden (endet mit einer Fehlermeldung).

Behelfsweise habe ich diese Möglichkeit folgendermaßen ausgeschlossen:

[...]

On Error GoTo FailureGroupMasterSupplierCompetitor
ActiveSheet.PivotTables(wsPivotTableName).PivotSelect _
"'Master Supplier'[Beispiel1,Beispiel2,Beispiel3]", xlDataAndLabel, True
Selection.Group
ActiveSheet.PivotTables(wsPivotTableName).PivotFields("Master Supplier2"). _
PivotItems("Gruppe1").Caption = "IHR"

FailureGroupMasterSupplierCompetitor:

On Error GoTo FailureGroupMasterSupplierTRW
ActiveSheet.PivotTables(wsPivotTableName).PivotSelect _
"'Master Supplier'[Beispiel4,Beispiel5,Beispiel6]", xlDataAndLabel, True
Selection.Group
With ActiveSheet.PivotTables(wsPivotTableName).PivotFields("Master Supplier2").PivotItems("Gruppe2")
.Caption = "WIR"
.Position = 1
End With

FailureGroupMasterSupplierTRW:

[...]


Das funktioniert an und für sich ganz gut, allerdings möchte ich eigentlich lieber zunächst auslesen, wie viele Elemente selektiert wurden und bei Anzahl größer 1 gruppieren und ansonsten nicht.

Im oben genannten Beispiel kann es beispielsweise vorkommen, dass die Gruppe 2 nur "Beispiel1" enthält und dieses eine Element für sich genommen nicht gruppiert werden kann.

Außerdem habe ich noch das Problem, dass ich eigentlich gleich bei Gruppenerstelleung die Gruppe benennen möchte und nicht erst die "Gruppe 1" generiert wird und ich diese dann umbenenne.

Ganz schön viele Probleme, aber ich hoffe jemand von euch kann mir helfen.

Wenn ich mich nicht an irgendwelche Regeln hier gehalten habe, bitte ich dies zu entschuldigen (ein Hinweis wäre hilfreich, dass es nicht wieder vorkommt).

Vielen herzlichen Dank euch allen für eure Hilfe.

Grüße
Markus

  

Betrifft: AW: VBA Gruppierung - Fehler bei einem Element abfange von: fcs
Geschrieben am: 05.11.2014 14:48:57

Hallo Markus,

die Gruppierung zu steuern wird relativ kompliziert.

Einfacher wäre es, wenn du in den Quelldaten eine Spalte/Feld einfügen könntest, um WIR/IHR bei den Mastersuppliern einzutragen.

Die Änderung der Beschriftung kann man meines Wissens nicht anders realiiseren, als den automatisch generierten Gruppennamen nachträglich umzubenennen.

Gruß
Franz

Sub aa()
  Dim arrIHR, arrWIR, intWIR, intIHR, strIHR As String, strWIR As String
  Dim pvItem As PivotItem, varItem
  Dim pvTab As PivotTable
  
  wsPivotTableName = 1 '### Testzeile ###

  arrIHR = Array("Beispiel1", "Beispiel2", "Beispiel3") 'IHR-Pivotitems
  arrWIR = Array("Beispiel4", "Beispiel5", "Beispiel6") 'WIR-Pivotitems
  
  Set pvTab = ActiveSheet.PivotTables(wsPivotTableName)
  
  For Each pvItem In pvTab.PivotFields("Master Supplier").PivotItems
    For Each varItem In arrIHR
      If pvItem.Name = varItem Then
        intIHR = intIHR + 1
        strIHR = strIHR & "," & varItem
        Exit For
      End If
    Next
    For Each varItem In arrWIR
      If pvItem.Name = varItem Then
        intWIR = intWIR + 1
        strWIR = strWIR & "," & varItem
        Exit For
      End If
    Next
  Next
'On Error GoTo FailureGroupMasterSupplierCompetitor
  If intIHR > 1 Then
    strIHR = Mid(strIHR, 2)
    pvTab.PivotSelect "'Master Supplier'[" & strIHR & "]", xlDataAndLabel, True
    Selection.Group
    pvTab.PivotFields("Master Supplier2"). _
    PivotItems("Gruppe1").Caption = "IHR"
  End If
  
'FailureGroupMasterSupplierCompetitor:
'Err.Clear
'On Error GoTo FailureGroupMasterSupplierTRW
  
  If intWIR > 1 Then
    strWIR = Mid(strWIR, 2)
    pvTab.PivotSelect "'Master Supplier'[" & strWIR & "]", _
        xlDataAndLabel, True
    Selection.Group
    With pvTab.PivotFields("Master Supplier2").PivotItems("Gruppe2")
      .Caption = "WIR"
      .Position = 1
    End With
  End If

'FailureGroupMasterSupplierTRW:

End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "VBA Gruppierung - Fehler bei einem Element abfange"