• 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.

Automatische meting

Status
Niet open voor verdere reacties.

Jon12

Gebruiker
Lid geworden
10 apr 2017
Berichten
76
Beste Excel-vaklui:

In de bijlage heb ik een lijst gestuurd waar ik ooit al eerder iets over gevraagd heb. In de tab overview staan gegevens in een pivot-tabel. Deze gegevens worden aangeleverd vanuit een query die ik wegens beroepsrecht niet mag meesturen.

In cel N1 staat een verwijzing naar de cel die het aantal lijnen weergeeft. In dit voorbeeld is dat cel D50, maar bij het draaien van de query verandert dit, dus daarom de verwijzing.
In cel N2 staat een verwijzing naar de cel die het aantal items weergeeft. In dit voorbeeld is dat cel E50, maar bij het draaien van de query verandert dit, dus daarom de verwijzing.

In de tab Measure pickrelease houdt ik bij hoeveel lijnen en items we (drie keer per dag) verwerken en met hoeveel orderverzamelaars en inpakkers.

Ook heeft het bestand een VBA-code die ervoor zorgt dat alles wat in tab Overview in cel N1 en N2 staat automatisch in tab Measure pickrelease kolom C en D wordt weergegeven.

Het probleem is dat wanneer ik de query draai er helemaal niks gebeurt. Wanneer ik handmatig een getal in cel N1 of N2 typ wordt deze inderdaad automatisch in het volgend tabblad ingevoerd. Wanneer ik éénmaal ongedaan maken (CTRL Z) kies, komt ook het getal volgens de verwijzing erin te staan.

De vraag: Hoe zorg ik ervoor dat de code ook werkt door het opnieuw draaien van de query en het getal van de verwijzing dus direct in het volgend tabblad komt? (overigens wel met het draaien van de query, maar nog niet met het opstarten van het bestand)

Oh ja, de code kan korter, maar ik houdt het graag bij mijn eigen niveau, ik ben nog lerende ; )
 

Bijlagen

  • Kopie van Template pickrelease - Copy.xlsx(2598).xlsm
    73,2 KB · Weergaven: 63
161 keer bekeken en het bestandje 13x geeft toch iets aan...
 
Niet verwacht dat ik iets te ingewikkelds voor jullie zou plaatsen VenA, jullie zijn hier toch beter in dan ik. Maar goed, dan zal het wel niet kunnen.
 
Of 'we' beter zijn dan jij kan ik niet beoordelen. Voor mij is het een onleesbare lap tekst waar ik geen concrete vraag uit op kan maken. En blijkbaar ben ik niet de enige
 
Zet het in de calculate_event ipv van de change_event.
Een formule die wijzigt is geen trigger voor de target_change met intersect(target,...
 
Sorry VenA, mss maakt dit het iets duidelijker:

VBA code werkt wanneer ik handmatig cijfers typ in cel N1 en N2 in tab overview. Hoe werkt de code ook wanneer ik in cel N1 een celverwijzing maak naar een andere cel?

Gegevens in die andere cel staan in een pivot-tabel en veranderen door een query.

@HSV zegt mij niet zoveel, maar ik ga kijken of het lukt.
 
Hoi Jon12,

Misschien lukt het je om de opmerking van HSV te verwerken. Want dat is wel de oorzaak van je "probleem".

Alternatieve oplossing:
Als je daar niet uit komt, dan zou misschien ook aan een alternatief kunnen denken door nog wat vba te gebruiken voor het kopiëren en plakken van de waarden in cel N1 en N2 (na dat de draaitabel is vernieuwd).
(Of je gebruikt de verwijzing in cel N1 en N2 en deze houdt je intact en vervolgens copy/paste je de waarden in O1 en O2..)
 
Hoi Jos,

Dank je wel. Denk dat ik er wel iets mee kan. Ik ga er de aankomende paar dagen wat mee rommelen en dan laat ik weten of het gelukt is. Thnx!
 
Hoi heren,

Een copy en paste in de VBA er bij was geen succes omdat deze door de loop zichzelf herhaalt en het bestand blijft hangen. En met behulp van de TEKST-formule lukt het ook niet.

Waarschijnlijk is de Calculate-event inderdaad de enige optie, maar ik weet nog te weinig van de codes om dit juist te typen.
Ik kan er alleen maar mee blijven puzzelen.

In elk geval bedankt voor het meedenken en nogmaals sorry dat ik het niet duidelijker heb kunnen maken.
 
Ik heb het nu opgelost met een opgenomen Macro, die ik ctrl + y heb genoemd. De code die daaruit voort is gekomen zou ik ook moeten kunnen verwerken in de VBA-code, maar dan voert deze de reeks in het tweede blad totaal door. Continue loop = false toevoegen is niet voldoende. Is er een manier om onderstaande code wel dusdanig in de VBA-code te voegen dat deze maar één keer de actie uitvoert?

Code:
    Range("N1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=GETPIVOTDATA(""Count of Item"",R3C1)"
    Range("N2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=GETPIVOTDATA(""Sum of Requested Qty"",R3C1)"
    Range("N3").Select
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
 
Zet deze code eens in tabblad 'Overview'.
Bij een herberekening treedt de code in werking.

Code:
Private Sub Worksheet_Calculate()
 With Sheets("measure pickrelease").ListObjects(1)
  .Range(.ListRows.Count, 3).End(xlUp).Offset(1).Resize(, 2) = Array(Range("n1"), Range("n2"))
 End With
End Sub
 
Hoi Harry,

Dank je wel voor je antwoord!

Het maakt toch niet uit of de code in calculate onder of boven de change-code staat?

Het werkt namelijk deels.

1) Ik maak de cellen in tab Measure pickrelease kolom c en d onder Lines en Items leeg.
2) Ik verander de bron cellen in tab Overview naar 100 en 200
3) Nu verander ik de bron cellen in tab Overview naar 200 en 400
4) En voor de test voer ik nu 1 en 1 in de broncellen

Wat er moet gebeuren:

Tab overview:

cel c2 en d2: 100 en 200
cel c3 en d3: 200 en 400
cel c4 en d4: 1 en 1

Maar het volgende is gebeurd:

Tab overview:

cel c2 en d2: 100 en 0
cel c3 en d3: 100 en 200
cel c4 en d4: 200 en 200
cel c5 en d5: 200 en 400
cel c6 en d6: 1 en 400
cel c7 en d7: 1 en 1


Ergens wordt er dus iets berekend wat niet de bedoeling is. Heb je enig idee?

(Ik lees het op zijn vroegst morgenavond pas weer:eek:)

Mvg,

Jon
 
Gooi die change er eens uit.
Het zijn immers formules in n1 en n2.
 
Hoi Harry,

Bedoel je de complete code van de change eruit halen? Want dan gebeurt er niks meer. Moet ik soms een bepaald deel naar de calculate kopiëren voordat ik dit verwijder?
 
De gegevens veranderen toch door de query?
Dan zouden de formules in de beide cellen veranderen.
Anders zet je in een andere cel
: =N1*1
Dan heb je op die cel een berekening.
Nu kan de complete change_event code er uit.
 
Het duurt even voordat ik weer met het bestand aan de slag kan. Dus antwoord zal nog even uitblijven.
 
Heb nog wat hulp gehad van iemand, dus vraag mag als opgelost ingevuld worden.
 
Dat kan jezelf in je openingsvraag doen Jon.
 
Deze gegevens worden aangeleverd vanuit een query

Dan gebruik je toch gewoon de afterupdate-gebeurtenis van de query om de code uit te voeren.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan