09. december 2006 - 18:13Der 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
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
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
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
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.