Samsung6713
Gebruiker
- Lid geworden
- 24 dec 2019
- Berichten
- 209
Goedeavond,
ik heb een soort auto-aanvullen gemaakt voor in een tekstvak.
Daarvoor maak in onder andere gebruik van .selstart
Dit werkt prima, behalve als ik aan het einde van de tekst een spatie wil invoegen.
Ik verander de tekst in het keyup event, en zet daarna met .selstart de cursor op de juiste positie.
De selstartpositie in de code is wel juist, maar toch wordt de spatie er afgetrimt (je ziet het heel snel gebeuren)
Dit is de code
Het vervangen van het autoaanvullen gaat met tab en dat gebeurt natuurlijk in de keydown, wat overigens prima werkt.
Heeft iemand een oplossing?
ik heb een soort auto-aanvullen gemaakt voor in een tekstvak.
Daarvoor maak in onder andere gebruik van .selstart
Dit werkt prima, behalve als ik aan het einde van de tekst een spatie wil invoegen.
Ik verander de tekst in het keyup event, en zet daarna met .selstart de cursor op de juiste positie.
De selstartpositie in de code is wel juist, maar toch wordt de spatie er afgetrimt (je ziet het heel snel gebeuren)
Dit is de code
Code:
Private Sub werkzaamheden_KeyUp(KeyCode As Integer, Shift As Integer)
Dim s As String
s = Me.werkzaamheden.Text
Dim i As Integer
i = InStr(s, ">>")
If i > 0 Then
s = left(s, i - 1)
End If
i = Len(s)
Dim sNew As String
If Len(sKeyWordReplace) = 0 Then
bNoAfterUpdateWerkzaamheden = True
Me.werkzaamheden.Text = s
bNoAfterUpdateWerkzaamheden = False
Me.werkzaamheden.SelStart = i
Exit Sub
End If
If i > Me.werkzaamheden.SelStart Then
bNoAfterUpdateWerkzaamheden = True
Me.werkzaamheden.Text = s
bNoAfterUpdateWerkzaamheden = False
Me.werkzaamheden.SelStart = i
Exit Sub
End If
sNew = ">>" & DLookup("Keyword", "Autofill", Criteria:="Keyword Like '" & sKeyWordReplace & "*'")
Debug.Print sNew
If Len(sNew) = 2 Then
bNoAfterUpdateWerkzaamheden = True
Me.werkzaamheden.Text = s
bNoAfterUpdateWerkzaamheden = False
Me.werkzaamheden.SelStart = i
Exit Sub
End If
s = s & sNew
bNoAfterUpdateWerkzaamheden = True
Me.werkzaamheden.Text = s
bNoAfterUpdateWerkzaamheden = False
Me.werkzaamheden.SelStart = i
End Sub
Het vervangen van het autoaanvullen gaat met tab en dat gebeurt natuurlijk in de keydown, wat overigens prima werkt.
Code:
Private Sub werkzaamheden_KeyDown(KeyCode As Integer, Shift As Integer)
If Me.AllowEdits = False Then Exit Sub
Select Case KeyCode
Case 9
Dim s As String
s = Me.werkzaamheden.Text
Dim i As Integer
i = InStr(s, ">>")
If i > 0 Then
s = left(s, (i - Len(sKeyWordReplace)) - 1)
End If
If Len(sKeyWordReplace) <> 0 Then
bNoAfterUpdateWerkzaamheden = True
Me.werkzaamheden.Text = s & " " & DLookup("Keyword", "Autofill", Criteria:="Keyword Like '" & sKeyWordReplace & "*'")
bNoAfterUpdateWerkzaamheden = False
KeyCode = 0
Exit Sub
End If
Case 65 To 90
If Shift Then
sKeyWordReplace = sKeyWordReplace & UCase(Chr(KeyCode))
Else
sKeyWordReplace = sKeyWordReplace & LCase(Chr(KeyCode))
End If
Case Else
sKeyWordReplace = ""
End Select
End Sub
Heeft iemand een oplossing?