Avatar billede swamboo Seniormester
09. december 2006 - 18:13 Der er 11 kommentarer og
1 løsning

Hvorfor får jeg det svar?

Jeg har leget lidt med en kode som kan oversætte 1200 til tidsformat 12:00. Og den virker ved alle tal, pånær netop 1200 - men hvorfor får den tildelt den mærkelige værdi 0,5 ved netop 1200??

Her er koden



Private Sub Worksheet_Change(ByVal Target As Range)
Dim indtast As String
Dim tid As String
Dim hvor As String

If Selection.Cells.Count > 1 Then
    MsgBox "Auto-tid virker måske ikke rigtigt" & vbNewLine & "hvis der ændres i flere celler af gangen", _
        vbInformation + vbOKOnly, "Information til bruger"
    Exit Sub
End If
If IsNumeric(Target) Then
    hvor = Target.Address
    If Mid(hvor, 3, 1) = "$" Then
    If Mid(hvor, 2, 1) = "C" Or Mid(hvor, 2, 1) = "B" Then

        If Len(Target.Value) > 4 Then
            Exit Sub
        End If



        indtast = Target.Value
        If indtast = "2400" Then
            Target.Value = "00:00"
            Target.NumberFormat = "hh:mm"
            Exit Sub
        End If

        If Right(indtast, 2) > 59 Then
            MsgBox "Der kan ikke være mere end 59 minutter" & vbNewLine & "på en time!", _
                vbInformation + vbOKOnly, "Information til bruger"
            ActiveCell.Offset(-1, 0).Activate
            Exit Sub
        End If
        If Len(indtast) = 4 Then
            If Left(indtast, 2) > 23 Then
                MsgBox "Der kan ikke være mere end 24 timer" & vbNewLine & "på et døgn!", _
                    vbInformation + vbOKOnly, "Information til bruger"
                ActiveCell.Offset(-1, 0).Activate
                Exit Sub
            End If
        End If

        If Len(Target.Value) = 4 Then Target.Value = Left(indtast, 2) + ":" + Right(indtast, 2)
        If Len(Target.Value) = 3 Then Target.Value = Left(indtast, 1) + ":" + Right(indtast, 2)
        If Len(Target.Value) = 2 Then Target.Value = "00:" + indtast
        If Len(Target.Value) = 1 Then Target.Value = "00:0" + indtast
        MsgBox "tallet: " & indtast

        Target.NumberFormat = "hh:mm"


    End If
    End If
Else
    Exit Sub
End If
Avatar billede kabbak Professor
09. december 2006 - 19:53 #1
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim indtast As String
    Dim tid As String
    Dim hvor As String, M As Integer, T As Integer
    Dim MinTid As Date
    If Selection.Cells.Count > 1 Then
        MsgBox "Auto-tid virker måske ikke rigtigt" & vbNewLine & "hvis der ændres i flere celler af gangen", _
              vbInformation + vbOKOnly, "Information til bruger"
        Exit Sub
    End If
    If IsNumeric(Target) Then
        hvor = Target.Address
        If Mid(hvor, 3, 1) = "$" Then
            If Mid(hvor, 2, 1) = "C" Or Mid(hvor, 2, 1) = "B" Then

                If Len(Target.Value) > 4 Then
                    Exit Sub
                End If
                indtast = Target.Value
                If indtast = "2400" Then
                    Target.Value = "00:00;@"
                    Target.NumberFormat = "hh:mm;@"
                    Exit Sub
                End If

                If Right(indtast, 2) > 59 Then
                    MsgBox "Der kan ikke være mere end 59 minutter" & vbNewLine & "på en time!", _
                          vbInformation + vbOKOnly, "Information til bruger"
                    ActiveCell.Offset(-1, 0).Activate
                    Exit Sub
                End If
                If Len(indtast) = 4 Then
                    If Left(indtast, 2) > 23 Then
                        MsgBox "Der kan ikke være mere end 24 timer" & vbNewLine & "på et døgn!", _
                              vbInformation + vbOKOnly, "Information til bruger"
                        ActiveCell.Offset(-1, 0).Activate
                        Exit Sub
                    End If
                End If


                Application.EnableEvents = False
                T = Int(Target.Value / 100)
                M = Target.Value - (T * 100)
                MinTid = T & ":" & M
                Target = MinTid
                Target.NumberFormat = "hh:mm;@"
                Application.EnableEvents = True


            End If
        End If
    Else
        Exit Sub
Avatar billede swamboo Seniormester
10. december 2006 - 00:56 #2
Perfekt Kabbak! Takker!
Kan du så ikke sige mig hvordan laver man følgende formel om til noget der kan stå i en sub?

=HVIS(C7="";"";((TIME(D7))+((MINUT(D7))/60))*E7)
activecell er D7.

Jeg smidder meget gerne flere point ind for dette extra spørgsmål, hvis du ønsker... Jeg trode jo at det var bare lige at lave, nu jeg havde en formel der virkede i en celle...

Men tak så langt - og uanset hvad - husk et svar - det har du fortjent
Avatar billede swamboo Seniormester
10. december 2006 - 01:02 #3
altså, d7 er et tidsformat hh:mm - og e7 er et tal - det skal du nok bruge - og resultatet skulle så gerne være tiden * timelønnen
Avatar billede kabbak Professor
10. december 2006 - 01:05 #4
Ok lønnen udregnes således:
(tid * 24)* timeløn

[Resultatcelle] = ([D7]*24)*{E7]
Avatar billede kabbak Professor
10. december 2006 - 01:07 #5
der var lige en smutter
[Resultatcelle] = ([D7]*24)*[E7]
Avatar billede kabbak Professor
10. december 2006 - 01:09 #6
hvilken celle skal resultatet stå i ??
Avatar billede swamboo Seniormester
10. december 2006 - 01:12 #7
det afhænger af hvilken linie der skrives i
Jeg havde prøvet at gøre sådan her:
ActiveCell.Offset(-1, 3).Value = (ActiveCell.Offset(-1, 0).Value - ActiveCell.Offset(-1, -1).Value) * ActiveCell.Offset(-1, 2).Value
Avatar billede kabbak Professor
10. december 2006 - 01:17 #8
With ActiveCell
.Offset(-1, 3).Value = (.Offset(-1, 0).Value - .Offset(-1, -1).Value) * .Offset(-1, 2).Value
End With


du kan også skrive det sådan
Avatar billede swamboo Seniormester
10. december 2006 - 01:17 #9
vrøvl - det var en forkert linie jeg sendte
Avatar billede swamboo Seniormester
10. december 2006 - 01:21 #10
Yes - det virker - tak for formlen (tid*24)'timeløn - det var prikken over i'et

Hvad skylder jeg??
Avatar billede kabbak Professor
10. december 2006 - 01:23 #11
det er ok med det jeg har fået ;-))
Avatar billede swamboo Seniormester
10. december 2006 - 01:26 #12
OK - men 1000 tak endnu engang!!

Sov godt, når du kommer så langt!
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