Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1128to1132
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

Über Umwege: eigenes "Autovervollständigen"

Über Umwege: eigenes "Autovervollständigen"
Marco
Hallo zusammen,
ich würde gerne in einem Zellbereich eine eigene Autovervollständigen-Funktion einbauen, die aus einer Liste wahrscheinlicher Einträge bei Eindeutigkeit den Rest der Eingabe ergänzt (oder noch besser: so funktioniert, wie de VBA-Editor nach Eingabe des Punkts :-) Der Ergänzungsvorschlag soll möglichst in grau oder kursiv erscheinen
Idee 1: Worksheet_Change nutzen und Eingabe überwachen
Problem 1: im Edit-Modus der Zelle läuft keinerlei VBA. No chance.
--
Idee 2: wird die Zelle selektiert, setze ich stattdessen eine Textbox hin und fange darin die Eingaben ab. Das funktioniert fast:
Problem 2a: ich weiß nicht, wie ich den Cursor automatisch in die Textbox bekomme. Schreibt der User einfach drauflos, ist er wieder im Edit-Modus (siehe Problem 1, während der Eingabe feuert kein Event), klickt er (vor der ersten Eingabe!) in die Box, läuft es. Den Code, den ich dazu verwende, hänge ich mal unten an, allerdings ist "Eingabe" die Rich Textbox aus Idee 3 (s.u.)
Problem 2b: TextBox aus der Steuerelemente-Toolbox erlaubt keine unterschiedliche Formatierung von Text.
--
Idee 3: Rich TextBox V6.0 statt TextBox
Problem 3a: siehe Problem 2a
Problem 3b: auf Grund von Sicherheitsproblemen öffnet Excel > XP angeblich das Element gar nicht mehr. Es wird ein Workaround vorgeschlagen, in dem man das Element irgendwie in einem VB-Projekt kapselt. Aber ich habe leider nicht verstanden, was das bedeutet :-(
http://support.microsoft.com/kb/838010/en-us/
--
Idee 4: Textbox aus der Formularleiste soll der Sage nach unterschiedliche Formatierung zulassen
Problem 4: ich kann sie nicht hinzufügen (grau) und glaube, dass sie in Excel XP nicht mehr unterstützt wird. Stimmt das?
--
Idee 5: Textfeld aus den "Shapes" dafür benutzen
Problem 5a: Es gibt keine Events, wird hakelig zu programmieren
Problem 5b: Ich bekomme auch hier nicht den Cursor in den "Textframe" (Siehe Problem 2a)
Problem 5c: Der User kann die Form mit der Maus verschieben, ich habe es nicht geschafft, es zu "locken". In der englischen Bedeutung :-)
--
Idee 6: Gültigkeitsdropdown
Problem 6: Der User ist auf blödes Rumscrollen in einer Liste von bis zu 50 Namen angewiesen. Oder kann die Gültigkeitsprüfung in einem versteckten Feature auch autovervollständigen?
--
Idee 7: Microsoft Webbrowser im Edit-Modus/design mode
Problem 7: (Wie) bekomme ich den Webbrowser in den Editmodus? Und: ist das nicht ein wenig... hm... große Munition?
------------
Uff.
Da steh' ich nun ich armer Tor. Kann mir irgend jemand noch eine hübsche Idee nennen oder mir bei einem meiner zahlreichen o.g. Probleme helfen?
Beste Grüße und vielen Dank fürs "bis hierher Lesen"!
Jetzt der oben versprochene Code (Idee 3):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If (Intersect(Target, Range("b3:b52")) Is Nothing) Then
Eingabe.Visible = False
Exit Sub
End If
If (Target.Rows.Count > 1) Or (Target.Columns.Count > 1) Then Exit Sub
Eingabe.Visible = True
If Eingabe.Visible Then
Eingabe.Activate
Eingabe.Left = Target.Left - 5
Eingabe.Top = Target.Top - 2
Eingabe.Width = Target.Width + 10
Eingabe.Height = Target.Height + 4
Eingabe.Text = Target.Text
Eingabe.SelIndent = 4
End If
End Sub
Private Sub Eingabe_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
Select Case KeyCode
Case 9: 'tab: Vervollständigung akzeptieren
' (FEHLT HIER NOCH)
Case vbKeyReturn:
KeyCode = 0
Range(ActiveCell.Address).Value = Eingabe.Text
Eingabe.Text = ""
Eingabe.Visible = False
ActiveCell.Offset(1, 0).Activate
Case Else:
KeyCode = 0
If Len(Eingabe.Text) > 2 Then
Eingabe.Text = "" 'BLÖDFUG UM ZU SEHEN OB'S LÄUFT
End If
End Select
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Das xlAutovervollständigen reicht nicht? orT
14.01.2010 02:28:42
Luc:-?
Morn, Luc :-?
AW: Das xlAutovervollständigen reicht nicht? orT
14.01.2010 03:02:29
Marco
Hi Luc :-?
Vielen Dank für Deine Antwort.
Meines Wissens Kann man die "Autovervollständigung" nicht auf Werte einer Liste (in einem anderen Tabellenblatt/benannter Bereich) ändern, sondern sie nur so nutzen, wie sie da ist. In dem fraglichen Blatt (Eingabe) steht aber nichts oberhalb - also werden auch keine Vorschläge gemacht. Sollte es doch eine eingebaute Funktion dafür geben, würde ich einen Luftsprung machen - aber ich habe bisher nichts in der Richtung gefunden.
Weiß jemand Rat?
Beste Grüße!
AW: Über Umwege: eigenes "Autovervollständigen"
14.01.2010 14:08:35
Marco
Hi nochmal,
ich hatte vergessen, den "Frage noch offen"-Haken zu setzen, sorry. Vielleicht weiß doch noch jemand Rat?
Ich wäre sehr glücklich - ich habe jeden Weg versucht, den ich mir vorstellen oder zurechtsuchen konnte.
Ich habe das Gefühl, dass ein oder zwei meiner Ideen durchaus zielführend sein könnten - aber ich komme bei den Problemen ohne Hilfe leider nicht weiter.
Beste Grüße!
Anzeige
Ich meine Folgendes,...
14.01.2010 16:56:50
Luc:-?
...Marco:
In Xl sind schon standardmäßig ganze Wertereihen enthalten, die immer mit dem nächsten Wert fortgesetzt wdn, wenn du einen davon in eine Zelle schreibst und dann nach rechts oder unten ziehst (bei Kreuz an der rechten unteren Zellecke) bzw andersherum den vorherigen. Wenn du bspw Montag in eine Zelle schreibst, wird bei dieser Methode als Nächstes Dienstag erscheinen; andersherum Sonntag. Das kann man mit jeder beliebigen Reihe fester Werte machen. Man muss sie nur 1x aus der Mappe in das xlTool laden. Das ist auch für stets textgleiche, wiederkehrende Vorspalten u.ä. gut geeignet. Als so etwas hatte ich nämlich deine Anfrage interpretiert... Wenn es bei dir aber nicht um feste Reihenfolgen immer gleicher (auch unterschiedl mit anderen) Werte(n) , sondern um beliebige Folgen von Standardwerten geht, könntest du evtl das „normale“ Autoersetzen benutzen, so etwas wie schreibe ggf → erhalte gegebenenfalls...
Gruß Luc :-?
Anzeige
Coole Ideen! Leider nicht nutzbar :-(
14.01.2010 20:46:54
Marco
Hi Luc :-?.
vielen Dank für die beiden Ideen! Ich habe beide einmal ausprobiert (s.u.), aber leider lässt sich das Problem damit nicht lösen. Ich habe vielleicht nicht ganz konkret genug geschrieben, worum es geht:
Es geht um eine Datenverarbeitung, in der eine Liste von Schülernamen auf verschiedenen Blättern in jeweils unterschiedlicher Reihenfolge (und nicht immer vollständig) eingegeben werden muss.
Möglichkeit 1 (Wertereihe) fällt daher leider weg, da die Reihenfolge nicht gleich ist.
Für Möglichkeit 2 müsste der Benutzer aber wissen, wie genau der Name in "Autoersetzen" abgekürzt ist - denn er muss es ja mit Space "triggern", schreibt er einfach durch, findet keine Ersetzung statt. Bei "Quecke" reicht wahrscheinlich das "Q", bei "Meier, Heinrich" und "Meier, Mirko" bringt erst der achte Buchstabe Eindeutigkeit.
Trotzdem vielen Dank für Deine Ideen, darauf wäre ich absolut nicht gekommen - hätte klappen können!
Ich vermute, dass eine Lösung doch am ehesten über die "Abfangen"-Idee (TextBox, RichTextBox, Webbrowser) zu erreichen ist. Da die speziellen Einzelfragen glaube ich in meine ultralangen Anfrage etwas untergegangen sind, stelle ich sie noch einmal als einzelne Fragen ins Forum.
Beste Grüße,
Marco
Anzeige
OK, habe ich schon gesehen, aber so etwas...
14.01.2010 23:52:14
Luc:-?
...interessiert mich eigentlich wenig, Marco.
Wenn ich mal ein Problem in ähnlicher Richtung habe, dann löse ich das halt irgendwie — mir fällt dann schon was ein — aber so zwischendurch mal einfach über derartiges nachzudenken korreliert nicht mit meinem xl/vb-Fahrplan... ;-)
Gruß Luc :-?
Ok, trotzdem vielen Dank! (oT)
15.01.2010 00:29:01
Marco
.
GELÖST!
16.01.2010 04:17:48
Marco
Hi,
ich habe es letztlich doch hinbekommen - ich war ein Idiot! Ich habe jetzt erst fesgestellt, dass die Jungs von M$ gar keine schlechte Idee damit hatten, den "Ergänzungsvorschlag" einfach als selektierten Text darzustellen - das löst mehrere Probleme auf einmal - und ich brauche keine weitere Formatierung. Ich mache das Ganze jetzt mit einer ComboBox. die die Eingaben in eine Zelle abfängt.
Beispieldatei auf

Die Datei https://www.herber.de/bbs/user/67256.xls wurde aus Datenschutzgründen gelöscht


Vielen Dank für Eure Hilfen!
Beste Grüße,
Sebastian
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige