Discussion:
VBA Anfängerproblem mit Dropdown
(zu alt für eine Antwort)
Frederik Hirche
2007-01-30 01:29:09 UTC
Permalink
Hallo,
ich habe mir vor ein paar Tagen das Buch "Excel-VBA" von Bernd Held gekauft
und versuche seitdem mich ein wenig in VBA hereinzuarbeiten, indem ich ein
konkretes Projekt angehe. Jetzt zum Problem: Auch wenn das Buch sich gut
lesen lässt und ich grundsätzlich auch verstehe, was welcher Ausdruck im
Code bedeuten soll, bringt auch der abgeschriebene Code nicht das Ergebnis
hervor, dass er soll.

Konkretes Problem:
Ich will ein Dropdown-Feld einfügen, dass seine Werte aus einem
Tabellenbereich auslesen soll und den gewählten Wert dann in einem anderen
Feld ausgibt. Laut Buch geht das so:

Sub ComboboxFüllenBezug()
Worksheets("Tabelle4").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
End Sub

Und für die Ausgabe:

Private Sub ComboBox1_Change()
ComboBox1.LinkedCell = "A1"
End Sub

Bei mir jedoch füllt sich weder die eingefügte Kombobox aus den Zellen F1:F7
aus Tabellenblatt 4 noch kann ich demzufolge überprüfen ob im Feld A1 der
ausgewählte Wert ausgegeben wird.

Was mache ich falsch?

Danke,
Frederik
Reiner Wolff
2007-01-30 06:27:34 UTC
Permalink
Moin Frederik,
Post by Frederik Hirche
ich habe mir vor ein paar Tagen das Buch "Excel-VBA" von Bernd Held gekauft
und versuche seitdem mich ein wenig in VBA hereinzuarbeiten, indem ich ein
konkretes Projekt angehe.
Hey, willkommen im Club der Excel-Programmierer.
Post by Frederik Hirche
Ich will ein Dropdown-Feld einfügen, dass seine Werte aus einem
Tabellenbereich auslesen soll und den gewählten Wert dann in einem anderen
Feld ausgibt.
Ich habe den geposteten Code getestet, er funktioniert bei mir problemlos.
Post by Frederik Hirche
Sub ComboboxFüllenBezug()
Worksheets("Tabelle4").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
End Sub
Deswegen frage ich die absoluten Grundlagen für den Code ab:
Der Code selbst fügt kein Dropdown-Feld ein. Du hast das Feld bereits
vorher auf dem Tabellenblatt plaziert (BTW: ich hab gerade mit dem
Steuerelement auf Tabellenblättern jede Menge Ärger im Zusammenhang mit
fixierten Fenstern und dem Ansichtszoom)?
Damit das Kombinationsfeld mit Inhalt gefüllt wird, muss die obige Prozedur
auch irgendwo ausgeführt werden, da es sich dabei um keinerlei Ereignis
handelt, dass "automatisch" durchlaufen wird, nur weil es im richtigen
Code-Modul steht. Ich habe bei meinem Test, die Prozedur selbst einfach mit
F5 gestartet (als der Cursor innerhalb der Prozedur stand).
Post by Frederik Hirche
Private Sub ComboBox1_Change()
ComboBox1.LinkedCell = "A1"
End Sub
Im richtigen Code-Modul funktionierte dass dann auch problemlos.

HTH
Gruß aus Kiel
Reiner
--
So weit wir wissen, hatte unser Computer nie einen unentdeckten Fehler.
Frederik Hirche
2007-01-30 12:09:44 UTC
Permalink
Danke für die Antwort Reiner,

habe jetzt meinen Fehler gefunden: Ich war so blöd den Code als Modul in
Objekt "Tabelle1" und nicht "Tabelle4" einzüfügen, wodurch natürlich der
Bezug in der Ausgaberoutine fehlt.

LG,
Frederik der wünschte er wäre ein Excel-Crack
Post by Reiner Wolff
Moin Frederik,
Post by Frederik Hirche
ich habe mir vor ein paar Tagen das Buch "Excel-VBA" von Bernd Held gekauft
und versuche seitdem mich ein wenig in VBA hereinzuarbeiten, indem ich ein
konkretes Projekt angehe.
Hey, willkommen im Club der Excel-Programmierer.
Post by Frederik Hirche
Ich will ein Dropdown-Feld einfügen, dass seine Werte aus einem
Tabellenbereich auslesen soll und den gewählten Wert dann in einem anderen
Feld ausgibt.
Ich habe den geposteten Code getestet, er funktioniert bei mir problemlos.
Post by Frederik Hirche
Sub ComboboxFüllenBezug()
Worksheets("Tabelle4").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
End Sub
Der Code selbst fügt kein Dropdown-Feld ein. Du hast das Feld bereits
vorher auf dem Tabellenblatt plaziert (BTW: ich hab gerade mit dem
Steuerelement auf Tabellenblättern jede Menge Ärger im Zusammenhang mit
fixierten Fenstern und dem Ansichtszoom)?
Damit das Kombinationsfeld mit Inhalt gefüllt wird, muss die obige Prozedur
auch irgendwo ausgeführt werden, da es sich dabei um keinerlei Ereignis
handelt, dass "automatisch" durchlaufen wird, nur weil es im richtigen
Code-Modul steht. Ich habe bei meinem Test, die Prozedur selbst einfach mit
F5 gestartet (als der Cursor innerhalb der Prozedur stand).
Post by Frederik Hirche
Private Sub ComboBox1_Change()
ComboBox1.LinkedCell = "A1"
End Sub
Im richtigen Code-Modul funktionierte dass dann auch problemlos.
HTH
Gruß aus Kiel
Reiner
--
So weit wir wissen, hatte unser Computer nie einen unentdeckten Fehler.
Frederik Hirche
2007-01-30 12:16:39 UTC
Permalink
Hi,
nun folgen aber die nächsten zwei dummen Probleme:

1. Ich hätte gerne das Dropdown so, dass der erste Listeneintrag
vorausgewält ist, d.h. schon zu sehen ist bevor man das Menü aufklappt.

2. Wie stelle ich den Code um, so dass das Dropdown in Tabelle1 ist, seine
Daten aber aus Tabelle4 bezieht? Meine Versuche führen da zu
Fehlermeldungen.

Gruß und Dank im Voraus,
Frederik
Post by Reiner Wolff
Moin Frederik,
Post by Frederik Hirche
ich habe mir vor ein paar Tagen das Buch "Excel-VBA" von Bernd Held gekauft
und versuche seitdem mich ein wenig in VBA hereinzuarbeiten, indem ich ein
konkretes Projekt angehe.
Hey, willkommen im Club der Excel-Programmierer.
Post by Frederik Hirche
Ich will ein Dropdown-Feld einfügen, dass seine Werte aus einem
Tabellenbereich auslesen soll und den gewählten Wert dann in einem anderen
Feld ausgibt.
Ich habe den geposteten Code getestet, er funktioniert bei mir problemlos.
Post by Frederik Hirche
Sub ComboboxFüllenBezug()
Worksheets("Tabelle4").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
End Sub
Der Code selbst fügt kein Dropdown-Feld ein. Du hast das Feld bereits
vorher auf dem Tabellenblatt plaziert (BTW: ich hab gerade mit dem
Steuerelement auf Tabellenblättern jede Menge Ärger im Zusammenhang mit
fixierten Fenstern und dem Ansichtszoom)?
Damit das Kombinationsfeld mit Inhalt gefüllt wird, muss die obige Prozedur
auch irgendwo ausgeführt werden, da es sich dabei um keinerlei Ereignis
handelt, dass "automatisch" durchlaufen wird, nur weil es im richtigen
Code-Modul steht. Ich habe bei meinem Test, die Prozedur selbst einfach mit
F5 gestartet (als der Cursor innerhalb der Prozedur stand).
Post by Frederik Hirche
Private Sub ComboBox1_Change()
ComboBox1.LinkedCell = "A1"
End Sub
Im richtigen Code-Modul funktionierte dass dann auch problemlos.
HTH
Gruß aus Kiel
Reiner
--
So weit wir wissen, hatte unser Computer nie einen unentdeckten Fehler.
em
2007-01-30 13:44:00 UTC
Permalink
hi,
hilft Dir das:
Sub ComboboxFüllenBezug()
Worksheets("Tabelle1").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
Worksheets("Tabelle1").ComboBox1.Value = Worksheets("Tabelle4").Range("F1")
End Sub
--
Ewald
Post by Frederik Hirche
Hi,
1. Ich hätte gerne das Dropdown so, dass der erste Listeneintrag
vorausgewält ist, d.h. schon zu sehen ist bevor man das Menü aufklappt.
2. Wie stelle ich den Code um, so dass das Dropdown in Tabelle1 ist, seine
Daten aber aus Tabelle4 bezieht? Meine Versuche führen da zu
Fehlermeldungen.
Gruß und Dank im Voraus,
Frederik
Post by Reiner Wolff
Moin Frederik,
Post by Frederik Hirche
ich habe mir vor ein paar Tagen das Buch "Excel-VBA" von Bernd Held gekauft
und versuche seitdem mich ein wenig in VBA hereinzuarbeiten, indem ich ein
konkretes Projekt angehe.
Hey, willkommen im Club der Excel-Programmierer.
Post by Frederik Hirche
Ich will ein Dropdown-Feld einfügen, dass seine Werte aus einem
Tabellenbereich auslesen soll und den gewählten Wert dann in einem anderen
Feld ausgibt.
Ich habe den geposteten Code getestet, er funktioniert bei mir problemlos.
Post by Frederik Hirche
Sub ComboboxFüllenBezug()
Worksheets("Tabelle4").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
End Sub
Der Code selbst fügt kein Dropdown-Feld ein. Du hast das Feld bereits
vorher auf dem Tabellenblatt plaziert (BTW: ich hab gerade mit dem
Steuerelement auf Tabellenblättern jede Menge Ärger im Zusammenhang mit
fixierten Fenstern und dem Ansichtszoom)?
Damit das Kombinationsfeld mit Inhalt gefüllt wird, muss die obige Prozedur
auch irgendwo ausgeführt werden, da es sich dabei um keinerlei Ereignis
handelt, dass "automatisch" durchlaufen wird, nur weil es im richtigen
Code-Modul steht. Ich habe bei meinem Test, die Prozedur selbst einfach mit
F5 gestartet (als der Cursor innerhalb der Prozedur stand).
Post by Frederik Hirche
Private Sub ComboBox1_Change()
ComboBox1.LinkedCell = "A1"
End Sub
Im richtigen Code-Modul funktionierte dass dann auch problemlos.
HTH
Gruß aus Kiel
Reiner
--
So weit wir wissen, hatte unser Computer nie einen unentdeckten Fehler.
Frederik Hirche
2007-01-30 14:30:33 UTC
Permalink
Danke Ewald für die präzise und schnelle Hilfe!
Post by Frederik Hirche
hi,
Sub ComboboxFüllenBezug()
Worksheets("Tabelle1").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
Worksheets("Tabelle1").ComboBox1.Value =
Worksheets("Tabelle4").Range("F1")
End Sub
--
Ewald
Post by Frederik Hirche
Hi,
1. Ich hätte gerne das Dropdown so, dass der erste Listeneintrag
vorausgewält ist, d.h. schon zu sehen ist bevor man das Menü aufklappt.
2. Wie stelle ich den Code um, so dass das Dropdown in Tabelle1 ist, seine
Daten aber aus Tabelle4 bezieht? Meine Versuche führen da zu
Fehlermeldungen.
Gruß und Dank im Voraus,
Frederik
Post by Reiner Wolff
Moin Frederik,
Post by Frederik Hirche
ich habe mir vor ein paar Tagen das Buch "Excel-VBA" von Bernd Held gekauft
und versuche seitdem mich ein wenig in VBA hereinzuarbeiten, indem ich ein
konkretes Projekt angehe.
Hey, willkommen im Club der Excel-Programmierer.
Post by Frederik Hirche
Ich will ein Dropdown-Feld einfügen, dass seine Werte aus einem
Tabellenbereich auslesen soll und den gewählten Wert dann in einem anderen
Feld ausgibt.
Ich habe den geposteten Code getestet, er funktioniert bei mir problemlos.
Post by Frederik Hirche
Sub ComboboxFüllenBezug()
Worksheets("Tabelle4").ComboBox1.ListFillRange = "Tabelle4!F1:F7"
End Sub
Der Code selbst fügt kein Dropdown-Feld ein. Du hast das Feld bereits
vorher auf dem Tabellenblatt plaziert (BTW: ich hab gerade mit dem
Steuerelement auf Tabellenblättern jede Menge Ärger im Zusammenhang mit
fixierten Fenstern und dem Ansichtszoom)?
Damit das Kombinationsfeld mit Inhalt gefüllt wird, muss die obige Prozedur
auch irgendwo ausgeführt werden, da es sich dabei um keinerlei Ereignis
handelt, dass "automatisch" durchlaufen wird, nur weil es im richtigen
Code-Modul steht. Ich habe bei meinem Test, die Prozedur selbst einfach mit
F5 gestartet (als der Cursor innerhalb der Prozedur stand).
Post by Frederik Hirche
Private Sub ComboBox1_Change()
ComboBox1.LinkedCell = "A1"
End Sub
Im richtigen Code-Modul funktionierte dass dann auch problemlos.
HTH
Gruß aus Kiel
Reiner
--
So weit wir wissen, hatte unser Computer nie einen unentdeckten Fehler.
Loading...