[EXEL VBA] cel refreshen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • JosDeliver
  • Registratie: September 2017
  • Laatst online: 04-09-2021
Hallo,

Inmiddels al heel wat afgestruind en volgens mij geen moeilijke vraag, maar het is mij nog niet gelukt. Ik maak in excel gebruik van een macro die steeds een nieuwe waarde in het veld D4 zet op het tabblad Details. Wanneer hij dat gedaan heeft maakt hij er aan het eind een htm bestand van. Dit bestand wordt automatisch gepubliceerd.

Ik maak met een andere macro gebruik om te filteren in een draaitabel, zie onderstaande. Dit werkt helemaal prima, Maar de waarde die wordt gevuld in de cel D4 wordt niet automatisch gepusht naar de draaitabel. Dus er is wel een nieuwe waarde D4, maar de draaitabel bevat de oude waarde. Deze moet nog ververst worden. Hiervoor moet ik op cel D4 gaan staan en dan 'F2' + 'Enter' doen. Dit moet vast met een kleine toevoeging aan de macro te fixen zijn

Wie kan mij helpen?

Alvast bedankt,
Jos
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
If Intersect(Target, Range("D4")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Details").PivotTables("Draaitabel4")
Set xPFile = xPTable.PivotFields("Project")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
ActiveSheet.Calculate
End Sub

Alle reacties


Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 16:04

g0tanks

Moderator CSA
Geen idee of het werkt, maar Range.Calculate al geprobeerd?

code:
1
Worksheets("Details").Range("D4").Calculate

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • JosDeliver
  • Registratie: September 2017
  • Laatst online: 04-09-2021
Bedankt voor je snelle reactie. Had al wel zoiets gevonden, maar toch nog even getest. Jammer genoeg is dat niet de oplossing.

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 16:04

g0tanks

Moderator CSA
Je zou iets kunnen proberen met SendKeys om een handmatige refresh na te bootsen. Iets dat lijkt op:
code:
1
2
3
Range("D4").Select
SendKeys "{F2}"
SendKeys "{ENTER}"

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • JosDeliver
  • Registratie: September 2017
  • Laatst online: 04-09-2021
Nope, wat varianten geprobeerd met ActiveSheet.Range(etc..) maar is nog niet functioneel.

Acties:
  • +1 Henk 'm!

  • Onoffon
  • Registratie: April 2006
  • Laatst online: 05-10 16:12
Je kan macro's opnemen, dus 1x handmatig uitvoeren en dan kun je ook de bijbehorende VBA code zien.

Just a simple thought....


Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 12:32
Tip: Google eens op "VBA refresh pivot tables". Een alternatief is dat je de macro gaat opnemen en vervolgens de draaitabel handmatig ververst, die bevat dan ook de code die je nodig hebt om de draaitabel te verversen.

Range.Calculate werkt niet omdat hij dan een bereik opnieuw gaat berekenen, dat is hier niet nodig. De cel heeft al de juiste waarde, het gaat alleen om het verversen van de draaitabel en dat doe je niet met Range.Calculate.

[ Voor 34% gewijzigd door Arjan90 op 31-03-2019 08:02 ]

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • JosDeliver
  • Registratie: September 2017
  • Laatst online: 04-09-2021
Onoffon schreef op zondag 31 maart 2019 @ 07:53:
Je kan macro's opnemen, dus 1x handmatig uitvoeren en dan kun je ook de bijbehorende VBA code zien.
@Onoffon Ja dat kan en dat werkt ook :) maar hoe zorg ik ervoor dat hij deze macro standaard uitvoert met mijn andere macro's en dit steeds als laatste stap doet voordat de macro opnieuw begint?

Dan zou dat namelijk de fix zijn waarnaar ik opzoek ben :*)

Acties:
  • 0 Henk 'm!

  • Onoffon
  • Registratie: April 2006
  • Laatst online: 05-10 16:12
Je kan de code van jouw opgenomen macro toch samenvoegen met je bestaande macro's, of mis ik iets?

Just a simple thought....


Acties:
  • 0 Henk 'm!

  • JosDeliver
  • Registratie: September 2017
  • Laatst online: 04-09-2021
Inmiddels mijn excel-bestand even geanonimiseerd, zodat het allemaal wat makkelijker praat.

Op het tabblad 'Instellingen' heb je een knop 'Analyse publiceren'. Deze zorgt ervoor dat er in de map (genoemd in cel C12) htm-bestanden worden gepubliceerd. Per project 2 bestanden: Dashboard en Details. Uiteindelijk worden deze bestanden op ons intranet geplaatst.

Het issue is dat de gegevens op het tabblad Details niet worden geüpdatet met de gegevens van het geselecteerde project.
Het doel is dat ik de antwoorden op open vragen netjes ophaal per project. Hiervoor misbruik ik een draaitabel. Als daar betere opties voor zijn, is dat natuurlijk ook prima.

Overigens, goed om te weten dat ik een Macro dummie ben, dit bestand heb ik aangeleverd gekregen en probeer wat extra's eraan toe te voegen.

Hier een link waar je het bestand kan downloaden:
https://we.tl/t-Xz8dPeIHNy

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 03-10 22:17
Probeer eens:
code:
1
Worksheets("Details").PivotTables("Draaitabel4").RefreshTable

Acties:
  • 0 Henk 'm!

  • JosDeliver
  • Registratie: September 2017
  • Laatst online: 04-09-2021
mhoogendam schreef op dinsdag 2 april 2019 @ 11:34:
Probeer eens:
code:
1
Worksheets("Details").PivotTables("Draaitabel4").RefreshTable
Jammer, werkt niet :/

Acties:
  • +1 Henk 'm!

  • JosDeliver
  • Registratie: September 2017
  • Laatst online: 04-09-2021
Voor de mensen die nieuwsgierig zijn hoe dit is afgelopen.

Credits gaan naar Cow18 via https://www.helpmij.nl/fo...aaitabellen-uit-celwaarde
D4 verwijst naar "Entiteit" (C21 van Instellingen).
Als je die "entiteit" verandert, dan krijg je daar een change-event, maar geen change-event van jouw D4, logisch !
Dus moet je werken met de change-event van "Entiteit" in dat werkblad "Instellingen" ofwel van een andere event gebruik maken, bv. het worksheet_Activate-event van "Details"

Met je F2+Enter heb je alsnog een change-event gemaakt en die werd dan correct afgehandeld.
Op het blad "instellingen" maak ik gebruik van Worksheet_change obv cel C21, waarmee ik tabblad "details" activeer. Vervolgens met de functie Worksheet_activate ververs ik de specifieke cel D4. Dit geeft het gewenste resultaat

Gr. Jos
Pagina: 1