Avatar billede ups34 Nybegynder
28. december 2011 - 12:24 Der er 8 kommentarer og
1 løsning

Annulere lukke procedure

Hej alle

Jeg har en fil hvor jeg gerne vil have en advarsel via MsgBox hvis brugeren lukker filen via "Det røde kryds" (Der hvor man normalt lukker)
Grunden er, at brugeren skal bruge en makro der enten hedder "Gem som tilbud" eller "Gem som ordre"
Jeg har prøvet forskellige muligheder, men kan ikke få excel til at annulere lukke proceduren og vende tilbage til filen
Dette er koden jeg har skrevet ind:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If MsgBox("Har du husket...?", vbYesNo) = vbNo Then
????? (det er her koden for at annulere skal ind)

Else

Exit Sub

End If

End Sub

PFT
VH
Ups
Avatar billede supertekst Ekspert
28. december 2011 - 12:37 #1
If MsgBox("Har du husket...?", vbYesNo) = vbNo Then
    Cancel = True  '<-----
else
Avatar billede store-morten Ekspert
28. december 2011 - 12:53 #2
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Svar As Integer
    Svar = MsgBox("Har du husket...?", vbYesNo, "Husk")
    If Svar = vbYes Then
   
    ElseIf Svar = vbNo Then
        Cancel = True
    End If
End Sub
Avatar billede ups34 Nybegynder
28. december 2011 - 13:13 #3
Hej supertekst

Mange tak for hjælpen

Stor Morten din kommentar virker selvfølgelig også, men jeg gav supertekst da han var først ;-) Håber det er OK

MVH
Ups
Avatar billede supertekst Ekspert
28. december 2011 - 13:26 #4
Selv tak - det var så lidt..
Avatar billede store-morten Ekspert
28. december 2011 - 13:32 #5
Det er ok ;-)
Legede lidt videre, måske det kan bruges:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Svar1 As Integer
    Dim Svar2 As Integer
    Dim Svar3 As Integer
   
    Svar1 = MsgBox("Har du husket...?", vbYesNo, "Husk")
    If Svar1 = vbYes Then
    'Lukker
    ElseIf Svar1 = vbNo Then
   
        Svar2 = MsgBox("Vil du gemme som tilbud...?", vbYesNo, "Gem som tilbud?")
        If Svar2 = vbYes Then
        'call "Gem som tilbud"
        Cancel = True
        ElseIf Svar2 = vbNo Then
       
            Svar3 = MsgBox("Vil du gemme som ordre...?", vbYesNo, "Gem som ordre?")
            If Svar3 = vbYes Then
            'call "Gem som ordre"
            Cancel = True
            ElseIf Svar3 = vbNo Then
                       
    Cancel = True
    End If
    End If
    End If
End Sub
Avatar billede ups34 Nybegynder
28. december 2011 - 13:41 #6
Hej Morten

Ja det er da værd at tage med men

Ex "Gem som tilbud"

Slutter med:
    MsgBox "Tilbuddet er gemt" + Chr(10) + "i den ønskede mappe"
    ActiveWorkbook.Save

    ActiveWorkbook.Close

    Exit Sub

Det vil jo give en MsgBox igen, da MsgBoxen står hvor den står

Tak fordi du gide hjælpe

MVH
Ups
Avatar billede store-morten Ekspert
28. december 2011 - 14:14 #7
Måske med en "Hjælpe" celle =A1

"Gem som tilbud" eller "Gem som ordre":
Skriver "Gemt som tilbud D: " eller "Gemt som ordre D: " i celle A1.

Workbook_BeforeClose:
køres hvis A1 er tom, ellers ikke.

Workbook_Open:
sletter A1 ved start.

Private Sub Workbook_Open()
Range("A1").Value = ""
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Svar1 As Integer
    Dim Svar2 As Integer
    Dim Svar3 As Integer
   
If IsEmpty(Range("A1")) Then
   
    Svar1 = MsgBox("Har du husket...?", vbYesNo, "Husk")
    If Svar1 = vbYes Then
    'Lukker
    ElseIf Svar1 = vbNo Then
   
        Svar2 = MsgBox("Vil du gemme som tilbud...?", vbYesNo, "Gem som tilbud?")
        If Svar2 = vbYes Then
        'call "Gem som tilbud"
        Cancel = True
        MsgBox "Tilbudet er gemt" + Chr(10) + "i den ønskede mappe"
            Range("A1").Value = "Gemt som tilbud D: " & Now
        ElseIf Svar2 = vbNo Then
       
            Svar3 = MsgBox("Vil du gemme som ordre...?", vbYesNo, "Gem som ordre?")
            If Svar3 = vbYes Then
            'call "Gem som ordre"
            Cancel = True
            MsgBox "Ordren er gemt" + Chr(10) + "i den ønskede mappe"
                Range("A1").Value = "Gemt som ordre D: " & Now
            ElseIf Svar3 = vbNo Then
                       
    Cancel = True
    End If
    End If
    End If
    End If
End Sub
Avatar billede ups34 Nybegynder
28. december 2011 - 15:23 #8
Hej Morten
Jep det er perfekt med hjælpe cellen. Nu får jeg heller ikke MSgBox frem når jeg gemmer korrekt vha makro, så mange tak for hjælpen

MVH
Ups
Avatar billede store-morten Ekspert
28. december 2011 - 16:21 #9
God det lykkes ;-)
Velbekomme
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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