Avatar billede perhol Seniormester
30. april 2006 - 09:14 Der er 25 kommentarer og
2 løsninger

Advarsel m svarboks i makro

Jeg har lavet et lille kasseregnskab til pædagoger til at lave beboerregnskab i.
En knap med en tilknyttet makro kopierer slutsaldo og sætter den som startsaldo, rydder resten af regnearket og voila, arket er klar til at føre næste måneds regnskab i.
Pædagoger er tit utroligt dygtige!
Det er bare ikke ret tit de er i stand til at overskue hvad der sker  i en computer (min påstand).
Så en kraftig advarsel med en svarboks der giver mulighed for at vælge at gennemføre den beskrevne makro eller at annulere for først at gemme arket under et fornuftigt navn ville være ønskeligt.
Det skulle helst ligge i begyndelsen af makroen så det ikke lader sig gøre at slette arket uden at få en advarsel.
Kan i eksperter hjælpe?
Avatar billede mrjh Novice
30. april 2006 - 09:55 #1
Prøv om denne virker

Sub knap1_klick()

svar = MsgBox("Er du sikker på at du vil indsætte ny måned?", vbOKCancel)
If svar = vbCancel Then
filnavn = Application.GetSaveAsFilename
ActiveWorkbook.SaveAs filnavn
Exit Sub
.... din kode
End If

End Sub
Avatar billede mrjh Novice
30. april 2006 - 09:56 #2
Denne selvfølgelig


Sub knap1_klick()

svar = MsgBox("Er du sikker på at du vil indsætte ny måned?", vbOKCancel)
If svar = vbCancel Then
filnavn = Application.GetSaveAsFilename
ActiveWorkbook.SaveAs filnavn
Exit Sub
Else
....din kode
End If

End Sub
Avatar billede perhol Seniormester
30. april 2006 - 10:12 #3
Det virker, men!
Når man vælger Annuller bruger den samme filnavn som det eksisterende regneark, men sat i anførelsestegn.
Har anførelsesregnene nogen betydning?
Hvis man i Gem Som boksen også vælger at annullere får filen pludselig navnet FALSE.xls ?
Det må der da kunne gøres noget ved.
Imidlertid har du løst spørgsmålet, så det ville da nok være på plads at begynde at ændre kommebtarer til svar ;-)
Avatar billede perhol Seniormester
30. april 2006 - 10:14 #4
Tillægsspørgsmål:
Kan man ændre teksten på Annuller - knappen til noget andet?
Avatar billede perhol Seniormester
30. april 2006 - 10:16 #5
Uha det må være for tidligt på dagen!
kommebtarer = kommentarer
Avatar billede Dan Elgaard Ekspert
30. april 2006 - 10:44 #6
KISS!  (Keep It Simple, Stupid)

Jeg plejer blot indsætte denne ene linie i de makroer, hvor jeg vil give brugeren mulighed for at fortryke:

If MsgBox("Denne handling vil ..." + Chr(10) + "og handlingen kan efterfølgende IKKE fortrydes!" + Chr(10) + Chr(10) + "Forsætte?", vbOKCancel, "ADVARSEL!") = vbCancel Then Exit Sub

Trykker brugeren <OK> forsætter makroen, og trykker han <Annuller> stopper makroen og hopper tilbage til Excel.

Du kan selv indsætte ny titel, hvor der står "ADVARSEL!" og selv indsætte ny tekst ligeledes...
Avatar billede perhol Seniormester
30. april 2006 - 10:50 #7
> pistolprinsen
mrjh's kommentar dækker mit behov ret præcist, så jeg afventer et svar derfra.
Jeg er i gang med at ændre på advarselsteksten.
Avatar billede perhol Seniormester
30. april 2006 - 11:39 #8
Jeg har nu næsten fået makroen til at virke som jeg ønsker.
Det eneste tilbage er at meddelelsen gerne skulle deles i 2 linjer.
Den del af makroen ser sådan ud:
svar = MsgBox("Er du sikker på at du vil klargøre regnskabet til en ny måned? " & _
"Slutsaldo vil blive sat til Startsaldo og alle andre data vil blive slettet", vbYesNo + vbExclamation)
Efter hvad jeg har kunnet læse mig til skulle [" & _
"] få meddelelsen til at blive delt på 2 linjer, men det gør den ikke.
Hvad gør jeg forkert.
Avatar billede mrjh Novice
30. april 2006 - 11:43 #9
Du skal have et mellemrum mellem & og _
Eller også skal du bruge VbNewLine
Hvordan har du fået den til ikke at gemme som false. Har selv prøvet uden held ?
Avatar billede perhol Seniormester
30. april 2006 - 11:56 #10
Når den er HELT færdig kan jeg lige indsætte hele makroen som kommentar.
Jeg prøver lige VbNewLine.
Der ER faktisk et mellemrum mellem & og _. Kan det være fordi der også er et mellemrum mellem " og &
PS. Send nu et svar, ikke mrjh
Avatar billede perhol Seniormester
30. april 2006 - 11:58 #11
Det der med VbNewLine gik galt, jeg fik en compile error.
De 2 linjer ser nu sådan ud:
svar = MsgBox("Er du sikker på at du vil klargøre regnskabet til en ny måned? " _VbNewLine
"Slutsaldo vil blive sat til Startsaldo og alle andre data vil blive slettet", vbYesNo + vbExclamation)
Avatar billede perhol Seniormester
30. april 2006 - 12:04 #12
>pistolprinsen
Så kom du sørme også med.
Jeg brugte en del af din kode (" + Chr(10) + ") i stedet for (" & _") eller (" _VbNewLine").
Måske var det bare fordi koden faktisk var delt i 2 linjer!
I hvert fald har i begge medvirket til at løse mit spørgsmål, så hvordan deler jeg lige point.
>mrjh
Post nu lige et svar, ikke.
Jeg lægger hele makroen i en særskilt kommentar.
Avatar billede perhol Seniormester
30. april 2006 - 12:07 #13
ub OverførTilNæsteMåned()
'
' OverførTilNæsteMåned Makro
' Makro indspillet 30-04-2006 af Per Holst
'

'
svar = MsgBox("Er du sikker på at du vil klargøre regnskabet til en ny måned? " + Chr(10) + "Slutsaldo vil blive sat til Startsaldo og alle andre data vil blive slettet", vbYesNo + vbExclamation)
If svar = vbNo Then
filnavn = Application.GetSaveAsFilename
Exit Sub
Else
Application.Goto Reference:="R40C11"
    Selection.Copy
    Application.Goto Reference:="R4C7"
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A4:A39").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A5:F39").Select
    Selection.ClearContents
    Range("A4").Select
End If
   
End Sub

Det kunne da også godt være at der kunne ryddes lidt op i koden?

>mrjh
Angående dit spørgsmål, jeg slettede linjen [ActiveWorkbook.SaveAs filnavn], så gemte den ikke længere som FALSE.xlt
Avatar billede mrjh Novice
30. april 2006 - 12:18 #14
svar = MsgBox("Er du sikker på at du vil klargøre regnskabet til en ny måned? "  & VbNewLine
& "Slutsaldo vil blive sat til Startsaldo og alle andre data vil blive slettet", vbYesNo + vbExclamation)
Avatar billede mrjh Novice
30. april 2006 - 12:20 #15
Jamen så pyt da, hermed et svar :o). For at dele Pointene, afvent til pistilprinsen svarer og acceptere begge svar med ligeligt antal Point
Avatar billede perhol Seniormester
30. april 2006 - 12:24 #16
>mrjh
Det tror jeg på, men jeg har ikke tænkt mig at afprøve det.
Det er nok fordi hele meddelelsen skal stå i én fortsat linje.
Det virker med [" + Chr(10) + "] når det hele står på én linje.
Tak for hjælpen begge to. ;-)
Avatar billede mrjh Novice
30. april 2006 - 12:26 #17
Jeg tror den vil give dig nogen problemer, for den gemmer ikke filen når du siger gem som !!!!
Avatar billede perhol Seniormester
30. april 2006 - 12:29 #18
Når jeg trykker 'Nej' som svar på spørgsmålet åbner 'Gem som' boksen med eksisterende filnavn udfyldt.
Avatar billede perhol Seniormester
30. april 2006 - 12:30 #19
Jeg kan sende dig arket når jeg bare lige sletter beboernavne
Avatar billede mrjh Novice
30. april 2006 - 12:31 #20
Korrekt den viser gem som, men hvis du så prøver at gemme, gemmer den ikke. Ihvertfald ikke hos mig.
Avatar billede perhol Seniormester
30. april 2006 - 13:00 #21
Du har sgu ret!
Arbejder lige lidt med det
Avatar billede mrjh Novice
30. april 2006 - 13:01 #22
Prøv lige denne istedet. Den gemmer også filen.

Sub OverførTilNæsteMåned()
svar = MsgBox("Er du sikker på at du vil klargøre regnskabet til en ny måned? " + Chr(10) + "Slutsaldo vil blive sat til Startsaldo og alle andre data vil blive slettet", vbYesNo + vbExclamation)
    If svar = vbNo Then
    filnavn = Application.GetSaveAsFilename
        If filnavn = False Then
        Exit Sub
        Else
        ActiveWorkbook.SaveAs filnavn
        End If
    Else
    ....din kode
    End If

End Sub
Avatar billede perhol Seniormester
30. april 2006 - 13:12 #23
Det virker.
Koden ser nu sådan ud i sammenhæng:

Sub OverførTilNæsteMåned()
'
' OverførTilNæsteMåned Makro
' Makro indspillet 30-04-2006 af Per Holst
'

'
svar = MsgBox("Er du sikker på at du vil klargøre regnskabet til en ny måned ?" + Chr(10) + " " + Chr(10) + "Slutsaldo vil blive sat til Startsaldo" + Chr(10) + "og alle andre data vil blive slettet", vbYesNo + vbExclamation)
    If svar = vbNo Then
        filnavn = Application.GetSaveAsFilename
    If filnavn = False Then
        Exit Sub
    Else
        ActiveWorkbook.SaveAs filnavn
    End If
Else
    Application.Goto Reference:="R2C4"
    Selection.ClearContents
    Application.Goto Reference:="R40C11"
    Selection.Copy
    Application.Goto Reference:="R4C7"
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A4:A39").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A5:F39").Select
    Selection.ClearContents
    Range("A4").Select
End If
   
End Sub
Avatar billede perhol Seniormester
30. april 2006 - 13:13 #24
Kan der renses lidt op uden at ødelægge funktionalitet?
Den virker nu præcis som jeg havde tænkt mig.
Avatar billede mrjh Novice
30. april 2006 - 13:37 #25
Prøv denne kode i din sidste else sætning. Husk lige at gem først inden du afprøver.

Range("d2").ClearContents
Range("k40").Copy
Range("g4").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("A4:A39").ClearContents
Range("A5:F39").ClearContents
Range("A4").Select
Avatar billede perhol Seniormester
30. april 2006 - 14:03 #26
Jeg får en Run-time error med henvisning til linjen Range("d2").ClearContents
Jeg kan se at jeg ikke har nogen unødvendig kode, tænkte bare at den måske kunne blive lidt kortere.
Men da den jo nu virker helt efter hensigten tror jeg at det ville være en god ide at stoppe nu.
Tak for hjælpen ;-)
Avatar billede effe333 Nybegynder
08. november 2008 - 12:04 #27
Hej pernol
Jeg er pædagog ;-)
Jeg faldt over dit spørgsmål her på siden, da jeg i flere timer har sidet og ledt efter kasseregnskab til pædagoger, netop til brug for beboerregnskab  :-)
Hvor kan jeg få mere information om det regnskab du har lavet???
på forhånd tak
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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