• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Datum in Pivot instellen d.m.v. een macro

Status
Niet open voor verdere reacties.

Remko1974

Gebruiker
Lid geworden
16 feb 2016
Berichten
20
Hoi,

ik ben er van overtuigd dat er iemand is die mij kan helpen.

Ik heb een aantal pivots, elke dag dien ik voor deze reportage de data opnieuw in te stellen. Dit kan gemakkelijk met een macro lijkt mij. Echter kan ik in een macro aangeven (ik ken geen programmataal alleen via record macro) dat er in een bepaalde pivot de datum elke dag ingesteld dient te worden als "de datum, 1 (werk)dag voor gisteren", of weer in een andere pivot aan te laten geven de datum van gisteren?


Is dit mogelijk met een marco dit elke dag weer zo in te stellen, rekeninghoudend met een weekend.

P.s. Ik gebruik de engelse versie van Excel.
 
Dat luistert nogal precies dus kan je beter ook even je document hier plaatsen.
 
Bekijk bijlage 260939

Als het goed is gegaan, zie je een att.

Ik heb twee pivots erin staan, waarbij ik gebruik maak van 2 Slicers voor de datum (aangezien er in de originele versie meerdere pivots staan en door een Slicer gemakkelijk de darum aangepast kan worden).

Hoe stuur ik die aan d.m.v. een macro en 2 data settings? 1 slicer op datum gisteren en de andere 1 (werk)dag voor gisteren?
 
Voor de slicer 1 (werk)dag voor gisteren.

Code:
Sub VenA()
Application.ScreenUpdating = False
With ActiveWorkbook.SlicerCaches("Slicer_Original_Loading_Date")
    .ClearManualFilter
    For Each si In .SlicerItems
        If Weekday(Date, 2) <= 2 Then si.Selected = si.Value = Format(Date - 4, "d-m-yyyy") Else si.Selected = si.Value = Format(Date - 2, "d-m-yyyy")
    Next
End With
End Sub
 
Thnks.... het werkt idd, maar welke code zou je toevoegen om de andere pivot op gisteren te zetten rekeninghoudend met weekenddagen die niet meetellen? Dus wat zou de totale code dan worden?

En als ik een opdracht voor meerdere pivots/slicers wil laten uitvoeren, bijvoorbeeld ook voor pivot/slicer "test", hoe voeg je dit toe aan de code beneden die nu alleen voor 1 pivot/slicer is ingesteld:

With ActiveWorkbook.SlicerCaches("Slicer_Original_Loading_Date")
 
Laatst bewerkt:
Voor de andere slicer
With ActiveWorkbook.SlicerCaches("Slicer_Requested_Delivery_Date1")

De juiste dag gaat vast wel lukken.
 
Laatst bewerkt:
If Weekday(Date, 2) <= 2 Then si.Selected = si.Value = Format(Date - 3, "d-m-yyyy") Else si.Selected = si.Value = Format(Date - 1, "d-m-yyyy")

zo neem ik dan aan?
 
instelling met dagen werkt, maar niet om de twee commando's te combineren:


Sub VenA()
Application.ScreenUpdating = False
With ActiveWorkbook.SlicerCaches("Slicer_Original_Loading_Date")
.ClearManualFilter
For Each si In .SlicerItems
If Weekday(Date, 2) <= 2 Then si.Selected = si.Value = Format(Date - 4, "d-m-yyyy") Else si.Selected = si.Value = Format(Date - 2, "d-m-yyyy")
Next
End With
End Sub
Sub VenA()
Application.ScreenUpdating = False
With ActiveWorkbook.SlicerCaches("Slicer_Requested_Delivery_Date1")
.ClearManualFilter
For Each si In .SlicerItems
If Weekday(Date, 2) <= 2 Then si.Selected = si.Value = Format(Date - 3, "d-m-yyyy") Else si.Selected = si.Value = Format(Date - 1, "d-m-yyyy")
End With
End Sub
 
De naam van een Sub mag maar 1x voor komen. Je moet dus de code combineren in 1 Sub.
 
Plaats svp code tussen tussen codetags dan had edmoor je er ook nog op gewezen dat je in de tweede sub een next mist.:D

Om de code samen te voegen kan je bv deze gebruiken.
Code:
Sub VenA()
Application.ScreenUpdating = False
With ActiveWorkbook
    .RefreshAll
    With .SlicerCaches("Slicer_Original_Loading_Date")
        .ClearManualFilter
        For Each si In .SlicerItems
            If Weekday(Date, 2) <= 2 Then si.Selected = si.Value = Format(Date - 4, "d-m-yyyy") Else si.Selected = si.Value = Format(Date - 2, "d-m-yyyy")
        Next si
    End With
    With .SlicerCaches("Slicer_Requested_Delivery_Date1")
        .ClearManualFilter
        For Each si In .SlicerItems
            If Weekday(Date, 2) <= 2 Then si.Selected = si.Value = Format(Date - 3, "d-m-yyyy") Else si.Selected = si.Value = Format(Date - 1, "d-m-yyyy")
        Next si
    End With
End With
End Sub
 
Zo is het bijvoorbeeld ook duidelijk dat er nu een Application.ScreenUpdating = True mist :p
 
Dat blijft altijd een beetje een discussiepunt. Waarom zou je deze aan willen hebben staan? Werkt alleen maar vertragend;)
 
Net voor de End Sub uiteraard.
 
De vraag was waarom zo je deze aan willen hebben staan en niet waar deze niet hoeft te staan.:d

In het voorbeeldje zal je zien dat het niet nodig is om het terug op TRUE te zetten.
 

Bijlagen

  • ScreenUpdating.xlsb
    16,4 KB · Weergaven: 42
Ok. Uiteraard moet hij weer aan staan maar kennelijk gebeurt dat automatisch bij het verlaten van de Sub.
 
Thnks all, al een heel stuk verder gekomen en jullie hulp daarbij heft geholpen.

Hou zou ik een opdracht kunnen geven om de datum vandaag te zetten voor een slicer? vanalles geprobeerd maar wil niet lukken.

Onderstaand is met een If functie, maar daar ga ik de mist waarschijnlijk in, hoe deze code in de juiste format te krijgen (vast heel simple als je het weet)........

Sub VenA()
Application.ScreenUpdating = False
With ActiveWorkbook.SlicerCaches("Slicer_Original_Loading_Date")
.ClearManualFilter
For Each si In .SlicerItems
If Weekday(Date, 2) <= 2 Then si.Selected = si.Value = Format(Date - 4, "d-m-yyyy") Else si.Selected = si.Value = Format(Date - 2, "d-m-yyyy")
Next
End With
End Sub
 
Had ik ergens iets geschreven over codetags?

Volgens mij is dit voldoende

Code:
For Each si In .SlicerItems
   si.Selected = si.Value = Format(Date, "d-m-yyyy")
Next
 
Had ik ergens iets geschreven over codetags?

Volgens mij is dit voldoende

Code:
For Each si In .SlicerItems
   si.Selected = si.Value = Format(Date, "d-m-yyyy")
Next

Ik krijg het niet voor elkaar. Wat je geeft aan code is niet voldoende om de slicer aan te geven de datum van vandaag te selecteren. Er moet waarschijnlijk nog iets voor of deze is niet juist:

si.Selected = si.Value = Format(Date, "d-m-yyyy")

Ik ben niet bekend met programmataal, dus wie kan mij helpen de slicer "Loading Date" de datum van vandaag te selecteren middels een macro?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan