Microsoft Excel

Herbers Excel/VBA-Archiv

Datenschnitt If Abfrage


Betrifft: Datenschnitt If Abfrage
von: Christian
Geschrieben am: 08.12.2018 21:29:28

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

  

Betrifft: AW: Datenschnitt If Abfrage
von: fcs
Geschrieben am: 09.12.2018 03:56:42

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



  

Betrifft: Beispielmappe
von: Christian
Geschrieben am: 09.12.2018 11:26:58

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.

http://www.herber.de/bbs/user/125979.xlsm

Vielen Dank und beste Grüße
Christian


  

Betrifft: Hat wirklich keiner eine Idee?? :(
von: Christian
Geschrieben am: 09.12.2018 20:11:46

Hat wirklich keiner hier eine Idee, wie ich es schaffe, eine IF Abfrage in einen Datenschnitt zu integrieren??


  

Betrifft: AW: Hat wirklich keiner eine Idee?? :(
von: fcs
Geschrieben am: 11.12.2018 02:14:49

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