Avatar billede perhol Seniormester
03. januar 2007 - 00:20 Der er 3 kommentarer og
1 løsning

Fra 1800 til 18:00 - automatisk

I følgende spørgsmål:
http://www.eksperten.dk/spm/646264

fandt jeg den kode der gengives her nederst i spørgsmålet.
Når koden er sat ind i Microsoft Excel Objects - Ark1, virker den på den måde, at når man, i celler der er formateret med formatet [tt]:mm taster f.eks. 1800, så bliver det automatisk ændret til 18:00.
Men hvis man ændrer i flere celler samtidig, f.eks. sletter en del af en kolonne, får man en 'Run-time error 13', og debuggeren åbner.
Kan i hjælpe meg med at få fjernet denne fejl?

Her er den kode jeg bruger:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Not Intersect(Target, Range("D15:G45")) Is Nothing And Target <> "FEJL!" Then
    If Target >= 1 And Len(Format(Target, "0")) <= 4 Then
        iTime = Left(Format(Target, "0000"), 2)
        iMinut = Right(Format(Target, "0000"), 2)
        If iTime < 24 And iMinut <= 59 Then
            Target = iTime / 24 + iMinut / 24 / 60
        Else
            Target = "FEJL!"
        End If
    Else
        If Not Target < 1 Then Target = "FEJL!"
    End If
End If

End Sub
Avatar billede kabbak Professor
03. januar 2007 - 09:21 #1
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
on error resume next
If Not Intersect(Target, Range("D15:G45")) Is Nothing And Target <> "FEJL!" Then
    If Target >= 1 And Len(Format(Target, "0")) <= 4 Then
        iTime = Left(Format(Target, "0000"), 2)
        iMinut = Right(Format(Target, "0000"), 2)
        If iTime < 24 And iMinut <= 59 Then
            Target = iTime / 24 + iMinut / 24 / 60
        Else
            Target = "FEJL!"
        End If
    Else
        If Not Target < 1 Then Target = "FEJL!"
    End If
End If

End Sub
Avatar billede kabbak Professor
03. januar 2007 - 09:23 #2
Denne er nok bedre

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo Slut
If Not Intersect(Target, Range("D15:G45")) Is Nothing And Target <> "FEJL!" Then
    If Target >= 1 And Len(Format(Target, "0")) <= 4 Then
        iTime = Left(Format(Target, "0000"), 2)
        iMinut = Right(Format(Target, "0000"), 2)
        If iTime < 24 And iMinut <= 59 Then
            Target = iTime / 24 + iMinut / 24 / 60
        Else
            Target = "FEJL!"
        End If
    Else
        If Not Target < 1 Then Target = "FEJL!"
    End If
End If
Slut:
End Sub
Avatar billede perhol Seniormester
03. januar 2007 - 11:29 #3
Det virker perfekt.
Læg et svar kabbak.
Giver dig point sent i aften, skal på arbejde nu.
Avatar billede kabbak Professor
03. januar 2007 - 12:20 #4
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
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