Avatar billede jensen363 Forsker
18. juni 2021 - 10:38

Makro til at skifte datoer i mange pivottabeller

Eksempel :

Jeg har 10 pivot-tabeller som er genereret fra en OLAP Cube

Fælles for alle er, at der skal skiftes 2 datoer i alle 10 på een gang, hvilket jeg gerne vil gøre via en makro.

Nogle af disse pivot-tabeller er ret komplekse og tunge / tidskrævende at skifte datoer i, - men det kan lade sig gøre når jeg skifter dem manuelt/enkeltvis

Men når de er indbygget i en makro fejler de med locking conflict :-(

Hvorfor sker det, - er det fordi udskiftning af 1st dato og efterfølgende refresh ikke er færdig før næste data forsæges skiftet.

VBA ser således ud :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RDate_DASHBOARD As Range
    Dim PickUpYesterday As String

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
   
    Set RDate_DASHBOARD = Range("W2:W2")

On Error GoTo ErrorHandler

'WorkSheet PickUpYesterday - tested 17.06.2021
    RDate_PickUpYesterday = Worksheets("PickUpYesterday").Range("B1:B1")

    Worksheets("PickUpYesterday").PivotTables("PivotTable1").PivotFields( _
        "[Reporting Date].[Year - Month - Date].[Year]").CurrentPageName = _
        "[Reporting Date].[Year - Month - Date].[Date].&[" & RDate_PickUpYesterday & "]"
 
    Worksheets("PickUpYesterday").PivotTables("PivotTable1").PivotFields( _
        "[Date Booking].[Year - Month - Date].[Year]").CurrentPageName = _
        "[Date Booking].[Year - Month - Date].[Date].&[" & RDate_PickUpYesterday & "]"

    MsgBox "Update finished !"

ErrorHandler:
   
    MsgBox ("Error occurred while processing worksheet: " + ActiveSheet.Name)

End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester