Clever-Excel-Forum

Normale Version: autocomplete textbox / Bezug Quelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

aus gegebenen Anlass strukturiere ich mein Userform um.
Am liebsten würde ich eine TextBox, die zur Eingabe des Namens verwendet wird, beim Schreiben automatisch durch die hinterlegte Namen aus fünf Tabellenblättern ergänzen lassen.

Habe im Netz gelesen, dass dies sowohl mit der TextBox als auch mit dem Combofeld möglich sein soll. Bezüglich der TextBox habe ich leider nur englische Kommentare ohne Code gefunden, die mir nicht weiter geholfen haben.
Meine erste Wahl wäre das Textfeld, da mir hier die Abfrage der Pflichteingabe einfacher erscheint.
Bei der Combobox bin ich soweit gekommen, dass er die Namen aus dem aktuell (activesheet) geöffneten Tabellenblatt ergänzt.

'Combobox unter inatilize

With ComboBox1
.ShowDropButtonWhen = fmShowDropButtonWhenNever
'.RowSource = Sheets("Tabelle8").Range("A1:A20") >>funktioniert garnicht Laufzeitfehler 9, Typenunverträglich
.RowSource = ("A1:A100") >>>immerhin aus dem activesheet

was nur selten das richtige ist, und ich bräuchte den Inhalt aus den fünf... am besten jedoch für die TextBox

Vielen Dank im Voraus
Hallo,

Code:
With ComboBox1
.ShowDropButtonWhen = fmShowDropButtonWhenNever
.RowSource = Sheets("Tabelle8").Range("A1:A20").Address    '>>funktioniert garnicht Laufzeitfehler 9, Typenunverträglich ---> Codename ist nicht gleich Tabellennname!!!!!!
.RowSource = ("A1:A100") '>>>immerhin aus dem activesheet
End With
Morgen Stefan,


With ComboBox1
.ShowDropButtonWhen = fmShowDropButtonWhenNever
.RowSource = Sheets(Tabelle8).Range("A1:A20").Address

End With

Auch mit dem Zusatz Address funktioniert dies leider nicht.
Es ist tatsächlich Sheets(Tabelle8)

habe nun den Laufzeitfehler 13, Typen unverträglich
- er bietet mir über Strg+Leertaste auch weder Range noch Address an
ist ja meist ein Hinweis darauf, dass es dann auch nicht funktioniert

hast du eventuell noch eine Idee?

Oder hat jdm anderes vielleicht auch Erfahrung mit dem Autocompletemode bzw. autocompletesource ???
Hallo,

ich glaube, so ganz hast Du es mit Codenamen und Tabellennamen nicht verstanden (ich ändere es selbst auch mal, damit sich es auf die richtige Tabelle bezieht).

Code:
.RowSource = Tabelle8.Name & "!" & Tabelle8.Range("A1:A20").Address 'ausgewählt ist hier der Codename der Tabelle!
Moin auch von mir!
Zitat:er bietet mir über Strg+Leertaste auch weder Range noch Address an

Das ist logisch, da die Sheets()-Auflistung ja auch z.B. ein Diagrammblatt enthalten kann.
Da dies kein Range-Objekt besitzt, bietet VBA folglich auch kein Autovervollständigen an.

Ich würde im übrigen nicht über .RowSource gehen, sondern per .List füllen.
Edit: die .List-Methode funktioniert nur in einem UserForm.

Gruß Ralf
Hallo,

bei RowSource, entweder wie Stefan in seinem letzten Beitrag oder auch einfach so:


Code:
.RowSource  = "Tabelle8!A1:A100"


RowSource nimmt man gewöhnlich, wenn man Überschriften braucht.

Sonst, wie Ralf es vorschlägt über .List Eigenschaft so:

Code:
ComboBox1.List = Sheets("Tabelle8").Range("A8:A100").Value
@stefan

hatte ich schon verstanden, es war wirklich der Codename Tabelle8
habe bei über 30 Tabellenblätter keine unbenannten

diese Variante funktioniert:

.RowSource = Sheets(13).Range("B1:B25").Address

ist halt ein bißchen umständlich, wenn man von oben durchzählen muss- und ich bin mir noch unsicher was passiert wenn ich was verschiebe, lösche etc.
, mal schauen.
super, viele Lösungen für ein Problem.

Ich Danke Euch allen. Habe mal wieder viel gelernt.
@atilla

bekomme bei

ComboBox1.List = Sheets("Tabelle8").Range("A8:A100").Value
9: Index außerhalb des gültigen Bereichs

.List = Sheets(Tabelle8).Range("B1:B25").Value
13: Typen unverträglich?

doch nichts verstanden....

werde wohl in meinem activesheet viele ausgeblendete Spalten haben :(
Hallo,

Tabelle8 so wie bei mir ist der Name des Blattes den du auf dem Register siehst.
Wenn es der Code Name also im VBA Editor Tabelle8 ist, dann musst das so:



Code:
ComboBox1.List = Tabelle8.Range("A8:A100").Value
Seiten: 1 2