Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code präzisieren

Code präzisieren
17.09.2014 09:38:27
Andreas
Hallo Forum,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code präzisieren
17.09.2014 09:48:38
Martin
Hallo Andreas,
ungetestet, aber vielleicht theoretisch sollte es so klappen:
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).Range("A:A")
Set rng = .Find(eingabe, LookIn:=xlValues, lookat:=xlPart)
If Not rng Is Nothing Then
fa = rng.Address
Do
If LCase(Left(rng.Value, Len(eingabe))) = LCase(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
Viele Grüße
Martin

Anzeige
AW: Code präzisieren
17.09.2014 10:09:56
Andreas
Hallo Martin,
Vielen Dank für die schnelle Hilfe. Funktioniert super.
Einen schönen Tag noch.
mfg, Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige