Avatar billede dane022 Seniormester
08. oktober 2005 - 23:05 Der er 23 kommentarer og
1 løsning

Vil forhindre samme msgbox kommer frem 2 gange

Jeg er ved at lave et regneark til indberetning af barsel.
Ved hjælp af nedenstående kode skal brugeren ved indtastning i celle g35 tage stilling til hvor mange uger der skal føres tilbage til g35 og til u61:
If Target.Address = "$G$35" Then
    If Range("g35").Value > 14 Then
      If MsgBox("Afholdes de resterende " & Range("g35").Value - 14 & " uger i forlængelse af de første 14 uger ?" & vbNewLine & "Hvis der vælges nej, får du lov til at vælge hvor mange af " & vbNewLine & " de " & Range("g35").Value - 14 & " uger der skal udskydes", vbYesNo + vbQuestion, "Afholdelse") = vbNo Then
        svar = InputBox("Vælg her hvor mange uger der skal udskydes af de " & Range("g35").Value - 14 & " uger. " & bnewline & "De uger der ikke udskydes, bliver lagt oven i de 14 uger", "Udskydning af uger")
        Range("u61").Value = svar
        Range("g35").Value = 14 + 10 - Range("u61").Value
    Else
    Range("j36").Value = "=m35 + 1"
    End If
End If
End If

Koden fungerer egentlig som den skal, men hvis brugeren vælger at føre nogle uger tilbage til g35, ser regnearket det som en ny indtastning og så starter det forfra. Det er dette jeg gerne vil undgå
Avatar billede kabbak Professor
08. oktober 2005 - 23:50 #1
If Target.Address = "$G$35" Then
Application.EnableEvents = False
    If Range("g35").Value > 14 Then
      If MsgBox("Afholdes de resterende " & Range("g35").Value - 14 & " uger i forlængelse af de første 14 uger ?" & vbNewLine & "Hvis der vælges nej, får du lov til at vælge hvor mange af " & vbNewLine & " de " & Range("g35").Value - 14 & " uger der skal udskydes", vbYesNo + vbQuestion, "Afholdelse") = vbNo Then
        svar = InputBox("Vælg her hvor mange uger der skal udskydes af de " & Range("g35").Value - 14 & " uger. " & bnewline & "De uger der ikke udskydes, bliver lagt oven i de 14 uger", "Udskydning af uger")
        Range("u61").Value = svar
        Range("g35").Value = 14 + 10 - Range("u61").Value
    Else
    Range("j36").Value = "=m35 + 1"
    End If
Application.EnableEvents = True

End If

End If
Avatar billede dane022 Seniormester
09. oktober 2005 - 11:42 #2
Mange tak, hit med et svar
Avatar billede dane022 Seniormester
09. oktober 2005 - 11:44 #3
Jeg var lidt for hurtig, problemet er nu at den ophæver msgbox hvis man udfylder feltet igen.
Avatar billede dane022 Seniormester
09. oktober 2005 - 11:59 #4
Det ser ud til at virke hvis man rykker lidt rundt:
If Target.Address = "$G$35" Then
    If Range("g35").Value > 14 Then
    Application.EnableEvents = False
      If MsgBox("Afholdes de resterende " & Range("g35").Value - 14 & " uger i forlængelse af de første 14 uger ?" & vbNewLine & "Hvis der vælges nej, får du lov til at vælge hvor mange af " & vbNewLine & " de " & Range("g35").Value - 14 & " uger der skal udskydes", vbYesNo + vbQuestion, "Afholdelse") = vbNo Then
        svar = InputBox("Vælg her hvor mange uger der skal udskydes af de " & Range("g35").Value - 14 & " uger. " & bnewline & "De uger der ikke udskydes, bliver lagt oven i de 14 uger", "Udskydning af uger")
        Range("u61").Value = svar
        Range("g35").Value = 14 + 10 - Range("u61").Value
    Else
    Range("j36").Value = "=m35 + 1"
    End If
    Application.EnableEvents = True
End If
End If
Avatar billede dane022 Seniormester
09. oktober 2005 - 16:11 #5
Det virkede fint længe, men nu har jeg et problem. På et eller andet tidspunkt må koden ikke være kørt helt igennem, for nu fremkommer der ingen msgbox overhovedet.
Hvordan slår jeg enableevents til igen ?
Avatar billede sjap Praktikant
09. oktober 2005 - 18:16 #6
Application.EnableEvents = True

Nu har jeg ikke lige studeret ovenstående dialog, men det kan måske være en god ide at flytte Application.EnableEvents = True uden for IF sætningerne, eller i det mindste være helt sikker på, at de bliver slået til igen.
Avatar billede kabbak Professor
09. oktober 2005 - 18:21 #7
Det er ok at sætte

  Application.EnableEvents = True
lige før end sub,
selvom den ikke har været slået fra, kommer der ingen fejl
Avatar billede dane022 Seniormester
09. oktober 2005 - 19:13 #8
Nu har jeg fjernet alt hvad der hedder Application.EnableEvents, men det løser ikke mit problem.
Avatar billede kabbak Professor
09. oktober 2005 - 19:19 #9
for at få koderne til at køre igen, skal du køre denne makro makro:

Sub OpenForEvents()
Application.EnableEvents = True
End Sub
Avatar billede kabbak Professor
09. oktober 2005 - 19:20 #10
Gør derefter som jeg skrev 18:21:38
Avatar billede dane022 Seniormester
09. oktober 2005 - 19:38 #11
Nu har jeg gjort begge dele, men det gør ingen forskel. Den sub der skal indsættes, skal der ikke gøres en handling for at få den til at køre ?
Avatar billede kabbak Professor
09. oktober 2005 - 19:39 #12
makroer kør
Avatar billede kabbak Professor
09. oktober 2005 - 19:40 #13
du kan også stå i den med cursoren og så tryk  run macro
Avatar billede dane022 Seniormester
09. oktober 2005 - 19:51 #14
Jeg fandt makro under funktioner. Her valgte jeg afspil af den der hedder openforevents. Men det gør ingen forskel
Avatar billede kabbak Professor
09. oktober 2005 - 20:38 #15
når den er afspillet skulle alle automatiske makroer virke igen.

Prøv lige at smide den første kode herind igen, og både med start og slut sub, så må vi se om der er noget galt der.
Avatar billede dane022 Seniormester
10. oktober 2005 - 13:24 #16
Måske er det bedre jeg sendte den til dig, koden fra ende til anden er ret lang.
Den jeg har sendt tidligere er et udpluk.
Avatar billede kabbak Professor
10. oktober 2005 - 13:26 #17
kabbak snabela tiscali dot dk
Avatar billede dane022 Seniormester
10. oktober 2005 - 14:14 #18
Regneark er sendt
Avatar billede dane022 Seniormester
10. oktober 2005 - 18:11 #19
Har du modtaget regneark ?
Avatar billede kabbak Professor
10. oktober 2005 - 18:27 #20
er sendt retur
Avatar billede dane022 Seniormester
10. oktober 2005 - 18:29 #21
Ok, kom du til at sende til den mailadresse den kom fra ?
Hvad var problemet ?
Avatar billede kabbak Professor
10. oktober 2005 - 18:38 #22
Problemet, tror jeg, var at du havde denne:

Sub OpenForEvents()
Application.EnableEvents = True
End Sub

i et arkmodul og ikke i et rigtig modul, nu har du et modul, der hedder module1, det er der rigtige makroer skal ligge.

Det var som om makroen ikke kunne få de automatiske makroer til at køre, når den lå i arkmodulet.

Jeg har også optimeret lidt i din kode, b.l.a. der hvor du skjuler rækker.
Jeg lader den heller ikke kikke hele koden igennem, den hopper nu til enden efter den har udført den aktuelle del af koden.
Avatar billede dane022 Seniormester
10. oktober 2005 - 18:41 #23
Men kan jeg nøjes med fremover at tilføje Application.EnableEvents = True lige inden end sub i arkmodulet og så undgå dette problem fremover, eller vil du anbefale mig at have et modul liggende fast ?
Avatar billede kabbak Professor
10. oktober 2005 - 18:57 #24
Jeg vil nok lade koden ligge, så er du jo fri for at selv huske den.

det er sat ind i koden nu, så skulle den ikke gøre fejl igen.

Men hvis du nu laver mere kode, så kan den jo blive Falsk, hvis koden stopper, på grund af en programmerings fejl, inden den den når enden.
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel