Avatar billede mikisoq Nybegynder
02. december 2008 - 02:35 Der er 4 kommentarer og
1 løsning

VBA Excel - Exit modul ved modularisering

Når man arbejder med modularisering i VBA har man jo flere sub under hinanden, der er styret af en sub, der kalder de enkelte sub.

Hvis jeg i en af disse sub har en MsgBox, hvor den bare skal fortsætte når der klikkes OK men derimod skal afbryde hele processen når der klikkes på Cancel.

Det er denne afbrydefunktion jeg spørger til, hvordan man gør.

Jeg har forestillet mig det gøres sådan:

Nr = InputBox("Indtast medlemsnummer : ", "Medlemshistorik", , vbOKCancel)
  If Nr = vbCancel Then
            Exit Sub (??????????????????)
       
        Else
            Windows("Historik.xlsm").Activate
            Sheets("Ark1").Activate
            Range("B4").Value = Nr
    End If

Det er naturligvis der hvor der er ??? jeg er i tvivl om, hvad jeg skal skrive...

På forhånd mange tak for hjælpen.
Avatar billede mrkr Juniormester
02. december 2008 - 17:53 #1
Dette skulle kunne gøre det:

Sub test()

nr = InputBox("Indtast medlemsnummer : ", "Medlemshistorik", vbOKCancel)
    If nr = Cancel Then
        Exit Sub
        Else
        Windows("Historik.xlsm").Activate
        Sheets("Ark1").Activate
        Range("B4").Value = nr
    End If
End Sub
Avatar billede mikisoq Nybegynder
02. december 2008 - 20:26 #2
Ja, men det havde også fungeret hvis jeg ikke arbejdede med modularisering, men i dette tilfælde vil den kun stoppe sub'en og så fortsætte proceduren ved at gå til næste sub.

Jeg søger en løsning der kan afbryde hele modulet og ikke kun den enkelte sub.

Tak for forsøget og håber du eller andre har et bedre bud.
Avatar billede excelent Ekspert
02. december 2008 - 21:09 #3
Dim valg

Sub test1()
valg = 1
Call test
If valg <> 1 Then Exit Sub
MsgBox ("Ingen klik på Cancel så sub fortsætter")
End Sub

Sub test()

nr = InputBox("Indtast medlemsnummer : ", "Medlemshistorik", vbOKCancel)
    If nr = Cancel Then
    valg = 0
        Exit Sub
        Else
        Windows("Historik.xlsm").Activate
        Sheets("Ark1").Activate
        Range("B4").Value = nr
    End If
End Sub
Avatar billede mikisoq Nybegynder
06. december 2008 - 10:33 #4
Excelent du kan udbede dig et svar, så du kan få dine points som tak for hjælpen med dette spørgsmål :-)
Avatar billede excelent Ekspert
06. december 2008 - 10:43 #5
så vil jeg gerne udbede mig et svar :-)
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