Beste Leden,
Ik zal proberen zo goed mogelijk uitleggen waar ik tegen aan loop en graag zou willen.
Als eerst wil ik graag zeggen dat ik geen specialist ben en veel knip en plak werk gebruik en soms ook zelf iets verzin.
Ik heb de volgende file gemaakt Urenstaat in Excel 2019 Versie 1.20 (Office 2007-2016) 3446.xlsm (toegevoegd als bijlage) op het tabblad Uren 3446 staat een knop "Button 1" deze opent een userform.
Hieronder een voorbeeld
Hierin vul ik 5 vakjes (textbox1 t/m 5) de uitkomst komt dan in TextBox6.
Dit werkt prima met de volgende code.
In een ClassModule
In de userform zelf
Nu is het zo dat als er perongeluk een letter in een van de textvakjes zet loop de onderstaande code vast (debug melding, voorbeeld toegevoegd en code staat ook boven aan deze vraag).
Nu heb ik hier een manier omheen gevonden en dat is de volgende code
Dan loop de code niet vast en ik krijg dan mooi een melding zodat er verplicht met cijfers moet worden gewerkt.
Mijn vraag.
Hopenlijk kan iemand mij helpen en heb ik het goed genoeg uitgelegd.
Mvg
Ik zal proberen zo goed mogelijk uitleggen waar ik tegen aan loop en graag zou willen.
Als eerst wil ik graag zeggen dat ik geen specialist ben en veel knip en plak werk gebruik en soms ook zelf iets verzin.
Ik heb de volgende file gemaakt Urenstaat in Excel 2019 Versie 1.20 (Office 2007-2016) 3446.xlsm (toegevoegd als bijlage) op het tabblad Uren 3446 staat een knop "Button 1" deze opent een userform.
Hieronder een voorbeeld
Hierin vul ik 5 vakjes (textbox1 t/m 5) de uitkomst komt dan in TextBox6.
Dit werkt prima met de volgende code.
In een ClassModule
Code:
Public WithEvents m_T As MSForms.TextBox
Private Sub m_T_Change()
y = 0
For Each it In m_T.Parent.verz
If it.m_T.Text <> "" Then y = y + it.m_T.Text
Next
m_T.Parent.TextBox6 = y
End Sub
In de userform zelf
Code:
Public verz As New Collection
Private Sub UserForm_Initialize()
DTPicker1.Value = Date
Application.Calculation = xlAutomatic
For Each it In Controls
If TypeName(it) = "TextBox" And InStr("12345", Right(it.Name, 1)) Then
verz.Add New clsTextBox
Set verz.Item(verz.Count).m_T = it
End If
Next
End Sub
Nu is het zo dat als er perongeluk een letter in een van de textvakjes zet loop de onderstaande code vast (debug melding, voorbeeld toegevoegd en code staat ook boven aan deze vraag).
Nu heb ik hier een manier omheen gevonden en dat is de volgende code
Code:
Private Sub TextBox1_Change()
If TypeName(Me.ActiveControl) = "TextBox" Then
With Me.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, Alleen cijfers toegestaan 0,25 is gelijk aan 15 minuten"
.Value = vbNullString
End If
End With
End If
End Sub
Private Sub TextBox2_Change()
If TypeName(Me.ActiveControl) = "TextBox" Then
With Me.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, Alleen cijfers toegestaan 0,25 is gelijk aan 15 minuten"
.Value = vbNullString
End If
End With
End If
End Sub
Private Sub TextBox3_Change()
If TypeName(Me.ActiveControl) = "TextBox" Then
With Me.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, Alleen cijfers toegestaan 0,25 is gelijk aan 15 minuten"
.Value = vbNullString
End If
End With
End If
End Sub
Private Sub TextBox4_Change()
If TypeName(Me.ActiveControl) = "TextBox" Then
With Me.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, Alleen cijfers toegestaan 0,25 is gelijk aan 15 minuten"
.Value = vbNullString
End If
End With
End If
End Sub
Private Sub TextBox5_Change()
If TypeName(Me.ActiveControl) = "TextBox" Then
With Me.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, Alleen cijfers toegestaan 0,25 is gelijk aan 15 minuten"
.Value = vbNullString
End If
End With
End If
End Sub
Dan loop de code niet vast en ik krijg dan mooi een melding zodat er verplicht met cijfers moet worden gewerkt.
Mijn vraag.
- Kan deze code simpeler?, zodat het in eerste instantie niet vast loopt? en toch een melding krijgen dat er alleen met cijfers gewerkt moet worden
Hopenlijk kan iemand mij helpen en heb ik het goed genoeg uitgelegd.
Mvg