2.5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo liebe Foren-Mitglieder,

ich habe eine Problem bei der Programmierung eines Auswahlfeldes per VBA bei dem ich dringend Hilfe benötige.

Grundsätzlich weiß ich, wie man ein Auswahlfeld mittels VBA programmiert. Allerdings möchte ich für meine Tabelle das Auswahlfeld, die genaue Größe und Zeilen/Spalten-Position des Elementes festlegen. Wisst ihr wie man das Umsetzen kann?

Danke schon im Vorraus für eure Zeit.

Viele Grüße
Frank

9 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Frank,

schreibe Range("F1").... ... ist Dir ja bekannt.

Gruß hajo
0 Punkte
Beantwortet von
Hey Hajo,

danke für deine schnelle Antwort. Leider schaffe ich es immer noch nicht alleine. Habe doch noch Defizite beim programmieren von DropDownListen...

Dies ist die Codezeile in der die Auswahlliste rein soll:

Sheets("Menschl Bewert").Cells(LetzteZeileC + 1, 3).Value = "nein"


Anstatt nun aber den Value "nein", möchte ich genau in diese Zelle nun passend das DropDownFeld.

Die Werte dieser Liste sollen nur "ja" und "nein" sein.

Für weitere Hilfen wäre ich euch sehr dankbar.

Viele Grüße und ein schönes Wochenende!

Frank
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Frank,

der Code schreibt was in die Zelle.
Du hattest geschrieben


Grundsätzlich weiß ich, wie man ein Auswahlfeld mittels VBA programmiert.


das würde ich als falsch ansehen bei Deinem Code. Benutze den Makrorecorder.

Gruß Hajo
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Frank,
vielleicht reicht ja auch schon die Daten Gültigkeit aus.

Gültigkeit befindet sich in 2007 unter
Daten -> Datenüberprüfung -> Datenüberprüfung

Gruß
fedjo
0 Punkte
Beantwortet von
Hallo Hajo, Fedjo,

vielen Dank für eure Posts. Ich hatte leider erst jetzt wieder Zeit um zu Antworten.

@fedjo: nur eine DAtenüberprüfung reicht nicht aus. Weil ich ein Makro schreiben will, das abhängig vom User eine x-lange Liste erstellt. in dieser Liste werden verschiedene pakete beschrieben die je entweder aktiviert sind oder nicht. dafür möchte ich ein auswahlfeld erzeugen lassen

@hajo:du hast recht. mit meinem code kann man keine Liste erzeugen. ich wollte dir nur zeigen, an welche Stelle meines Makros die Liste stehen soll.

der Makrorekorder hilft mir nur bedingt weiter. an welcher Stelle kann ich die Range denn einfügen?

Tabelle2.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=87.75, Top:=143.25, Width:=72, Height:=18 _
).Select


hinter der Tabellenamen einfügen klappts nicht. nur Range vor dem OleObjects ebenfalls. Kommts in die Klammer?

Danke und viele Grüße

Frank
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Frank

Range("A1").Select
Tabelle2.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=87.75, Top:=143.25, Width:=72, Height:=18 _
).Select


Gruß
fedjo
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Frank,
oder so für vier ComboBoxen:

Sub ComboBox()
Dim ix As Integer
For ix = 1 To 4
ActiveSheet.OLEObjects.Add ClassType:="Forms.ComboBox.1", _
Left:=ActiveSheet.Cells(2 * ix, 3).Left, _
Top:=ActiveSheet.Cells(2 * ix, 3).Top, _
Width:=80, _
Height:=17.25
Next ix
End Sub

Gruß
fedjo
0 Punkte
Beantwortet von
Hey Fedjo,

danke für die Posts!

Den ersten Eintrag mit "Select" kann ich nicht wirklich benutzen.
Weil die Box nicht in die Selecte Zelle geschrieben wird, sondern in der Nähe von C11.

Der zweite Eintrag funktioniert aber schon besser. Da kann ich mir mit deinem Code die Koordinaten so hinbasteln, dass die ComboBox in die gewünscht Zeile kommt, denke ich. Ich versuchs gleich mal.

Soweit schonmal vielen Dank für deine Hilfe!

Gruß
Frank
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Frank,
oder eine einzelne Box mit Inhalt:

Sub Einzelne_Box()
Dim ix As Integer
Dim objBox As OLEObject
Set objBox = ActiveSheet.OLEObjects.Add(Classtype:= _
"Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, _
Left:=ActiveSheet.Cells(11, 3).Left, _
Top:=ActiveSheet.Cells(11, 3).Top, _
Width:=80.75, _
Height:=17.25)
objBox.ListFillRange = "A1:A10"
End Sub

Gruß
fedjo
...