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 ;)
> 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.
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
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.
> 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.
Notify me of replies funktioniert irgendwie mal so garnicht hier :-/
"Andreas Killer" wrote:
> .
>
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
"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
> .
>