Code präzisieren
17.09.2014 09:38:27
Andreas
Ich habe folgenden Code im Netz gefunden. Bei Eingabe im Textfeld3 (UserForm) wird die Eingabe nach Vorgaben im Blatt "Strassen" vervollständigt, dabei werden alle Werte im Blatt verglichen. Das klappt auch super.
2 Probleme:
1. Es sollen nicht alle Werte des Blattes "Strassen" verglichen werden, sondern nur Werte die in Spalte A stehen.
2. Es soll nicht nach Groß- und Kleinschreibung unterschieden werden.
Geht das einfach zu realisieren? Habe leider von VBA nicht so viel Ahnung um diese Probleme zu lösen.
Option Explicit
' verliert die Textbox den Focus, merkt sich Excel die Eingabe
Private Const STARTSPALTE = 1
Private Const WORTE_TAB = "Strassen" ' Blatt der Werte die verglichen werden
Private tb_lock As Boolean, tmp$, rng As Range, blocke_autokorrektur As Boolean
Private bUnterdrücken As Boolean
Private wks As Worksheet
Private Sub TextBox3_Change()
Dim ln&
If blocke_autokorrektur Then
blocke_autokorrektur = False
Exit Sub
End If
If tb_lock Then Exit Sub
tb_lock = True
ln = Len(TextBox3)
tmp = Finde_Vorschlag(TextBox3.Value)
If tmp vbNullString Then
With TextBox3
.Value = tmp
.SelStart = ln
.SelLength = Len(TextBox3)
End With
End If
tb_lock = False
End Sub
Private Function Finde_Vorschlag(eingabe$) As String
Dim fa$, fd As Boolean
If eingabe = " " Or eingabe = vbNullString Then
Finde_Vorschlag = vbNullString
Exit Function
End If
With Worksheets(WORTE_TAB).Cells
Set rng = .Find(eingabe, LookIn:=xlValues, lookat:=xlPart)
If Not rng Is Nothing Then
fa = rng.Address
Do
If Left(rng.Value, Len(eingabe)) = eingabe Then
fd = True
Exit Do
End If
Set rng = .FindNext(rng)
Loop While Not rng Is Nothing And rng.Address fa
If Not fd Then
Finde_Vorschlag = vbNullString
Exit Function
Else
Finde_Vorschlag = .Cells(rng.Row, rng.Column).Value
End If
End If
End With
End Function
Private Sub Textbox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal shift As Integer)
If KeyCode = 8 Then blocke_autokorrektur = True
If Len(TextBox3) = 0 Then blocke_autokorrektur = False
End Sub
Danke fürs lesen und die Hilfe!mfg, Andreas