Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenschnitt Vorauswahl per VBA

Forumthread: Datenschnitt Vorauswahl per VBA

Datenschnitt Vorauswahl per VBA
19.11.2014 14:21:11
Peter
Hallo,
ich möchte für einen Datenschnitt eine Vorauswahl treffen, die ich mit einem Klick aktivieren kann. Hierzu benutze ich folgenden Code:

Sub AuswahlLand()
Application.ScreenUpdating = False
ActiveWorkbook.SlicerCaches("Datenschnitt_Land").ClearManualFilter
With ActiveWorkbook.SlicerCaches("Datenschnitt_Land")
.SlicerItems("D").Selected = True
.SlicerItems("E").Selected = True
'wie kann ich alle, die "False" sind, zusammenfassen?
.SlicerItems("F").Selected = False
.SlicerItems("N").Selected = False
End With
Application.ScreenUpdating = True
End Sub

Jetzt meine Frage: Wie kann ich alle Items, die nicht ausgewählt werden sollen, als die FALSE sind, zusammenfassen. Hier habe ich nur ein Beispiel, in meiner richtigen Tabelle können mehrere hundert Items auftauchen und der Code wird zu lang...
Habt ihr einen Tipp für mich?
Besten Dank vorab und viele Grüße,
Peter

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenschnitt Vorauswahl per VBA
19.11.2014 18:42:03
Luschi
Hallo Peter,
versuch es mal so:

Sub AuswahlLand()
Dim sC As SlicerCache, dic As Object, it As Object, _
s As String, i As Integer, arr As Variant
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
'hier alle alle Slicers , die aktiviert sein sollen, kommagetrennt angeben
s = "D,E"
arr = Split(s, ",", -1, vbTextCompare)
Set dic = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(arr)
dic.Add Trim(arr(i)), ""
Next i
Set sC = ActiveWorkbook.SlicerCaches("Datenschnitt_Land")
With sC
.ClearManualFilter
For Each it In .SlicerItems
If (Not dic.exists(it.Name)) Then
it.Selected = False
End If
Next it
End With
dic.RemoveAll
Erase arr
Set dic = Nothing
Set sC = Nothing
Set it = Nothing
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Datenschnitt Vorauswahl per VBA
20.11.2014 07:57:40
Peter
Moin Luschi,
ich danke dir vielmals! Klappt perfekt!
Beste Grüße,
Peter
;
Anzeige

Infobox / Tutorial

Datenschnitt Vorauswahl per VBA


Schritt-für-Schritt-Anleitung

Um eine Vorauswahl für einen Datenschnitt in Excel mit VBA zu treffen, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ > Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub AuswahlLand()
       Dim sC As SlicerCache, dic As Object, it As Object, _
       s As String, i As Integer, arr As Variant
       Application.ScreenUpdating = False
       Application.EnableEvents = False
       Application.Calculation = xlCalculationManual
    
       ' Definiere die SlicerItems, die ausgewählt werden sollen
       s = "D,E"
       arr = Split(s, ",", -1, vbTextCompare)
       Set dic = CreateObject("Scripting.Dictionary")
       For i = 0 To UBound(arr)
           dic.Add Trim(arr(i)), ""
       Next i
    
       Set sC = ActiveWorkbook.SlicerCaches("Datenschnitt_Land")
       With sC
           .ClearManualFilter
           For Each it In .SlicerItems
               If (Not dic.exists(it.Name)) Then
                   it.Selected = False
               End If
           Next it
       End With
    
       dic.RemoveAll
       Erase arr
       Set dic = Nothing
       Set sC = Nothing
       Set it = Nothing
       Application.ScreenUpdating = True
       Application.EnableEvents = True
       Application.Calculation = xlCalculationAutomatic
    End Sub
  4. Schließe den VBA-Editor und teste das Makro in deiner Excel-Datei.


Häufige Fehler und Lösungen

  • Fehler: „SlicerCache nicht gefunden“:

    • Stelle sicher, dass der Name des SlicerCaches korrekt ist. Überprüfe, ob „Datenschnitt_Land“ in deiner Excel-Datei existiert.
  • Fehler: „Objektvariable nicht gesetzt“:

    • Dies kann passieren, wenn der SlicerCache nicht ordnungsgemäß referenziert wird. Achte darauf, dass der SlicerCache aktiv ist und die richtigen Daten verwendet.

Alternative Methoden

Eine alternative Methode ohne VBA ist, die Filter direkt im Datenschnitt zu setzen:

  1. Klicke auf den Datenschnitt.
  2. Halte die STRG-Taste gedrückt und wähle die gewünschten Elemente aus.
  3. Mit einem Rechtsklick kannst du die Auswahl speichern oder zurücksetzen.

Diese Möglichkeit ist zwar nicht automatisiert, eignet sich aber für einfache Anwendungsfälle.


Praktische Beispiele

Hier ist ein Beispiel, wie der oben genannte Code in einer Excel-Datei angewendet werden kann:

  • Angenommen, du hast einen Datenschnitt für Länder, und du möchtest die Länder „D“ und „E“ standardmäßig auswählen. Der VBA-Code sorgt dafür, dass alle anderen Länder abgewählt werden, was die Nutzung der sliceritems erleichtert.

Tipps für Profis

  • Nutze SlicerCaches: Diese sind besonders nützlich, wenn du mit mehreren Datenschnitten arbeitest. Dadurch kannst du effizienter durch die sliceritems navigieren.

  • Erstelle benutzerdefinierte Funktionen: Das Erstellen von Funktionen, die unterschiedliche SlicerCaches verwalten, kann die Wiederverwendbarkeit deines Codes erhöhen.

  • Debugging: Verwende Debug.Print innerhalb deines Codes, um den Status von Variablen und Objekten während der Ausführung zu überprüfen.


FAQ: Häufige Fragen

1. Wie kann ich mehrere SlicerCaches gleichzeitig ansprechen?
Du kannst mehrere SlicerCaches in deinem VBA-Code ansprechen, indem du den entsprechenden Code für jeden SlicerCache innerhalb der gleichen Sub-Prozedur hinzufügst.

2. Funktioniert dieser Code in Excel 2016 und neuer?
Ja, der Code sollte in Excel 2016 und neueren Versionen problemlos funktionieren, solange die SlicerCaches korrekt benannt sind.

3. Was mache ich, wenn ich mehr SlicerItems hinzufügen möchte?
Füge einfach die gewünschten Werte in die Variable s hinzu, getrennt durch ein Komma.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige