2.8k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Leute,

also ich habe noch nie mit Visual Basic gearbeitet. Mittlerweile ist mir klar, dass ich für mein Vorhaben eine ComboBox brauche. Ich möchte nun meine Die Daten von der Zelle J10:J13 in diese Box füllen. Aber egal was ich rum schreibe, es funktioniert nicht. Was mus ich da nun machen??

Vielen Dank

Gruß Bine

6 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Bine,

Rechtsklick auf ComboBox, im Kontextmenu "Eigenschaften" wählen,
im Fenster "Eigenschaften" findest Du in der linken Spalte den Eintrag "ListFillRange" rechts daneben gibst Du $J$10:$J$13 ein
unter " LinkedCell" gibst Du die Zelladresse ein, mit der Du die Box verknüpfen willst.

Gruss
Rainer
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Bine,

welchen Typ "ComboBox" verwendest du? Ist es eine ComboBox aus der Steuerelemente-Toolbox, dann wie im vorhergehenden Beitrag beschrieben. Für eine ComboBox aus der Formular-Symbolleiste Rechtsklick -> Steuerelement formatieren und unter Eingabebereich =J10:J13 eintragen (oder im Tabellenblatt den Bereich markieren). Bei einem DropDown-Listenfeld aus Daten Gültigkeit unter Gültigkeitskriterien Zulassen: Liste auswählen und unter Quelle =J10:J13 eintragen (oder im Tabellenblatt den Bereich markieren).

Bis später,
Karin
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Karin,

ich hatte schon im voran gegangenen Beitrag von Bine die ComboBox aus den Steuerelementen vorgeschlagen, deshalb bin ich hier nicht auf das Kombinationsfeld eingegangen.

Ich hielt die ComboBox für günstiger, da man dort die Direktwerte auslesen kann und beim Kombinationfeld nur den Index des Wertes.

Gruss
Rainer
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Rainer,

ich kenne den vorhergehenden Beitrag nicht und andere User ebenfalls nicht. Deshalb ist es kein Fehler, wenn hier der Vollständigkeit halber alle Möglichkeiten aufgezeigt sind.

Beim Dropdown-Listenfeld aus Daten Gültigkeit werden ebenfalls die direkten Werte ausgegeben.

Es stimmt schon, dass die ComboBox aus der Steuerelemente-Toolbox den Inhalt in der LinkedCell direkt wieder gibt, allerdings haben alle Steuerelemente aus der Toolbox den Nachteil, dass sie mit der Zeit unter bestimmten Bedingungen ihr Aussehen verändern - deshalb verwende ich persönlich lieber die aus der Formular-Symbolleiste. Mit einem kleinen Makro, das der ComboBox zugewiesen wird, kann man auch den Inhalt direkt ausgeben (ohne Zellverknüpfung):
Sub Einrag()
Range("B1") = Range("J10:J13").Cells(ActiveSheet.DropDowns(1).ListIndex, 1)
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von binchen580 Einsteiger_in (9 Punkte)
Hallo Rainer, Hallo Karin,

vielen Dank für Eure Antworten! Habe mich jetzt für die ComboBox aus den Steuerelementen entschlossen, weil man da auch noch selber Text rein schreiben kann wenn man will und ich mit der Formatierung von Schrift und Farbe besser zu recht gekommen bin.
Ein Vorteil der ComboBox aus der FormularSymbolleiste wäre gewesen, dass man die Daten schön bequem mit der Maus zuweisen kann.
Mit der Funktion Gültigkeit hab ich versucht zu arbeiten... aber leider war die Auswahlliste dann immer nur sehr klein zu sehen. Von mehreren Seiten wurde mir mitgeteilt, dass man die Schriftgröße nicht ändern kann.

Aber vielen DANK!!

Gruß

Bine
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Bine,

mit einem Trick kann man auch bei Daten Gültigkeit die Schriftgröße "vergrößern". Schreibe folgenden Code ins Codemodul des betreffenden Tabellenblattes:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ooElement As OLEObject
Application.ScreenUpdating = False
If Target.Address = "$C$2" Then
Set ooElement = OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=0, Top:=0, Width:=0, Height:=0)
With ooElement
.Top = Range("C2").Top
.Left = Range("C1").Left
.Width = Range("C2:D2").Width
.Height = Range("C2:C3").Height
.ListFillRange = "$A$1:$A$7"
.LinkedCell = ""
.Name = "DropDownZoom"
.Activate
.Object.Font.Size = 12
.Object.DropDown
.Object.ListIndex = 0
End With
End If
Set ooElement = Nothing
Application.ScreenUpdating = True
End Sub

Private Sub DropDownZoom_Change()
Range("C2") = DropDownZoom
End Sub

Private Sub DropDownZoom_LostFocus()
Range("C2") = DropDownZoom
ActiveSheet.OLEObjects(1).Delete
End Sub

Die Zelle mit dem DropDown-Listenfeld und die Ausgabezelle musst du natürlich anpassen.

Bis später,
Karin
...