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

Volgende macro niet laten starten

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
9.109
Besturingssysteem
Win11
Office versie
Office 365
Code:
Sub alles()

reset
importeren
uitsplitsen
vermenigvuldigen
kopieren

End Sub

Ik heb zo diverse macro's die achterelkaar moeten plaatsvinden.
het zijn aparte omdat ik ze ook afzonderlijk wil kunnen aanroepen.

In de eerste macro zit een vraag:
Code:
vraag = MsgBox("Wilt echt alle gegevens verwijderen?" , vbYesNo, "schonen")
Als er nee geantwoord wordt stopt de eerste macro.
Echter hij gaat verder met de volgende macro's
En dat wil ik eigenlijk niet.
Ik vermoed dat er dan iets moet komen van
"ga naar het einde van de laatste macro"
Maar kom je dan weer niet in de problemen als je de macro afzonderlijk aanvraagt.

Hoe los ik het op?
 
Als je het netjes wil doen, moet je nadat "nee" is geantwoord, naar het einde van de macro 'springen', waarna die dan beëindigd wordt. Veelal wordt voor deze snelle oplossing gekozen:
Code:
.....
vraag = MsgBox("Wilt u echt alle gegevens verwijderen?", vbYesNo, "schonen")
If vraag = vbNo Then Exit Sub
.....
 
Ik denk dat je me vraag niet goed begrijp.
Ik heb 5 macro's samengevoegd tot 1 macro:

Code:
Sub alles()
reset
importeren
uitsplitsen
vermenigvuldigen
kopieren
End Sub
In de macro 'reset' zit de vraag.
Als je dan nee zegt stopt de 'reset macro' maar hij gaat daarna verder met de macro 'importeren' en dat wil ik niet.
Door de nee moet dus niet alleen macro 'reset' stoppen maar de hele macro 'alles'
 
Je moet niet in een macro binnen een macro buiten andere macro's willen springen.
Je kunt daarom best de resetmacro zodanig aanpassen dat je de messagebox daarbuiten kunt plaatsen. Aldus:
Code:
sub alles()
reset
vraag = MsgBox("Wilt u echt alle gegevens verwijderen?", vbYesNo, "schonen")
If vraag = vbNo Then Exit Sub
importeren
uitsplitsen
vermenigvuldigen
kopieren
End Sub
 
Laatst bewerkt:
Je kunt ook het volgende doen met hetzelfde effect:
Verwijder deze regel: sub Alles()
Hernoem de resetmacro (waar de messagebox in zit) in Alles; je krijgt dan het volgende:
Code:
Sub Alles()
importeren
uitsplitsen
vermenigvuldigen
kopieren
End Sub
waarbij Sub Alles() in feite de resetmacro is, waar de andere macro's aan zijn toegevoegd.
Let op dat er op het eind nu geen 2 keer 'End sub' staat.
 
Je laatste antwoord is wat ik ingedachte had.
bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan