Avatar billede nlr2000 Nybegynder
19. januar 2007 - 11:12 Der er 8 kommentarer og
1 løsning

Excel VBA: Exit sub eller lignende

Jeg har en makro:

sub test
call a
call b
call c
end sub

Nogle gange vil jeg midt i sub a lave en exit, så den stopper 100%. Dvs: Den skal ikke bare hoppe ud af a, men også lade være med at køre b og c.

Exit sub er ikke god nok, da den stopper a, men ikke b og c.

ER DER IKKE EN ANDEN FUNKTION END EXIT SUB, SOM STOPPER HELE SUB TEST?

PS: Ikke noget med at sætte en variabel="Stop" og derefter lade a og b afhænge af dette.
Avatar billede supertekst Ekspert
19. januar 2007 - 11:49 #1
Definer et "flag" (boolean), der sættes når du vil stoppe. Flaget testes før kald af de øvrige "sub´s"

Flaget skal defineres øverst i koden - så det er tilgængeligt overalt.
Avatar billede aidan Nybegynder
19. januar 2007 - 12:11 #2
Flaget skal vel også defineres som PUBLIC variabel, hvis a, b eller c er i andre moduler.
Avatar billede supertekst Ekspert
19. januar 2007 - 13:14 #3
Ja korrekt
Avatar billede learningvba Nybegynder
22. januar 2007 - 08:10 #4
Jeg plejer at bruge noget lignende det her:

Sub RunMe()
  If A Then
      Debug.Print "A True"
      If B Then
        Debug.Print "B True = AB True"
        If C Then
            Debug.Print "C True = ABC True"
        End If
      End If
  End If
End Sub

Function A() As Boolean
  A = True
End Function

Function B() As Boolean
  B = True
End Function

Function C() As Boolean
  C = True
End Function
Avatar billede nlr2000 Nybegynder
23. januar 2007 - 11:42 #5
Hmmm, jeg synes ikke, det rammer, det jeg vil have.

For jeg kunne jo så ligeså godt have en variabel lig noget a la

sub test

kør="ja"
if kør="ja" then call a ' her bliver kør måske lig "nej"
if kør="ja" then call b ' her bliver kør måske lig "nej"
if kør="ja" then call c

end sub
Avatar billede martin_moth Mester
23. januar 2007 - 11:58 #6
netop - de svar du har fået gør jo NETOP brug af en variabel, som du åbenbart ikke ønsker.

Jeg kender kun exit sub, der exit'er den AKTUELLE sub, eller End, der afslutter hele programmet. Er 99,999% sikker på at du IKKE kan det du vil uden brug af en variabel (flag), som bør være en boolean.
Avatar billede nlr2000 Nybegynder
01. november 2007 - 09:16 #7
læg svar
Avatar billede supertekst Ekspert
01. november 2007 - 09:26 #8
Hvem?
Avatar billede martin_moth Mester
01. november 2007 - 12:11 #9
her 1 stk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester