Textbox.setfocus probleem

Status
Niet open voor verdere reacties.

TillytheShark

Gebruiker
Lid geworden
17 mei 2008
Berichten
17
Met behulp van een textbox wil ik tijden wegschrijven. De textbox dient daarom gecontroleerd te worden op input format. Ik controleer de input van textbox1 met:
Code:
Private Sub TextBox1_AfterUpdate()
Dim char1 As Variant
Dim char2 As Variant
Dim char3 As Variant
Dim char4 As Variant

If TextBox1.TextLength = 5 Then
char1 = Mid(TextBox1.Text, 1, 1)
char2 = Mid(TextBox1.Text, 2, 1)
char3 = Mid(TextBox1.Text, 4, 1)
char4 = Mid(TextBox1.Text, 5, 1)
End If

If Not (TextBox1.Text Like "##:##") Then
    MsgBox "Entry must be in the format:" & vbCrLf & _
           "##:## where # is a single digit.", vbExclamation + vbOKOnly, "Input Error"
    
    With TextBox1
        .SetFocus
        .SelStart = 0
        .SelLength = .TextLength
    End With
End If

If Not (char1 >= 0 And char1 <= 2 And _
         char2 >= 0 And char2 <= 9 And _
          char3 >= 0 And char3 <= 5 And _
           char4 >= 0 And char4 <= 9) Then
    MsgBox "Entry must be in the format:" & vbCrLf & _
           "##:## where # is a single digit.", vbExclamation + vbOKOnly, "Input Error"
    
    With TextBox1
        .SetFocus
        .SelStart = 0
        .SelLength = .TextLength
    End With
End If
End Sub
De code selecteert de tekst, maar op een of andere manier wordt textbox1.setfocus niet goed uitgevoerd. Ik heb de code van textbox2 aangepast naar:
Code:
If Not (TextBox2.Text Like "##:##") Then
    MsgBox "Entry must be in the format:" & vbCrLf & _
           "##:## where # is a single digit.", vbExclamation + vbOKOnly, "Input Error"
    With TextBox3
        .SetFocus
        .SelStart = 0
        .SelLength = .TextLength
    End With
End If
De code selecteert, bij verandering van textbox2, de inhoud van textbox3 en setfocus op textbox3. Dit wordt wel goed uitgevoerd... (Zie eventueel de bijlage)

Kan iemand mij uitleggen waarom?

Met vriendelijke groet'n,

Tilly_the_Shark

PS. Bestand is nog in ontwikkeling dus soms krijg je twee keer een error, wordt aan gewerkt.
 

Bijlagen

  • Textbox limit input.xls
    59 KB · Weergaven: 45
Code:
Private Sub TextBox1_[COLOR="Red"]Change[/COLOR]()
  if len(Tetxtbox1.Text)=4 and Val(Textbox1.Text)>999  then 
    if isdate(left(Textbox1.Tex,2) & ":" & right(TextBox1.Text,2)) then Textbox1.text=left(Textbox1.Tex,2) & ":" & right(TextBox1.Text,2)
  End If
End sub
Zet de eigenschap MaxLength van Textbox1 op 5
 
De code gaf mij inspiratie op een ander front. Ter bevordering van de invoer. Hartelijk bedankt. Het lost echter niet het setfocus probleem op.

Als de user een verkeerde waarde invult, wordt m.b.v. een msgbox een waarschuwing gegeven. Daarna wil ik dat de tekst automatisch geselecteerd wordt en dat de textbox ' in focus' is om de foutieve invoer direct te overschrijven by een toetsaanslag. Volgens mij zit dat probleem in de .setfocus, maar ik zie niet waar of hoe ik dat kan oplossen.

Correctie:
Code:
Private Sub TextBox1_Change()
  if len([COLOR="Red"]Textbox1[/COLOR].Text)=4 and Val(Textbox1.Text)>999  then 
    if isdate(left(Textbox1.[COLOR="Red"]Text[/COLOR],2) & ":" & right(TextBox1.Text,2)) then Textbox1.text=left(Textbox1.[COLOR="Red"]Text[/COLOR],2) & ":" & right(TextBox1.Text,2)
  End If
End sub
 
Foutmelding in Oplossing...

Het bestand geeft een error:

Could not load some objects because they are not available on this machine.

Ik heb het bestand proberen te openen op Excel 2007 NL en Excel 2003 ENG, geen succes. Zou graag willen zien wat het programma doet.
 
Het gaat om de DTPicker control, meegeleverd bij Access, maar ook los als bilbiotheek te downloaden.
 
Heeft iemand misschien een link voor mij, waar uitgelegd wordt hoe de DTPicker control toegevoegd kan worden aan Excel? Ik kom er na 2 weken nog niet uit.

Met vriendelijke groet,

Tilly_the_Shark
 
TillytheShark,

Google eens hier "download DTPicker" op
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan