08. oktober 2005 - 23:05Der 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å
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
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
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 ?
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.
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.
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 ?
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.
Synes godt om
Ny brugerNybegynder
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.