• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

getal omzetten naar tijd in VBA

Status
Niet open voor verdere reacties.

caffie

Gebruiker
Lid geworden
2 jan 2008
Berichten
291
Ik wil graag een getal omzetten naar een tijd
Bv
15 naar 15:00



Code:
Sub OMZETTEN()
If Target.Column = 4 Then
    If Target.Cells.Count = 1 Then
        If Target.Cells <> "" Then
            Dim MyTime
            rob = Target.Cells.Value
            Target.Cells = TimeSerial(Target.Cells.Value, 0, 0)
            Target.Cells.NumberFormat = "h:mm;@"
        End If
        Else
        Exit Sub
    End If
    Else
Exit Sub
End If
End Sub

Tot zo ver ben ik gekomen
ik heb nu 2 problemen
1) De verandering vind pas plaats als ik weer de marco run
2) Is dat als er al een datum staat en ik op de cel gaat staan deze verkeerd wordt om gezet


Wie kan me verder helpen
Hou het simpel want ik ben nog niet zo goed als de meeste op dit form
En wil graag snappen wat het doet i.p.v. zomaar een code kopiëren.
 
ik heb nu 2 problemen
1) De verandering vind pas plaats als ik weer de marco run
2) Is dat als er al een datum staat en ik op de cel gaat staan deze verkeerd wordt om gezet

1) dat komt omdat je de macro in een normale module hebt staan, of iig niet gekoppeld hebt aan een gebeurtenis die automatisch getriggerd wordt
2) je zou kunnen beginnen om te controleren wat de initiële inhoud van de cel is en dan alleen converteren als er GEEN tijd/datum staat

Het helpt als je (een voorbeeld van) je bestand post
 
Code:
Sub M_snb()
   If Cells(1) > 1 And Cells(1) < 25 Then Cells(1) = Cells(1) / 24
End Sub
 
Ik heb er dit van gemaakt

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
    If Target.Cells.Count = 1 Then
        If Target.Cells <> "" Then
            If Target.Cells > 1 And Target.Cells < 25 Then Target.Cells = Target.Cells / 24
            Target.Cells.NumberFormat = "h:mm;@"
        End If
        Else
        Exit Sub
    End If
    Else
Exit Sub
End If
End Sub


Allemaal bedankt voor het mee denken
 
En werkt pas goed bij:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 4 And Target.Count = 1 And Target <> "" Then
    If Target > 1 And Target < 25 Then Target = Target / 24
    Target.NumberFormat = "h:mm;@"
  End If
End Sub
 
Code kan in ieder geval een stuk korter, en houdt geen rekening met het terugzetten van het formaat bij andere getallen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 4 And .Cells.Count = 1 And .Cells > 1 And .Cells < 25 Then
            .Cells = Target.Cells / 24
            .Cells.NumberFormat = "h:mm;@"
        Else
            .NumberFormat = "General"
        End If
    End With
End Sub
 
Maar .cells hoef je niet aan te roepen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan