Volgorde uitvoeren macro

Status
Niet open voor verdere reacties.

jostridec

Gebruiker
Lid geworden
20 sep 2011
Berichten
7
Hallo,

Ik importeer data met excel wat ik daarna analyseer en grafieken van teken. Het is de bedoeling dat er een PDF bestandje van geprint wordt. Dit PDF printje wordt door een macro uitgevoerd en als hij hier mij klaar is sluit hij excel af. Nu wil ik dit automatisch laten verlopen, dus als ik excel opstart dat hij dan eerst de data importeert, analyseert en grafieken van tekent en dan PDF printje van maakt.
Ik heb het nu dat als ik excel opstart dat hij dan eerst de macro uitvoert en dan de data gaat importeren en de grafieken tekenen. Ik krijg dus een leeg PDF bestandje. Hoe kan ik dit andersom krijgen?

Groeten, Jos
 
Hoe bedoel je dat dit andersom gaat?

Ik zou zelf alle onderdelen in een eigen module maken en dan per onderdeel een sub.
Code:
Private Sub Workbook_Open()
Hier tussen sorteer je op de volgorde dat je alles wilt laten verlopen de onderdelen
End Sub
 
Wat ik gemaakt heb is dat er gegevens door excel worden geimporteerd. Dit gaat niet via een macro, maar zodra ik excel open. Daarna worden deze gegevens geanalyseerd of ze aan voorwaarden voldoen en in een grafiek getekent. Dit allemaal is geen macro.
De enige macro die er in zit is dat er een pdf bestandje van de grafieken wordt gemaakt. Ik krijg het niet voor elkaar dat excel de macro pas uitvoerd als de grafieken zijn getekend. Nu voert hij steeds eerst de macro uit en dan gaat hij de grafieken tekenen, wat resulteert in een pdfje zonder grafieken.
 
Kun je de macro niet laten kijken of de gegevens al aanwezig zijn, doordat er een bepaalde waarde aanwezig is?
 
Dat zou in principe ook kunnen. Dit had ik al een keer geprobeerd, maar was me toen niet gelukt. Dan zou ik een scriptje in de "Private Sub Workbook_Open()" moeten laten draaien die kijkt naar een cel en als die van waarde verandert dat deze dan mijn functie aanroept om het PDF te printen. Weet jij zo hoe dat moet?
 
Ik heb nu met de het volgende stukje code dat er een macro wordt uitgevoerd als de cel verandert:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   
   If Target.Address = "$D$138" Then
   //hier komt de code voor het PDF bestand te printen
   End If

End Sub

Dit werkt allemaal als ik zelf de waarde in cel D138 verander. Maar in cel D138 wordt het gemiddelde uitgerekent van de geimporteerde tekst, dan gebeurt er niks als dit uitgerekent wordt.
 
Dat klopt, Want in je macro staat als het veranderde bereik exact het adres $D$138 heeft, dan moet de pdf worden uitgeprint.

Als je echter een waarde aanpast die het resultaat van de formule verandert, verander je de formule zelf(dus de cel) echter niet, die blijft hetzeflde.

Daarom werkt je aanpak niet als je een andere cel als "$D$138"

Ik ben niet zo een fan van Worksheet_change event op een werkblad, maar je zou het volgende kunnen proberen: gewoon het hele argument Target niet gebruiken en kijken of D138 is gewijzigd.

Code:
Private D138 As Variant

Private Sub Worksheet_Change(ByVal Target As Range)
    If D138 <> vbNullString And Range("D138") <> D138 Then
        'print pdf etc...
    End If
    D138 = Range("D138")
End Sub

of

Code:
Private D138 As Variant

Private Sub Worksheet_Change(ByVal Target As Range)
    If D138 = vbNullString Then
        D138 = Range("D138")
    End If
    If Range("D138") <> D138 Then
        'print pdf etc...
    End If
End Sub
 
Laatst bewerkt:
Ik ben erachter gekomen dat het niet gaat werken. Bij het opstarten van Excel, worden eerst de waarden uitgerekend en als laatste worden de grafieken getekend. De macro moet dus eigenlijk reagren zodra de grafieken getekend zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan