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

controle macro om af te sluiten

Status
Niet open voor verdere reacties.

1107972

Gebruiker
Lid geworden
5 mei 2004
Berichten
186
Goedendag,

Ik ben weer ff verder gegaan met het verbeteren van het WK poule bestand dat ik heb gemaakt en nu loop ik vast bij het maken van een bepaalde macro (macro bestaat uit meerdere delen).

Macro 1: Op het moment dat ik gekozen word om het excel bestand te sluiten moet een macro/application uitgevoerd worden. Ik dacht aan ongeveer de volgende macro in this workbook, maar volgens mij klopt de event niet helemaal.

Code:
Private Sub Workbook_BeforeClose()
    Application.Run ("afsluiten1")
End Sub

Macro 2: In deze macro word de inhoud van een bepaalde cel gecontroleerd, aan de hand van de inhoud wordt een vraag gesteld die met ja en nee beantwoord kan worden. Bij Ja moet macro afsluiten2 geactiveerd worden. Dit gebeurd ook, bij nee moet het afsluiten van het bestand geannuleerd worden. En daarna een cel geselecteerd worden. Welke functie moet ik bij de vraagtekens zetten?

Code:
If Response = vbYes Then
        MyString = Application.Run("afsluiten2")
        Else
        MyString = ????
                        Range("S4").Select
        End If

Macro 3: De gebruiker heeft toegestemd met de inhoud van de betreffende cel en gaat verder met afsluiten. Excel controleert nu of de laatste wijzigingen zijn opgeslagen. Omdat excel dit zo ie zo al doet dacht ik dat enkel de actie quit voldoende was. Helaas krijg je volgens mij hierdoor een kring verwijzing met macro 1. Hoe kan ik dit het beste oplossen?
Ik speel met het idee om de actie quit geheel te verwijderen omdat die toch al uitgevoerd word op het moment dat je macro 1 laat starten. Maar zolang die nog niet goed werkt kan ik dat ook niet testen.

Code:
Sub afsluiten2()
Application.Quit
End Sub

Alvast bedankt, Eric
 
Macro1:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'plaats hier de actie..
End Sub

zou moeten werken
 
Macro2:
door de code in het event te plaatsen denk ik dat het iets makkelijker is:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "You are not allowed to close this file!", vbInformation + vbOKOnly
Cancel = True
End Sub
 
Ik heb je aanname voor de oneindige Event Triggering niet gecontroleert maar met deze techniek kan je dat omzeilen:

Code:
'Vlag om te kijken of het afsluiten al ingang is gezet
Dim BeforeCloseInProgress as boolean

Private Sub Workbook_BeforeClose()
    if  BeforeCloseInProgress Then Exit Sub
    BeforeCloseIProgress = True
    Application.Run ("afsluiten1")
    BeforeCloseInProgress = False
End Sub

op deze manier wordt de code nooit dubbel uitgevoerd


See Ya!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan