Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
768to772
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
768to772
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

'IntelliSense' selbstgemacht

'IntelliSense' selbstgemacht
29.05.2006 11:21:54
Norman
Liebe Excel Gemeinde,
ich möchte gerne eine Art 'IntelliSense' (Eingabehilfe) selbstmachen.
Dazu sollen die in eine Textbox eingegebenen Buchstaben kontinuierlich mit Wörtern aus einem Tabellenblatt verglichen werden.
Kommt es zu einer Übereinstimmung, soll das Wort vervollständigt werden. Der Curser sollte jedoch an der alten Position bleiben, so dass die Eingabe erweitert werden kann und somit ein anderes Wort aus der Liste gefunden werden kann. Erst mit 'Return' soll die Eingabe abgeschlossen / bestätigt werden.
Ich habe dies schon hinbekommen, allerdings nur wenn ich mir den Treffer separat z.B. als Label anzeigen lasse. Das gefällt mir aber nicht so gut.
Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe.
Ich freue mich auf Eure Vorschläge,
Danke & Gruß
Norman

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 'IntelliSense' selbstgemacht
29.05.2006 12:36:46
Bertram
Hi Norman,
wenn ich dich richtig verstehe , kannst du das ja mit einer ComboBox machen.
Sezte MatchEntry-Eigenschaft auf 1 (fmMatchEntryComplete) und MatchRequired-Eigenschaft auf False.
Gruß
Bertram
AW: 'IntelliSense' selbstgemacht
29.05.2006 12:49:28
Norman
Hallo Bertram,
vielen Dank für Deine schnelle Antwort!
Wie weise ich zu, dass die Eingabe mit Wörtern vom Worksheet XY verglichen wird?
Danke & Gruß
Norman
AW: 'IntelliSense' selbstgemacht
29.05.2006 12:55:29
Bertram
Hi Norman,
schreibe alle Wörter in eine Spalte, markiere alle Einträge und vergib für diesen Bereich dann einen Namen. Bei der ListFillRange-Eigenschaft, gibst du dann diesen Namen ein.
Gruß
Bertram
Anzeige
AW: 'IntelliSense' selbstgemacht
29.05.2006 12:56:58
u_
Hallo,
indem du die Eigenschaft ListFillRange der ComboBox entsprechend setzt.
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: 'IntelliSense' selbstgemacht
29.05.2006 13:26:49
Norman
hallo u_,
wo kann ich ListFillRange bei Properties finden?
Danke & Gruß
Norman
AW: 'IntelliSense' selbstgemacht
29.05.2006 13:46:37
Reinhard
Hi Norman,
im Steueerelementtoolboxfensterchen Entwurfsmodus einstellen, Rechtsklick auf das Kombinationsfeld, Eigenschaften..
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: 'IntelliSense' selbstgemacht
29.05.2006 18:51:25
Norman
Hallo Reinhard,
danke für deinen Hinweis, ich kann aber listfillrange bei bestem willen nicht unter Eigenschaften bei der ComboBox finden. Kannst Du es genauer beschreiben?
Nochmals vielen Dank,
viele Grüße
Norman
Anzeige
AW: 'IntelliSense' selbstgemacht
29.05.2006 19:02:35
Herbert
Hi,
du hast die Frage nicht eindeutig beschrieben, vermutlich meinst du Combobox im Userform und da heißt das RowSource.
mfg Herbert
AW: 'IntelliSense' selbstgemacht
30.05.2006 11:29:41
Norman
Hallo Herbert, Reinhard & _u,
vielen Dank, jetzt klappt es prima über die Combo Box! Sorry für die Verständnisschwierigkeiten.
Noch eine Frage habe ich: In der Combo Box werden alle Wörter aus der Liste angezeigt, wisst Ihr wie man es machen kann, dass nur die Treffer dastehen? Das heißt die Liste soll automatisch angepasst werden und immer 'enger' werden mit fortlaufender Buchstaben-Eingabe.
Geht das irgendwie?
Vielen Dank an die Profis,
Gruß
Norman
Anzeige
AW: 'IntelliSense' selbstgemacht
30.05.2006 15:00:30
Herbert
Hi,
das kann mit RowSource nicht funktionieren, da daurch die Box an den Zellbereich gebunden ist. Sicher läßt sich das basteln, aber dazu hab ich keinen Bock.
Hast du schon mal in der Recherche nachgesehen?.
mfg Herbert
AW: 'IntelliSense' selbstgemacht
30.05.2006 15:56:11
Reinhard
Hi Normann,
in einer UF steht ein Textfeld und ein Listenfeld.
in Tabelle1:
Option Explicit
Private Sub TextBox1_Change()
If TextBox1 = "" Then Exit Sub
Dim zei As Long, pos As Long
Worksheets("Tabelle2").Columns(1).Clear
For zei = 1 To Range("A65536").End(xlUp).Row
If UCase(Cells(zei, 1)) Like UCase(TextBox1) & "*" Then
pos = pos + 1
Cells(zei, 1).Copy Destination:=Worksheets("Tabelle2").Cells(pos, 1)
End If
Next zei
If pos = 0 Then
ListBox1.RowSource = "Tabelle1!A1:A" & Worksheets("Tabelle1").Range("A65536").End(xlUp).Row
Else
ListBox1.RowSource = "Tabelle2!A1:A" & pos
End If
End Sub
Private Sub UserForm_Initialize()
ListBox1.RowSource = "Tabelle1!A1:A" & Worksheets("Tabelle1").Range("A65536").End(xlUp).Row
TextBox1.SetFocus
End Sub

In ein Modul:
Option Explicit
Sub tt()
Load UserForm1
UserForm1.Show 0
End Sub
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: 'IntelliSense' selbstgemacht
31.05.2006 09:22:42
Norman
Hallo Reinhard,
vielen Dank für Deinen neuen Ansatz! Habe ihn gerade ausprobiert, hat super funktioniert! DANKE! Nur noch eine Frage wenns erlaubt ist ;-)
Wie krieg ich aus der Listbox durch z.B. Doppelklicken das Wort in die Textbox?
Danke & Gruß
Norman
AW: 'IntelliSense' selbstgemacht
31.05.2006 20:09:47
schauan
Hallo Norman,
hier mal ein Beispiel für ein UF mit einer LB und einer TB.

Private Sub UserForm_Initialize()
Dim i As Integer
With Me.ListBox1
For i = 1 To 10
.AddItem ("Test " & i)
Next i
.Selected(0) = True
End With
End Sub
'

Private Sub ListBox1_Click()
Debug.Print "List1_Click was here"
With Me.ListBox1
Me.TextBox1 = .Value
End With
End Sub

Anzeige
AW: 'IntelliSense' selbstgemacht
29.05.2006 12:48:32
Reinhard
Hi Norman,
Namensliste steht in A
Private Sub TextBox1_Change()
Dim zei As Long, zeile As Long, vorh As Integer, pos As Integer, n As Integer
Application.EnableEvents = False
For zei = 1 To Range("A65536").End(xlUp).Row
If TextBox1 <> "" And Cells(zei, 1) Like TextBox1 & "*" Then
pos = Len(TextBox1)
vorh = vorh + 1
zeile = zei
End If
Next zei
If vorh = 1 Then
TextBox1 = Cells(zeile, 1)
Application.SendKeys "{Home}"
For n = 1 To pos
Application.SendKeys "{Right}"
Next n
End If
Application.EnableEvents = True
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: 'IntelliSense' selbstgemacht
29.05.2006 13:21:43
Norman
Hallo Reinhard,
vielen Dank für Deinen Vorschlag! Funktioniert prima soweit, allerdings wird nicht kontinuierlich 'geupdated', d.h. wenn z.B. mehrere Wörter ähnlich sind, wird es erst angezeigt wenn es 100 % eindeutig ist:
z.B.
Starter
Starterbutton
--- Vervollständigung kommt erst wenn 'Starterb' eingegeben wurde, erster Vorschlag bei Eingabe von 'S' erfolgt nicht.
Zusatz Frage: Meinst Du, dass man sich die Treffer über eine Combobox anzeigen lassen kann, die Auswahl soll sich aber immer weiter einschränken während der Eingabe?
Geht sowas?
Vielen Dank schonmal,
Gruß
Norman
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige