none
Office 2010 Excel: Listbox mit gelbem Hintergrund RRS feed

  • Frage

  • Salü alle zusammen

     

    In Excel 2010 habe ich über EntwicklerTools->Einfügen->Formularsteuerelemente eine Listenfeld(Formularsteuerelement) in meine Tabelle eingefügt.

    Nun möchte ich dieses Feld mit einer Hintergrundfarbe versehen oder transparent machen. Wenn ich das Listenfeld bei gedrückter CTRL Taste anklicke und dann rechtsklick eigenschaften wähle, kann ich keine Farbe einstellen.

     

    Mit vba habe ich gesehen könnte ich sagen:

     

    ActiveSheet.ListBoxes(1).ForeColor = ActiveWorkbook.Colors(3)

    Aber hier kommt der Fehler: Objekt unterstützt diese Eigenschaft oder Methode nicht.

     

    Wie kann ich meiner Listbox einen gelben Hintergrund verpassen?

     

    Vielen lieben Dank für Infos

    Gruss Sabrina

    Freitag, 18. November 2011 13:52

Antworten

  • Hallo Sabrina,

    die Hintergrundfarbe des Listenfeld-Steuerelements ist nicht einstellbar. Nur die ActiveX-Liste Steuerelement hat diese Möglichkeit.

    Viele Grüße,

    Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Freitag, 18. November 2011 17:15
  • Was mache ich falsch?
    a.) sprichst Du nicht das Object (die Listbox) an, sondern nur den Container. Das OLEobject ist nur ein universeller Platzhalter für Excel (wie das Shape object) mit dem alle Objecte ansprechbar sind, das Object selber (die ListBox) bekommst Du über die Object Eigenschaft.

    b.) Daher kannst Du auch nicht sicher sein das OLEobjects(1).Object überhaupt eine ListBox ist, könnte ja auch ein CommandButton oder sonstwas sein.

    Sub Test()
      Dim O As OLEObject
      'Durchlaufe alle OLE Objecte
      For Each O In ActiveSheet.OLEObjects
        'Ist dieses eine ListBox?
        If TypeOf O.Object Is MSForms.ListBox Then
          O.Object.AddItem "Juhu"
        End If
      Next
    End Sub

    c.) Das Answers-Forum (in dem Du die Ausgangsfrage gestellt hattest) war schon das richtige, ich lese diesen Beitrag nur zufällig weil Du den Link dort gepostet hattest.

    http://answers.microsoft.com/de-de/office/forum/excel?page=1&tab=all

    Andreas.
    Sonntag, 20. November 2011 09:18
  • Dann würde ich das eher über den Namen machen, denn die Reihenfolge kann sich durchaus mal ändern, z.B. wenn Du ein Element löscht und wieder hinzufügst.

    Andreas.

    Sub Test()
      Dim LB As MSForms.ListBox
      Set LB = ActiveSheet.OLEObjects("ListBox1").Object
      LB.AddItem "Juhu"
    End Sub

     

    Montag, 21. November 2011 08:05

Alle Antworten

  • Hallo Sabrina,

    die Hintergrundfarbe des Listenfeld-Steuerelements ist nicht einstellbar. Nur die ActiveX-Liste Steuerelement hat diese Möglichkeit.

    Viele Grüße,

    Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Freitag, 18. November 2011 17:15
  • Salü Bogdan

    Vielen lieben Dank für Deine Antwort. Ich habe also alle Listboxen auf meinem Tabellenblatt entfernt und ActiveX Listboxen eingefügt.

    Nun kann ich die Listbox wunderbar formatieren und auch Werte einfüge wenn ich sie direkt anspreche.
                        ActiveSheet.ListF1.AddItem (vText)                         'ListF1 ist der Name meiner Listbox

    Was aber, wenn ich durch alle meine Listboxen durch iterieren will?

    Folgendes habe ich probiert:

    For vEck = 1 to 4
                        ActiveSheet.ListObjects(vEck).AddItem (vText)
                        ActiveSheet.ListBox(vEck).AddItem (vText)
                        ActiveSheet.OLEObjects(vEck).AddItem (vText)
                        ActiveSheet.Shapes(vEck).AddItem (vText)
    Next vEck

    Leider führt das alles nicht zum Ziel. Methode nicht bekannt ist meisst die Fehlermeldung.

    Was mache ich falsch?

    Vielen Dank für Hinweise
    Gruss Sabrina

    Samstag, 19. November 2011 01:17
  • Was mache ich falsch?
    a.) sprichst Du nicht das Object (die Listbox) an, sondern nur den Container. Das OLEobject ist nur ein universeller Platzhalter für Excel (wie das Shape object) mit dem alle Objecte ansprechbar sind, das Object selber (die ListBox) bekommst Du über die Object Eigenschaft.

    b.) Daher kannst Du auch nicht sicher sein das OLEobjects(1).Object überhaupt eine ListBox ist, könnte ja auch ein CommandButton oder sonstwas sein.

    Sub Test()
      Dim O As OLEObject
      'Durchlaufe alle OLE Objecte
      For Each O In ActiveSheet.OLEObjects
        'Ist dieses eine ListBox?
        If TypeOf O.Object Is MSForms.ListBox Then
          O.Object.AddItem "Juhu"
        End If
      Next
    End Sub

    c.) Das Answers-Forum (in dem Du die Ausgangsfrage gestellt hattest) war schon das richtige, ich lese diesen Beitrag nur zufällig weil Du den Link dort gepostet hattest.

    http://answers.microsoft.com/de-de/office/forum/excel?page=1&tab=all

    Andreas.
    Sonntag, 20. November 2011 09:18
  • Lieber Andreas

    Supervielen Dank für Deine Antwort. Den von Dir gezeigten Code kann ich an einer anderen Stelle sehr gut gebrauchen. Habe auch ziemlich verstanden was Du mir erklärt hast.

    Aber die aktuelle Problemstelle habe ich damit noch nicht gelöst. Denn ich habe an besagter Stelle nicht die Möglichkeit alle Objekte zu durchlaufen. Sondern ich bin im Programmcode an einer Stelle an welcher ich eigentlich nur die Nummer (vEck) meiner OLE Listbox kenne welche ich "bearbeiten" muss.

    Gibt es eventuell die Möglichkeit aus dem Befehl

    ActiveSheet.ListF1.AddItem (vText)

    das Element ListF1 in eine Variable zu packen? So dass ich dann zum Beispiel folgendes programmieren könnte:

    vBox = "ListF" & cStr("1")
    ActiveSheet.vBox.AddItem (vText)

    Sei herzlichst gegrüsst
    Sabrina

    Sonntag, 20. November 2011 10:34
  • Dann würde ich das eher über den Namen machen, denn die Reihenfolge kann sich durchaus mal ändern, z.B. wenn Du ein Element löscht und wieder hinzufügst.

    Andreas.

    Sub Test()
      Dim LB As MSForms.ListBox
      Set LB = ActiveSheet.OLEObjects("ListBox1").Object
      LB.AddItem "Juhu"
    End Sub

     

    Montag, 21. November 2011 08:05