Új hozzászólás Aktív témák

  • szricsi_0917

    tag

    Sziasztok,

    Segítséget szeretnék kérni szeletelő szinkronizációban.
    2 különálló adatforrás van
    1.adatforrás:
    sc1 (évek)
    sc3(hónapok)
    2.adatforrás:
    sc2 (évek)
    sc4(hónapok)
    A terv, hogy az 1. adatforrás szeletelői alapján szinkronizálja a 2. adatforrás szeletelőit is.
    Az évek és a hónapok csoportosítás révén lettek létrehozva a kimutatásban.
    A probléma, hogy az évek megfelelően szinkronizálódnak viszont a hónapok nem. A hónapoknál nem átvált , ha 1-1 hónapot ki vagy be kapcsolok, de a nem aktív hónapokat nem kapcsolja ki az sc4 szeletelőjében így feleslegesen benne maradnak az sc3-hoz képest. Hol lehet a probléma?


    Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
    Dim sc1 As SlicerCache, sc2 As SlicerCache
    Dim sc3 As SlicerCache, sc4 As SlicerCache
    Dim si As SlicerItem
    Dim selectedNames1 As Collection, selectedNames3 As Collection
    Dim name As Variant

    ' --- Szeletelők ---
    Set sc1 = ThisWorkbook.SlicerCaches("Szeletelő_Év__Teljesítés_dátuma")
    Set sc2 = ThisWorkbook.SlicerCaches("Szeletelő_Év__dátum")
    Set sc3 = ThisWorkbook.SlicerCaches("Szeletelő_Hónap__Teljesítés_dátuma")
    Set sc4 = ThisWorkbook.SlicerCaches("Szeletelő_Hónap__dátum")
    Debug.Print "Pivot tábla neve: " & Target.name

    ' Csak a megfelelő pivot táblára futtatjuk
    If Target.name <> "Bevételek-kiadások/hónap/főkategória" Then
    Debug.Print "Nem a megfelelő pivot tábla, kilépés"
    Exit Sub
    End If

    Application.EnableEvents = False
    Application.ScreenUpdating = False

    ' --- 1->2 szinkronizálás ---
    Set selectedNames1 = New Collection
    For Each si In sc1.SlicerItems
    If si.Selected Then selectedNames1.Add si.name
    Next si
    sc2.ClearManualFilter
    For Each si In sc2.SlicerItems
    si.Selected = False
    For Each name In selectedNames1
    If si.name = name Then si.Selected = True
    Next name
    Next si
    ' --- 3->4 szinkronizálás ---
    Set selectedNames3 = New Collection
    For Each si In sc3.SlicerItems
    Debug.Print "sc3", si.Caption, si.name
    If si.Selected Then selectedNames3.Add si.name
    Next si
    sc4.ClearManualFilter
    For Each si In sc4.SlicerItems
    si.Selected = False
    For Each name In selectedNames3
    Debug.Print "sc4", si.Caption, si.name
    If si.name = name Then si.Selected = True
    Next name
    Next si
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    End Sub

Új hozzászólás Aktív témák