• 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.

tijdstip in een textbox invoeren

Status
Niet open voor verdere reacties.

Andre175

Gebruiker
Lid geworden
2 feb 2018
Berichten
351
Hallo.

Is het mogelijk om een textbox een tijd in te voeren alleen met getallen, dus de ":" weg laten en dat er uiteindelijk wel een tijdsaanduiding in komt inclusief de ":".

ik heb de volgende code in dit forum gevonden, deze is echter voor cellen in een sheet.
kan deze code ook aangepast worden voor een textbox?

Code:
Private Sub Worksheet_Change(ByVal target As Range)
'invoeren van tijd in gehele getallen

On Error Resume Next[ATTACH]322719.vB[/ATTACH]
If Intersect(target, Range("B7:C16")) Is Nothing Then GoTo Einde
If IsEmpty(target) Then GoTo Einde

If Hour(target.Value) <> 0 Or Minute(target.Value) <> 0 Then GoTo Einde
  Application.EnableEvents = False
If Int(target.Value / 100) < 0.1 Then
  target = "00:" & target.Value
Else
  target = Int(target.Value / 100) & ":" & Right(target.Value, 2)
End If
  Application.EnableEvents = True

Einde:
ActiveSheet.Calculate
End Sub


Bekijk bijlage tijdstippen.xlsb
 
lichtjes aangepast:
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsEmpty(TextBox1.Value) Then GoTo einde

If Hour(TextBox1.Value) <> 0 Or Minute(TextBox1.Value) <> 0 Then GoTo einde

If Int(TextBox1.Value / 100) < 0.1 Then
  TextBox1.Value = "00:" & TextBox1.Value
Else
  TextBox1.Value = Int(TextBox1.Value / 100) & ":" & Right(TextBox1.Value, 2)
End If

einde:

End Sub
 
Hallo EvR.

dit werkt idd.
Nu heb ik 8 textboxen waar een tijd ingevuld kan worden.
moet ik nu voor iedere Textbox deze code neerzetten of kan dit "korter".

textboxen zijn:
TbVan1
TbVan2
TbVan3
TbVan4
TbTot1
TbTot2
TbTot3
TbTot4

of is dmv onderstaande wijze iets te doen

for i = 1 to 4
("TbVan" & i).Value and ("TbTot" & i).Value

om de codes zo kort mogelijk te houden.


André
 
in dit geval zou ik 1 sub maken waarbij je de aangeroepen textbox als parameter meegeeft aan die sub
 
ik neem aan dat er ook hierin iets aangepast moet worden zodat er naar de textboxen in het algemeen wordt gekeken...?

Private Sub TbVan1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

kun je me op weg helpen?
 
goedemorgen

Na het doorlezen van se site waar snb me gisterern op wees heb ik het voorbeeldbestand voor textboxen bekeken.
Ik heb de codes in mijn eigen bestand gezet om eens wat te proberen.
Echter kreeg ik met dezelfde codes als in het voorbeeldbestand al een foutmelding.


foutmelding.JPG

het volgende heb ik toegevoegd (rode text)
Code:
[COLOR="#FF0000"]Private Sub Userform_Initialize()
    For Each ctl In Controls
        If TypeName(ctl) = "TextBox" Then
            verzameling.Add New invoercontrole
            Set verzameling(verzameling.Count).cl_tekstvak = ctl
        End If
    Next[/COLOR]
    
    sn = Sheets("tabel kinderen").Cells(1).CurrentRegion
        For j = 2 To UBound(sn)
            If InStr(c01 & ",", "," & sn(j, 5) & ",") = 0 Then c01 = c01 & "," & sn(j, 5)
        Next
    CbGezin.List = Split(Mid(c01, 2), ",")
    
End Sub

En in de klassemodule:
Code:
[COLOR="#FF0000"]Public WithEvents cl_tekstvak As MSForms.TextBox
Sub cl_tekstvak_change()
    cl_tekstvak.BackColor = IIf(cl_tekstvak = "", &H8000000F, &HC0FFFF)
End Sub
[/COLOR]


waar ga ik de fout in?
 
Je hebt de klassemodule niet de naam 'invoercontrole' gegeven.

In plaats van de kleurverandering kan dit eenvoudiger zijn:

Code:
Sub cl_textvak_change()
  cl_tekstvak.BackStyle = 1 - cl_tekstvak.BackStyle
End Sub

Bij feedback in dit forum is de plaatsing van een bestand (geen plaatje) het meest gewenst.
 
Laatst bewerkt:
Ik doelde in post #4 op:
Code:
Private Sub TbVan1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SetTimeOnExit Me.ActiveControl 'of TbVan1
End Sub

Private Sub TbVan2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SetTimeOnExit Me.ActiveControl ''of TbVan2
End Sub

Private Sub TbVan3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SetTimeOnExit Me.ActiveControl ''of TbVan3
End Sub

Sub SetTimeOnExit(ctl As MSForms.TextBox)
On Error GoTo einde
    If ctl.Value = "" Then Exit Sub
    If Hour(ctl.Value) <> 0 Or Minute(ctl.Value) <> 0 Then Exit Sub
    If Int(ctl.Value / 100) < 0.1 Then
        ctl.Value = "00:" & ctl.Value
    Else
        ctl.Value = Int(ctl.Value / 100) & ":" & Right(ctl.Value, 2)
    End If
einde:
    
End Sub

Dit omdat je middels een klasse/withevents het Exit-event niet kan afvangen
maar steek maar veel op van de site van snb :thumb:
 
Dat je het middels een klasse/withevents het Exit-event niet kan afvangen had ik gelezen.
en van de site van snb steek je idd veel van op..... duidelijk werk van snb, petje af voor zijn werk.

En als men niet weet hoe iets op te lossen hebben we dit forum altijd nog, ff een duw in de goede richting en we komen er wel

iedereen weer bedankt voor de hulp en inzet.
weer het 1 en ander geleerd.


André
 
Middels Withevents kun je het Exit-event niet afvangen, dit kun je WEL in een klasse (zonder Withevents)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan