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
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
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • soldblub
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 ???
09.03.2017, 09:28 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2017, 09:31 von Steffl.)
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!
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • soldblub
09.03.2017, 10:15 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2017, 10:15 von RPP63.)
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28 • soldblub
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.
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: