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

Forumthread: Datenschnitt If Abfrage

Datenschnitt If Abfrage
08.12.2018 21:29:28
Christian
Moin alle zusammen,
gibt es eine Möglichkeit einen Datenschnitt einer Pivot Tabelle eine Abfrage über VBA zuzuweisen?
Je nachdem auf welches Feld der Nutzer Klickt, soll ein anderer Begriff in der Zelle G3 erscheinen.
Leider bekomme ich bei dieser Struktur einen Fehler. Habt Ihr eine Idee?
Beste Grüße
Chris
Option Explicit
Sub Pivot_Lager_Klicken()
With ActiveWorkbook.SlicerCaches("LagerC")
If .SlicerItems("A").Selected Then
.Range("G3").Value = "MSN 85"
ElseIf SlicerItems("B").Selected Then
.Range("G3").Value = "MSN 58"
ElseIf SlicerItems("C").Selected Then
.Range("G3").Value = "MSN 65"
End If
End With
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenschnitt If Abfrage
09.12.2018 03:56:42
fcs
Hallo Chris,
vor ".Range" muss ein Tabellenblatt-Ojekt stehen.
Entweder ActiveSheet oder ein bestimmtes Tabellenblatt.
Außerdem fehlt noch Punkt vor 2 "SlicerItems"
Gruß
Franz
Option Explicit
Sub Pivot_Lager_Klicken()
Dim wks as worksheet
set wks = ActiveWorkbook.Worksheets("Tabelle1")
With ActiveWorkbook.SlicerCaches("LagerC")
If .SlicerItems("A").Selected Then
wks.Range("G3").Value = "MSN 85"
ElseIf .SlicerItems("B").Selected Then
wks.Range("G3").Value = "MSN 58"
ElseIf .SlicerItems("C").Selected Then
wks.Range("G3").Value = "MSN 65"
End If
End With
End Sub

Anzeige
Beispielmappe
09.12.2018 11:26:58
Christian
Vielen Dank für deine Unterstützung Franz.
Jetzt läuft der Code zwar durch aber sobald ich im Datenschnitt auf einen der drei Buchstaben klicke, bleibt die Datenschnitt eingefroren. Das heisst ich kann ab diesen Moment klicken wie ich möchte, er nimmt keine weiteren Eingaben an.
Anbei meine Beispielmappe.
https://www.herber.de/bbs/user/125979.xlsm
Vielen Dank und beste Grüße
Christian
Anzeige
Hat wirklich keiner eine Idee? :(
09.12.2018 20:11:46
Christian
Hat wirklich keiner hier eine Idee, wie ich es schaffe, eine IF Abfrage in einen Datenschnitt zu integrieren?
AW: Hat wirklich keiner eine Idee? :(
11.12.2018 02:14:49
fcs
hallo Christian,
man darf das Makro nicht mit dem Slicer-Element verknüpfen. Dann wird das Slicer-Element blockiert.
Das Makro muss ausgeführt werden, nachdem die zugehörige Pivot-Tabelle aktualisiert wurde.
Dafür gibt es ein entsprechendes Ereignis-Makro, das unter dem Tabellenblatt mit dem Pivotbericht eingefügt werden muss.
Gruß
Franz
'Ereignismakro unter Tabellenblatt "pivot"
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Pivot_Lager_Klicken
End Sub
'Makro in einem allgemeinen Modul
Sub Pivot_Lager_Klicken()
Dim wks As Worksheet, objSlicerItem As SlicerItem
Set wks = ActiveWorkbook.Worksheets("Pivot")
With ActiveWorkbook.SlicerCaches("LagerC")
For Each objSlicerItem In .SlicerItems
With objSlicerItem
If .Selected Then
Select Case objSlicerItem.Name
Case "A": wks.Range("G3").Value = "MSN 85"
Case "B": wks.Range("G3").Value = "MSN 58"
Case "C": wks.Range("G3").Value = "MSN 65"
Case Else
wks.Range("G3").ClearContents
End Select
End If
End With
Next
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Datenschnitt mit If-Abfrage in Excel nutzen


Schritt-für-Schritt-Anleitung

Um einen Datenschnitt in einer Pivot-Tabelle mit einer If-Abfrage zu verknüpfen, kannst du die folgenden Schritte befolgen:

  1. Excel-Datenschnitt einfügen:

    • Klicke auf die Pivot-Tabelle und wähle den Tab „PivotTable-Analyse“.
    • Klicke auf „Datenschnitt einfügen“ und wähle das gewünschte Feld aus.
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Modul hinzufügen:

    • Klicke mit der rechten Maustaste auf „VBAProject (deineDateiName)“ und wähle „Einfügen“ > „Modul“.
  4. Code einfügen:

    • Füge den folgenden Code in das Modul ein:
    Option Explicit
    Sub Pivot_Lager_Klicken()
       Dim wks As Worksheet
       Set wks = ActiveWorkbook.Worksheets("Tabelle1")
       With ActiveWorkbook.SlicerCaches("LagerC")
           If .SlicerItems("A").Selected Then
               wks.Range("G3").Value = "MSN 85"
           ElseIf .SlicerItems("B").Selected Then
               wks.Range("G3").Value = "MSN 58"
           ElseIf .SlicerItems("C").Selected Then
               wks.Range("G3").Value = "MSN 65"
           End If
       End With
    End Sub
  5. Ereignismakro hinzufügen:

    • Gehe zum entsprechenden Tabellenblatt mit der Pivot-Tabelle und füge das folgende Ereignismakro ein:
    Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
       Pivot_Lager_Klicken
    End Sub
  6. Code testen:

    • Schließe den VBA-Editor und teste den Datenschnitt, indem du auf die verschiedenen Buchstaben klickst.

Häufige Fehler und Lösungen

  • Datenschnitt bleibt eingefroren:

    • Lösung: Stelle sicher, dass das Makro nicht direkt mit dem Slicer-Element verknüpft ist. Nutze stattdessen das Ereignismakro „Worksheet_PivotTableUpdate“.
  • Fehlermeldung bei SlicerItems:

    • Lösung: Überprüfe, ob du einen Punkt vor „SlicerItems“ hinzugefügt hast. Der korrekte Code sollte If .SlicerItems("A").Selected Then sein.

Alternative Methoden

Falls du keinen VBA-Code nutzen möchtest, kannst du auch die Bedingte Formatierung verwenden, um visuelle Hinweise auf Änderungen in der Pivot-Tabelle zu geben. Dabei wird jedoch keine direkte Abfrage wie bei VBA möglich sein.


Praktische Beispiele

Hier ist ein Beispiel für den VBA-Code, wie du den Datenschnitt mit If-Abfragen verwenden kannst, um spezifische Werte in eine Zelle zu schreiben:

Sub Pivot_Lager_Klicken()
    Dim wks As Worksheet
    Set wks = ActiveWorkbook.Worksheets("Pivot")
    With ActiveWorkbook.SlicerCaches("LagerC")
        For Each objSlicerItem In .SlicerItems
            If objSlicerItem.Selected Then
                Select Case objSlicerItem.Name
                    Case "A": wks.Range("G3").Value = "MSN 85"
                    Case "B": wks.Range("G3").Value = "MSN 58"
                    Case "C": wks.Range("G3").Value = "MSN 65"
                    Case Else: wks.Range("G3").ClearContents
                End Select
            End If
        Next
    End With
End Sub

Tipps für Profis

  • Fehlerbehebung: Nutze das Debugging-Tool im VBA-Editor, um Fehler im Code zu identifizieren.
  • Datenbankanbindung: Überlege, ob du die Daten aus einer externen Datenbank abrufen möchtest, um die Flexibilität der Pivot-Tabelle zu erhöhen.
  • Benutzerschnittstelle: Überlege, Makros über Schaltflächen in der Benutzeroberfläche auszuführen, um die Benutzerfreundlichkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich den Datenschnitt in Excel erstellen?
Klicke auf die Pivot-Tabelle und wähle „Datenschnitt einfügen“. Wähle das gewünschte Feld aus.

2. Warum funktioniert mein If-Abfrage-Code nicht?
Überprüfe, ob du das Tabellenblatt korrekt referenzierst und den Punkt vor „SlicerItems“ nicht vergessen hast.

3. Kann ich mehrere Datenschnitte gleichzeitig verwenden?
Ja, du kannst mehrere Datenschnitte für verschiedene Felder in deiner Pivot-Tabelle verwenden. Achte darauf, dass der VBA-Code entsprechend angepasst wird.

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