Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ComboBox in Zelle mit VBA befüllen

1,135 views
Skip to first unread message

Sebastian Lange

unread,
Oct 23, 2009, 8:33:01 AM10/23/09
to
Hallo,

Ich habe eine Zelle die eine ComboBox integriert hat(wie das genau heisst
weiss ich nicht) und ich suche einen VBA Codeschnipsel um diese ComboBox
mit Einträgen zu füllen.

Hat jemand vielleicht 3 bis 4 Zeilen um mir auf die Sprünge zu helfen ?

Dankeschön ;)

Andreas Killer

unread,
Oct 23, 2009, 9:12:06 AM10/23/09
to
Sebastian Lange schrieb:

> Ich habe eine Zelle die eine ComboBox integriert hat(wie das genau heisst
> weiss ich nicht) und ich suche einen VBA Codeschnipsel um diese ComboBox
> mit Einträgen zu füllen.

Dazu braucht es keinen Code, setzte über die Eigenschaften
ListFillRange und ggf. auch LinkedCell auf die gewünschten Zellen,
aber dabei auch das Blattnamen explicit mit angeben: Tabelle1!B1:B3

Über VBA findest Du die Combobox in der Shapes-Auflistung und das
entsprechende Shape hat über OLEFormat.Object Zugriff auf die Box.

Sub Test()
Dim S As Shape, C As Object
Set S = ActiveSheet.Shapes("ComboBox1")
Set C = S.OLEFormat.Object
With C
.LinkedCell = "Tabelle1!A1"
.ListFillRange = "Tabelle1!B1:B3"
End With
End Sub

Andreas.

Claus Busch

unread,
Oct 23, 2009, 9:16:52 AM10/23/09
to
Hallo Sebastian,

Am Fri, 23 Oct 2009 05:33:01 -0700 schrieb Sebastian Lange:

> Ich habe eine Zelle die eine ComboBox integriert hat(wie das genau heisst
> weiss ich nicht) und ich suche einen VBA Codeschnipsel um diese ComboBox

> mit Eintr�gen zu f�llen.

wenn die Eintr�ge in der Mappe sind, kannst du bei den Eigenschaften der
ComboBox den Bereich dieser Eintr�ge unter ListFillRange angeben.

Wenn du einen Bereich einlesen m�chtest, ginge das z.B. so:
Dim myRange As Range
Dim i As Integer

With Sheets("Tabelle1")
Set myRange = .Range("K1:K4")
With .ComboBox2
For i = 0 To 3
.AddItem myRange.Cells(i + 1)
Next
End With
End With

Wenn du die Eintr�ge im Code erst definieren m�chtest, probiere es mal so:
Dim myArr As Variant
Dim i As Integer

myArr = Array("Fr�hling", "Sommer", "Herbst", "Winter")
For i = LBound(myArr) To UBound(myArr)
Sheets("Tabelle1").ComboBox3.AddItem myArr(i)
Next

Mit freundlichen Gr�ssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Sebastian Lange

unread,
Oct 23, 2009, 12:31:01 PM10/23/09
to
Hallo,

Ich hab vielleicht falsch ausgedrückt, sorry.
Es wurde kein VB Control hinzugefügt sondern ein ZellenStyle
so verändert das die Zelle eine Auswahlliste hat, und diese möchte
ich dynamisch aus einer Datenbankabfrage füllen.
Ich glaub

Set S = ActiveSheet.Shapes("ComboBox1")

wäre dann falsch oder ?

Danke für eure Antworten.

Andreas Killer

unread,
Oct 23, 2009, 1:08:01 PM10/23/09
to
Sebastian Lange schrieb:

> Es wurde kein VB Control hinzugefügt sondern ein ZellenStyle
> so verändert das die Zelle eine Auswahlliste hat, und diese möchte

Ähm, was gemacht? Hast Du auf Daten\Gültigkeit geklickt?

Andreas.

Sebastian Lange

unread,
Oct 23, 2009, 6:32:01 PM10/23/09
to
Genau das ja ! ;)

Notify me of replies funktioniert irgendwie mal so garnicht hier :-/

"Andreas Killer" wrote:

> .
>

Claus Busch

unread,
Oct 24, 2009, 3:31:32 AM10/24/09
to
Hallo Sebastian,

bei der G�ltigkeit kannst du die gw�nschten Listeneintr�ge kommagetrennt
einf�gen:
With Range("A1:A10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
_
xlBetween, Formula1:="Fr�hling,Sommer,Herbst,Winter"
.IgnoreBlank = True
.InCellDropdown = True
.ShowError = True
End With

Wenn die Eintr�ge auf dem gleichen Arbeitsblatt wie die G�ltigkeit sind,
kannst du auch auf den Bereich zugreifen:
With Range("B1:B10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
_
xlBetween, Formula1:="=$Z$1:$Z$4"
.IgnoreBlank = True
.InCellDropdown = True
.ShowError = True
End With

Sind die Eintr�ge auf einem anderen Arbeitsblatt als die G�ltigkeit, musst
du dieser Liste einen Namen geben und dann auf diesen Namen zugreifen (in
diesem Beispiel ist der Namen "MeineListe"):
With Range("C1:C10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
_
xlBetween, Formula1:="=MeineListe"
.IgnoreBlank = True
.InCellDropdown = True
.ShowError = True
End With

Sebastian Lange

unread,
Oct 24, 2009, 4:08:01 PM10/24/09
to
Jau dat sieht gaus. Jetzt versteh ich wie's geht. Dankeschön!

"Claus Busch" wrote:

> Hallo Sebastian,
>
> bei der Gültigkeit kannst du die gwünschten Listeneinträge kommagetrennt
> einfügen:


> With Range("A1:A10").Validation
> .Delete
> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
> _

> xlBetween, Formula1:="Frühling,Sommer,Herbst,Winter"


> .IgnoreBlank = True
> .InCellDropdown = True
> .ShowError = True
> End With
>

> Wenn die Einträge auf dem gleichen Arbeitsblatt wie die Gültigkeit sind,


> kannst du auch auf den Bereich zugreifen:
> With Range("B1:B10").Validation
> .Delete
> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
> _
> xlBetween, Formula1:="=$Z$1:$Z$4"
> .IgnoreBlank = True
> .InCellDropdown = True
> .ShowError = True
> End With
>

> Sind die Einträge auf einem anderen Arbeitsblatt als die Gültigkeit, musst


> du dieser Liste einen Namen geben und dann auf diesen Namen zugreifen (in
> diesem Beispiel ist der Namen "MeineListe"):
> With Range("C1:C10").Validation
> .Delete
> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
> _
> xlBetween, Formula1:="=MeineListe"
> .IgnoreBlank = True
> .InCellDropdown = True
> .ShowError = True
> End With
>
>
>

> Mit freundlichen Grüssen


> Claus Busch
> --
> Win XP PRof SP2 / Vista Ultimate SP2
> Office 2003 SP2 /2007 Ultimate SP2

> .
>

0 new messages