Kombinationsfelder in Tabellen

Kombinationsfeld in eine Tabelle einfügen

Excel, alle Ver­sio­nen

In manchen Fällen ist es hil­fre­ich, wenn Sie für den Wert bzw. Text in ein­er Zelle ver­schiedene Möglichkeit­en vorgeben. Wenn der Benutzer neben sein­er Auswahl auch noch eigene Werte ein­tra­gen kön­nen soll, dann ist ein Kom­bi­na­tions­feld, auch Com­boBox oder Drop­Down-Feld genan­nt, der bessere Möglichkeit. In ein­er kleinen Beispiel­d­atei soll die Füt­terung der Haustiere in Excel doku­men­tiert werden.Da in ver­schiede­nen Ver­sio­nen des Excel vieles anders ist, wer­den hier bei­de „Wel­ten” getren­nt dargestellt.  Das Grundgerüst der Datei sieht grund­sät­zlich so aus, die Abbil­dun­gen hier in der Excel-Ver­sion 2003:

Muster-Datei (Excel 2003)

Muster-Datei (Excel 2003)

▲ nach oben …

Grund­sät­zlich bezieht ein solch­es Feld seine Dat­en, die zur Auswahl ange­boten wer­den, aus einem Bere­ich ein­er Excel-Tabelle. Aus Grün­den der Optik ist es sin­nvoll, wenn diese Liste nicht im direk­ten Sicht­bere­ich ist. Ich habe darum die Zelle AA1 für den ersten Ein­trag gewählt und in den Zeilen darunter die weit­eren (Haus-) Tiere. Das Ganze sieht dann so aus:

Liste der Haustiere

Liste der Haustiere

Damit sind die Vor­bere­itun­gen abgeschlossen. Im näch­sten Schritt soll die Com­boBox einge­fügt wer­den. Als spätere Platzierung sehe ich E2 vor. Es führen mehrere Wege zum Ziel, ich zeige Ihnen hier den jew­eils prak­tik­a­bel­sten auf; „jew­eils”, weil mit der Excel-Ver­sion 2007 ein grundle­gen­der Bruch im Ausse­hen und auch Vorge­hen geschaf­fen wor­den ist. Darum werde ich hier zwei Ver­sio­nen vorstellen, als typ­is­che Vertreter Excel 2003 und Excel 2007.

▲ nach oben …

Excel 2003

Zu Beginn wählen Sie aus dem Menü Sym­bol­leis­ten den Unter­punkt Steuerele­ment-Tool­box:

Menü-Auswahl

Menü-Auswahl

Nach dem loslassen der Maus­taste wird das Fen­ster mit den Steuerele­menten erscheinen. Wahrschein­lich ist es bei Ihnen nur zweis­paltig und dafür länger. Sie kön­nen durch ziehen die Form beliebig verän­dern:

Steuerelemente Toolbox (Version 2003)

Steuerele­mente Tool­box (Ver­sion 2003)

Ein Klick auf das Sym­bol mit dem Kom­bi­na­tions­feld und der Mauszeiger wird zu einem Kreuz. Gehen Sie in die Nähe des gewün­scht­en Zielorts und ziehen Sie bei gedrück­ter Maus­taste einen Rah­men, der in etwa die Größe des kün­fti­gen Kom­bi­na­tions­feldes hat. Auf der fol­gen­den Abbil­dung sehen Sie den Mauszeiger, den ich in dieser Posi­tion los lasse:

Eingefügtes Kombinationsfeld (Excel 2003)

Einge­fügtes Kom­bi­na­tions­feld (Excel 2003)

Die Größe des Feldes ist damit bes­timmt. Prinzip­iell hätte auch ein ein­fach­er Klick im Tabel­len­blatt gere­icht. Dann wäre die Größe der Box aber klein­er, ein­fach zu klein. Nun kann das Fen­ster mit den Steuerele­menten durch einen Klick auf das x‑förmige Kreuz in der oberen recht­en Ecke geschlossen wer­den:

Markierte ComboBox (Excel 2003)

Markierte Com­boBox (Excel 2003)

Drei Dinge sind in dieser Ansicht bemerkenswert:

  • Das Drop­Down-Feld ist als solch­es deut­lich erkennbar und auch in der für diese Felder typ­is­chen Form markiert.
  • Dieses Ele­ment hat automa­tisch den Namen ComboBox1 bekom­men, siehe ober­halb des Spal­tenkopfes A.
  • Automa­tisch wurde eine EINBETTEN-Funk­tion erstellt.

Ein Recht­sklick auf die Com­boBox und …

Nach einem Rechtsklick (Excel 2003)

Nach einem Recht­sklick (Excel 2003)

… die Eigen­schaften anklick­en. Dann erscheint ein aus­ge­sprochen unüber­sichtlich­es Fen­ster mit vie­len, vie­len Möglichkeit­en:

Eigenschaften festlegen

Eigen­schaften fes­tle­gen

Die bei­den für unser Vorhaben wichti­gen Ein­träge sind in der obi­gen Abbil­dung gelb gemark­ert. In den recht­en Bere­ich wer­den Sie jew­eils eine Zel­ladresse bzw. einen Bere­ich eingeben.

Linked­Cell enthält jene Zelle, wo der aus­gewählte Ein­trag des Kom­bi­na­tions­feldes einge­tra­gen wird. Im ersten Schritt wird dieses immer A2 sein, also die erste Zeile unter der Über­schrift „Hausti­er”. Später wird das noch so angepasst, dass automa­tisch die erste freie Zeile ver­wen­det wird.

List­Fill­Range beze­ich­net den Bere­ich, wo die Dat­en für die anzuzeigende Liste aus­gewählt wer­den.

Mit dem let­zt­ge­nan­nten Punkt begin­nen wir auch. Es soll erst ein­mal ein funk­tion­ieren­des Drop­Down erstellt wer­den, für das Erfol­gser­leb­nis :). Dabei spielt keine Rolle, dass das Kom­bi­na­tions­feld noch nicht so posi­tion­iert ist, wie es im End­ef­fekt sein wird.

▲ nach oben …

Der Bere­ich, wo die Dat­en für die Liste ste­hen, ist ja bekan­nt: In AA1:AA7 ste­hen die Haustiere. Also tra­gen Sie auch AA1:AA7 so in das Eingabefeld ein:

ListFillRange ausfüllen

List­Fill­Range aus­füllen

Falls das Eigen­schaften-Fen­ster nun stört, kön­nen Sie es erst ein­mal schießen. Wenn Sie später den zweit­en Wert eingeben, dann bitte wieder öff­nen, klar. Der Übung hal­ber wäre des schließen gut.

Wahrschein­lich wird das Drop­Down-Feld immer noch in der typ­is­chen Art markiert sein, mit den Kreisen als Anfass­er für die Größe­nan­pas­sung. Wenn Sie nun auf die Com­boBox Klick­en, dann wird sich gar nichts tun. Es klappt auch keine Auswahl aus. Das liegt daran, dass Sie sich im Entwurf­s­modus befind­en. Um das zu ändern, Klick­en Sie auf das erste Sym­bol in der Steuerele­mente – Box:

Entwurfsmodus beenden

Entwurf­s­modus been­den

Die Steuerele­mente-Box kön­nen Sie jet­zt schließen. Nun ste­ht auch das Kom­bi­na­tions­feld schön frei da. Ein Klick auf den nach unten zeigen­den Pfeil rechts und der Erfolg ist gegeben:

Aufgeklapptes DropDown

Aufgeklapptes Drop­Down

Nun ein Klick auf ein anderes Hausti­er und der gewählte Wert wird in die Eingabezeile über­nom­men:

Die Auswahl ist getroffen

Die Auswahl ist getrof­fen

Mehr kann zur Zeit auch noch nicht geschehen. Denn Excel weiß ja gar nicht, wohin diese Auswahl nun geschrieben wer­den soll, welch­es die Ziel-Adresse ist. Den Wert tra­gen Sie nun in dem Eigen­schaften – Fen­ster in die Zeile Linked­Cell ein, also die ver­Link­te Zelle. In unserem Fall ist das A2. Sie wer­den erken­nen, dass das sehr gut funk­tion­iert. Immer wenn Sie eine neue Auswahl tre­f­fen, wird diese in A2 über­nom­men.

In vie­len Fällen ist das so auch aus­re­ichend. Aber hier soll ja eine län­gere Liste erstellt wer­den, wo über einen größeren Zeitraum alle Mahlzeit­en der Lieblinge erfasst wer­den. Da bleibt eigentlich nur die Möglichkeit, dieses Com­boBox für jede Zeile einzeln zu erstellen und die Eigen­schaften entsprechend anzu­passen.

Wie gesagt, eigentlich. Mit ein­er kleinen Rou­tine in der Makrosprache des Excel (VBA) kön­nen Sie das umge­hen und die Eigen­schaften des Drop­Downs wer­den per Pro­gramm immer so angepasst, dass automa­tisch die erste freie, leere Zeile der Spalte A als Zielort für die Auswahl ver­wen­det wird.

Auch wenn sich das total kom­pliziert anhört, ganz so schlimm ist es nicht. Und ich werde Sie Schritt für Schritt begleit­en. Acht­en Sie zu Beginn darauf, dass Sie sich in der Tabelle1 befind­en. Dann betäti­gen Sie die Tas­tenkom­bi­na­tion AltF11. Im Nor­mal­fall wer­den Sie dann ein Fen­ster sehen, das dem in der fol­gen­den Abbil­dung ähnelt:

Der VBA-Editor

Der VBA-Edi­tor

Sollte der rechte Teil des Fen­sters nur grau sein, dann machen Sie bitte einen Dop­pelk­lick auf den Ein­trag Tabelle 1 (Tabelle1), dann wird sich rechts das Edi­tor – Fen­ster öff­nen. Und falls dort nicht der Ein­trag Option Explic­it drin­nen ste­ht, geben Sie ihn bitte nur in Klein­buch­staben geschrieben ein. Wenn Sie sich nicht ver­schrieben haben, wird die Schreib­weise automa­tisch so umge­wan­delt, wie im obi­gen Bild gezeigt. Set­zen Sie den Schreibcur­sor, die Schreib­marke also, in eine freie Zeile darunter.

Anschließend öff­nen Sie in diesem Fen­ster das Drop­Down (All­ge­mein) und Klick­en dann auf den Ein­trag Ihrer Com­boBox. Nor­maler­weise ist es die ComboBox1, wie auch hier gezeigt.

Auswahl der ComboBox

Auswahl der Com­boBox

Sofort nach dem Klick wird sich im Bere­ich darunter etwas tun. Es wurde automa­tisch ein Pro­gram­mgerüst einge­fügt und der Schreibcur­sor blinkt im Freiraum zwis­chen den bei­den Zeilen. Der Name dieser Proze­dur (so nen­nt man solche Pro­gramme) lässt Sie erah­nen, dass das etwas mit einem Ereig­nis zu tun hat. Stimmt, immer wenn sich der Inhalt der Com­boBox ändert wird der Code, welch­er gle­ich noch eingegeben wird, aus­ge­führt.

Die noch leere Prozedur

Die noch leere Proze­dur

Drück­en Sie nun ein­mal Tab, damit der fol­gende Code etwas eingerückt ist. Das ist nicht unbe­d­ingt erforder­lich, aber jed­er erfahrene Pro­gram­mier­er schätzt das als guten Stil. Geben Sie nun fol­gen­den Code als ganz nor­malen Text ein: me.

automatische Vorschläge der Entwicklungsumgebung

automa­tis­che Vorschläge der Entwick­lung­sumge­bung

Sie erken­nen eine kleine List­Box, wo Ihnen diverse Ein­träge zur Auswahl ange­boten wer­den. Da Sie die ComboBox1 ansprechen wollen, geben Sie doch ein­mal die ersten drei Zeichen com ein:

Vorschlag: ComboBox

Vorschlag: Com­boBox

Spätestens jet­zt wird Ihnen genau das Richtige ange­boten, näm­lich die ComBobox1. Wenn diese markiert ist, ein­fach Tab und die Auswahl wird in die Codezeile über­nom­men. Den restlichen Code geben Sie bitte per Hand ein. Die kom­plette Zeile sieht dann so aus:

Me.ComboBox1.LinkedCell = „A” & _

Me.Cells(Rows.Count, 1).End(xlUp).Row + 1

Da es auf dem Bild­schirm nicht immer so gut zu lesen ist, hier ein Hin­weis: in der Codezeile sind fast auss­chließlich Punk­te als tren­nen­des Ele­ment. Nur hin­ter dem Count ist ein Kom­ma, kein Punkt. – Sie sollen und müssen diesen Code nicht ver­ste­hen, das ist nicht der Sinn dieses Exkurs­es. Wichtig ist nur, dass er läuft.

▲ nach oben …

Wenn Sie etwas mehr Kom­fort haben wollen, indem nach der Auswahl gle­ich die Zelle neben dem neu geschriebe­nen Ein­trag markiert wird, dann ver­wen­den Sie den hier fol­gen­den Code. Dazu ein­fach die alten Zeilen von Pri­vate Sub bis End Sub löschen und die fol­gen­den Pro­gram­mzeilen ein­fü­gen. Das geht am lei­ht­esten, wenn Sie die Zeilen hier im Brows­er markieren, kopieren und dann im Edi­tor des Excel wieder ein­fü­gen.

Pri­vate Sub ComboBox1_Change()

Dim lngNewRow As Long

lngNewRow = _

ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

ActiveSheet.Range(„B” & lngNewRow – 1).Select

Me.ComboBox1.LinkedCell = „A” & lngNewRow

End Sub

Zugegeben, das ist die allere­in­fach­ste Form der Pro­gram­mierung, die Sie ver­wen­den kön­nen. Da sind noch Schwach­stellen drin. Beispiel­sweise müssen Sie die Eigen­schaft Linked­Cell per Hand über das Eigen­schaften-Fen­ster ändern, wenn Sie Zeilen am Ende gelöscht haben. In einem „richti­gen” Pro­jekt wird so etwas natür­lich berück­sichtigt. Aber das ist eine andre Baustelle.

Bleibt noch eine Kleinigkeit zu erledi­gen, die Posi­tion­ierung der Com­boBox. Wenn Sie im derzeit­i­gen Sta­tus ver­suchen, dieses Objekt zu ver­schieben, wird Ihnen das nicht gelin­gen. Das Kom­bi­na­tions­feld lässt sich ein­fach nicht anfassen. Die Abhil­fe ist recht sim­pel: Sie müssen wieder den Bear­beitungsmodus aktivieren, dann geht das auch her­vor­ra­gend. Lassen Sie sich also wieder die Sym­bol­leiste Steuerele­ment – Tool­box anzeigen und Klick­en Sie auf die Schalt­fläche für den Entwurf­s­modus:

In den Entwurfsmodus schalten

In den Entwurf­s­modus schal­ten

Jet­zt sind auch wieder die typ­is­chen Anfass­er zu sehen. Zeigen Sie mit der Maus mit­ten in das Objekt; der Mauszeiger ist nun zu einem Kreuz mit vier Pfeil­spitzen an den Enden gewor­den. Nun ver­schieben Sie das Kom­bi­na­tions­feld an jene Posi­tion, wo es endgültig ste­hen soll. Dabei ist es sehr hil­fre­ich, wenn Sie Alt gedrückt hal­ten. Dann rastet näm­lich eine der Eck­en immer genau in einem Eck­punkt ein­er Tabel­len­zelle ein. Somit ist es ein Kinder­spiel, das Drop­Down-Feld exakt bei D2 in der linken oberen Ecke zu posi­tion­ieren.

Weit­er (Excel 2007 über­sprin­gen)

▲ nach oben …

Excel 2007

Natür­lich sieht Ihre Ober­fläche des Excel ganz anders aus, als im ersten Bild gezeigt. Und wahrschein­lich wird sich der Sym­bol-Bere­ich, die Rib­bons bei Ihnen etwas anders darstellen als auf diesen Bildern. Das liegt daran, dass ich für diese Doku­men­ta­tion das Fen­ster der Anwen­dung (Excel) so stark verklein­ert habe, dass Bild­schirm­fo­tos in ein­er sin­nvollen Größe sind. Mit etwas suchen wer­den Sie gewiss auch rasch fündig wer­den.

Zuallererst prüfen Sie bitte, ob in Ihrer Menüleiste die Auswahl Entwick­ler­tools zu sehen ist. Bei der Stan­dard-Instal­la­tion sind diese nicht vorhan­den! In dem Fall müssen Sie die Tools aktivieren. Wie das geht, erfahren Sie hier.

Auswahl für Steuerelemente

Auswahl für Steuerele­mente

Klick­en Sie zuerst auf die Reg­is­terkarte Entwick­ler­tools. In der obi­gen Abbil­dung ist der Text etwas verkürzt dargestellt, weil das Anwen­dungs­fen­ster für diese Bild­schirm-Auf­nah­men stark verklein­ert wor­den ist. Danach wer­den die dazuge­höri­gen Rib­bons angezeigt. Klick­en Sie nun auf die große Schalt­fläche Ein­fü­gen

Entwurfsmodus eingeschaltet

Entwurf­s­modus eingeschal­tet

… und wählen dann bei den ActiveX-Steuerele­menten das Kom­bi­na­tions­feld aus. Die For­mu­la­rs­teuerele­mente sind nur für For­mu­la­re gedacht! Ein Klick auf das Sym­bol und zeigen Sie danach im Tabel­len­blatt in die Nähe der Ziel­po­si­tion. Der kreuzför­mige Mauszeiger weist die linke obere Ecke der Com­boBox aus, wenn Sie mit einem Klick die Posi­tion­ierung abschließen.

Die Combobox ist eingefügt

Die Com­bobox ist einge­fügt

Das Kom­bi­na­tions­feld ist einge­fügt. Die Posi­tion ist erst ein­mal OK so, ganz zum Schluss wer­den noch Feinko­r­rek­turen vorgenom­men. Drei Dinge sind in dieser Ansicht bemerkenswert:

  • Die große Schalt­fläche Entwurf­s­modus ist deut­lich erkennbar aktiviert.
  • Das Drop­Down-Feld hat automa­tisch den Namen ComboBox1 bekom­men, siehe ober­halb des Spal­tenkopfes A.
  • Automa­tisch wurde eine EINBETTEN-Funk­tion erstellt.

Das Feld ist für die teil­weise län­geren Namen zu schmal. Darum sollte es etwas ver­bre­it­ert wer­den. Dazu Klick­en Sie erst ein­mal auf die Com­boBox. Es wer­den sich an allen vier Eck­en und mit­tig an jed­er Seite die kre­is­för­mi­gen Anfass­er zeigen. Wenn Sie nun auf den linken Rand über den mit­tleren Anfass­er zeigen, verän­dert sich die Form des Cur­sors zu einem hor­i­zon­tal­en Dop­pelpfeil:

Die ComboBox verbreitern

Die Com­boBox ver­bre­it­ern

Jet­zt Klick­en, fes­thal­ten und ziehen. Ist die gewün­schte Größe erre­icht, ein­fach loslassen. – Wenn die Anfass­er nicht sicht­bar sind und auch ein erneuter Klick mit­ten auf das Kom­bi­na­tions­feld keinen Erfolg bringt, dann ist der Entwurf­s­modus nicht aktiviert. Ein Klick auf den (das?) Rib­bon und die bräun­liche Hin­ter­grund­farbe zeigt die Aktiv­ität an. Diese Funk­tion­al­ität wird auch weit­er gebraucht.

Acht­en Sie darauf, dass das Drop­Down aktiviert ist, die Anfass­er also zu sehen sind. Ein Recht­sklick auf die Com­boBox und …

Eigenschaften der ComboBox anzeigen

Eigen­schaften der Com­boBox anzeigen

… die Eigen­schaften anklick­en. Dann erschein ein aus­ge­sprochen unüber­sichtlich­es Fen­ster mit vie­len, vie­len Möglichkeit­en:

Die beiden wichtigsten Felder

Die bei­den wichtig­sten Felder

Die bei­den für unser Vorhaben wichti­gen Ein­träge sind in der obi­gen Abbil­dung gelb gemark­ert. In die rechte Spalte wer­den Sie jew­eils eine Zelle oder einen Bere­ich eingeben.

Linked­Cell enthält jene Zelle, wo der aus­gewählte Ein­trag des Kom­bi­na­tions­feldes einge­tra­gen wird. Im ersten Schritt wird dieses immer A2 sein, also die erste Zeile unter der Über­schrift „Hausti­er”. Später wird das noch so angepasst, dass automa­tisch die erste freie Zeile ver­wen­det wird.

List­Fill­Range beze­ich­net den Bere­ich, wo die Dat­en für die anzuzeigende Liste aus­gewählt wer­den.

▲ nach oben …

Mit dem let­zt­ge­nan­nten Punkt begin­nen wir auch. Es soll erst ein­mal ein funk­tion­ieren­des Drop­Down erstellt wer­den, für das Erfol­gser­leb­nis :). Dabei spielt keine Rolle, dass das Kom­bi­na­tions­feld noch nicht so posi­tion­iert ist, wie es im End­ef­fekt sein wird. Der Bere­ich ist ja bekan­nt: In AA1:AA7 ste­hen die Dat­en. Also tra­gen Sie diesen Wert so in das Eingabefeld ein:

ListFillRange ausfüllen

List­Fill­Range aus­füllen

Falls das Eigen­schaften-Fen­ster nun stört, kön­nen Sie es erst ein­mal schießen. Wenn Sie später den zweit­en Wert eingeben, dann bitte wieder öff­nen, klar.

Das Drop­Down-Feld ist immer noch markiert, eventuell mit den sicht­baren Kreisen als Anfass­er für die Größe­nan­pas­sung. Wenn Sie nun auf die Com­boBox ein, zwei Mal Klick­en, dann wird sich gar nichts tun. Es klappt keine Auswahl aus. Das liegt daran, dass Sie sich noch im Entwurf­s­modus befind­en. Um das zu ändern, Klick­en Sie auf die bekan­nte Schalt­fläche und diese wird dann auch die Farbe der Nach­bar­felder annehmen.

Nun ste­ht auch das Kom­bi­na­tions­feld in jedem Fall schön frei da. Auch wenn Sie mit­ten hinein Klick­en, wird sich kein Anfass­er zeigen. Jedoch ein Klick auf den nach unten zeigen­den Pfeil rechts und der Erfolg ist gegeben:

Das DropDown funktioniert

Das Drop­Down funk­tion­iert

Wiederum ein Klick auf ein anderes Hausti­er und der gewählte Wert wird in die Eingabezeile über­nom­men:

Der Wert wurde übernommen

Der Wert wurde über­nom­men

Mehr kann ja auch noch nicht geschehen. Denn Excel weiß ja nicht, wohin diese Auswahl denn nun geschrieben wer­den soll, welch­es die Ziel-Zelle ist. Das tra­gen Sie nun in dem Eigen­schaften – Fen­ster in die Zeile Linked­Cell ein, also die ver­Link­te Zelle. In unserem Fall ist das A2. Sie wer­den erken­nen, dass das sehr gut funk­tion­iert. Immer wenn Sie eine neue Auswahl tre­f­fen, wird diese in A2 über­nom­men.

In vie­len Fällen ist das auch aus­re­ichend. Aber hier soll ja eine län­gere Liste erstellt wer­den, wo über einen größeren Zeitraum alle Mahlzeit­en der Lieblinge erfasst wer­den. Da bleibt eigentlich nur die Möglichkeit, dieses Com­boBox für jede Zeile zu erstellen und die Eigen­schaften entsprechend anzu­passen. Wie gesagt, eigentlich. Mit ein­er kleinen Rou­tine in der Makrosprache des Excel kön­nen Sie das umge­hen und die Eigen­schaften des Drop­Downs wer­den per Pro­gramm immer so angepasst, dass automa­tisch die erste freie Zeile der Spalte A als Zielort für die Auswahl ver­wen­det wird.

▲ nach oben …

Auch wenn sich das total kom­pliziert anhört, ganz so schlimm ist es nicht. Und ich werde Sie Schritt für Schritt begleit­en. Acht­en Sie zu Beginn darauf, dass Sie sich in der Tabelle1 befind­en. Dann betäti­gen Sie AltF11. Im Nor­mal­fall wer­den Sie dann ein Fen­ster sehen, das dem in der fol­gen­den Abbil­dung ähnelt:

Der VBA-Editor

Der VBA-Edi­tor

Sollte der rechte Teil des Fen­sters nur grau sein, dann machen Sie bitte einen Dop­pelk­lick auf den Ein­trag Tabelle 1 (Tabelle1), dann wird sich rechts das Edi­tor – Fen­ster öff­nen. Und falls dort nicht der Ein­trag Option Explic­it drin­nen ste­ht, geben Sie ihn bitte nur in Klein­buch­staben geschrieben ein. Wenn Sie sich nicht ver­schrieben haben, wird die Schreib­weise automa­tisch so umge­wan­delt, wie im obi­gen Bild gezeigt. Set­zen Sie den Schreibcur­sor, die Schreib­marke also, in eine freie Zeile darunter.

Anschließend öff­nen Sie in diesem Fen­ster das Drop­Down (All­ge­mein) und Klick­en dann auf den Ein­trag Ihrer Com­boBox. Nor­maler­weise ist es die ComboBox1, wie auch hier gezeigt.

Auswahl der ComboBox

Auswahl der Com­boBox

Sofort nach dem Klick wird sich im Bere­ich darunter etwas tun. Es wurde automa­tisch ein Pro­gram­mgerüst einge­fügt und der Schreibcur­sor blinkt im Freiraum zwis­chen den bei­den Zeilen. Der Name dieser Proze­dur (so nen­nt man solche Pro­gramme) lässt Sie erah­nen, dass das etwas mit einem Ereig­nis zu tun hat. Stimmt, immer wenn sich der Inhalt der Com­boBox ändert wird der Code, welch­er gle­ich noch eingegeben wird, aus­ge­führt.

Das Grundgerüst der Prozedur

Das Grundgerüst der Proze­dur

Drück­en Sie nun einem Tab, damit der fol­gende Code etwas eingerückt ist. Das ist nicht unbe­d­ingt erforder­lich, aber jed­er gute Pro­gram­mier­er schätzt das als guten Stil. Geben Sie nun fol­gen­den Code als ganz nor­malen Text ein: me.

Kleine Hilfen beim Programmieren

Kleine Hil­fen beim Pro­gram­mieren

Sie erken­nen eine kleine List­Box, wo Ihnen diverse Ein­träge zur Auswahl ange­boten wer­den. Da Sie die ComboBox1 ansprechen wollen, geben Sie doch ein­mal die ersten drei Zeichen com ein:

Das vermeidet Schreibfehler

Das ver­mei­det Schreibfehler

Spätestens jet­zt wird Ihnen genau das Richtige ange­boten, näm­lich die ComBobox1. Wenn diese markiert ist, ein­fach Tab und die Auswahl wird in die Codezeile über­nom­men. Den restlichen Code geben Sie bitte per Hand ein. Die kom­plette Zeile sieht dann so aus:

Me.ComboBox1.LinkedCell = „A” & _

Me.Cells(Rows.Count, 1).End(xlUp).Row + 1

Da es auf dem Bild­schirm nicht immer so gut zu lesen ist, hier ein Hin­weis: in der Codezeile sind fast auss­chließlich Punk­te als tren­nen­des Ele­ment. Nur hin­ter dem Count ist ein Kom­ma, kein Punkt. – Sie sollen und müssen diesen Code nicht ver­ste­hen, das ist nicht der Sinn dieses Exkurs­es. Wichtig ist nur, dass er läuft.

▲ nach oben …

Wenn Sie etwas mehr Kom­fort haben wollen, indem nach der Auswahl gle­ich die Zelle neben dem neu geschriebe­nen Ein­trag markiert wird, dann ver­wen­den Sie diesen Code. Dazu ein­fach die alten Zeilen von Pri­vate Sub bis End Sub löschen und die fol­gen­den Pro­gram­mzeilen ein­fü­gen. Das geht am leicht­esten, wenn Sie die Zeilen hier markieren, kopieren und dann im Edi­tor des Excel wieder ein­fü­gen.

Pri­vate Sub ComboBox1_Change()

Dim lngNewRow As Long

lngNewRow = _

ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

ActiveSheet.Range(„B” & lngNewRow – 1).Select

Me.ComboBox1.LinkedCell = „A” & lngNewRow

End Sub

Zugegeben, das ist die allere­in­fach­ste Form der Pro­gram­mierung, die Sie ver­wen­den kön­nen. Da sind noch Schwach­stellen drin. Beispiel­sweise müssen Sie die Eigen­schaft Linked­Cell per Hand über das Eigen­schaften-Fen­ster ändern, wenn Sie Zeilen am Ende gelöscht haben. In einem „richti­gen” Pro­jekt wird so etwas natür­lich berück­sichtigt. Aber das ist eine andere Baustelle.

Bleibt noch eine Kleinigkeit zu erledi­gen, die Posi­tion­ierung der Com­boBox. Wenn Sie im derzeit­i­gen Sta­tus ver­suchen, dieses Objekt zu ver­schieben, wird Ihnen das nicht gelin­gen. Das Kom­bi­na­tions­feld lässt sich ein­fach nicht anfassen. Die Abhil­fe ist recht sim­pel: Sie müssen wieder den Bear­beitungsmodus aktivieren, dann geht das auch her­vor­ra­gend. Ein Klick auf die Schalt­fläche, dann ein Klick auf das Drop­Down-Feld. Jet­zt sind auch wieder die typ­is­chen Anfass­er zu sehen. Zeigen Sie mit der Maus mit­ten in das Objekt; der Mauszeiger ist ein Kreuz mit vier Pfeil­spitzen an den Enden. Nun ver­schieben Sie das Kom­bi­na­tions­feld an jene Posi­tion, wo es endgültig ste­hen soll. Dabei ist es sehr hil­fre­ich, wenn Sie Alt gedrückt hal­ten. Dann rastet näm­lich eine der Eck­en immer genau in einem Eck­punkt ein­er Tabel­len­zelle ein. Somit ist es ein Kinder­spiel, das Drop­Down-Feld exakt bei C2 zu posi­tion­ieren.

Damit ist dieses kleine Pro­jekt been­det. Wenn Sie noch Fra­gen haben oder kleinere Anpas­sun­gen wün­schen, senden Sie uns eine Mail.

[NachOben­Let­zte Verweis=„ML: Com­boBox in Tabelle”]
Dieser Beitrag wurde unter Mit VBA/Makro, Musterlösungen, Tabelle und Zelle abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.