Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Comboboxauswahl für mehrere Commandbuttons


Betrifft: Comboboxauswahl für mehrere Commandbuttons von: Nikki
Geschrieben am: 03.12.2018 13:47:19

Hallo zusammen,

ich hoffe mir kann jemand hier helfen. Ich habe 2 Comboboxen. In der ersten stehen die Begriffe: offen, bezahlt, Retoure. In der zweiten Combobox die Ziffern 1-100. Nun möchte ich das wenn ich in Combobox1 z.B. offen anklicke und in Combobox2 die Ziffer 1, sich der Commandbutton1 rot färbt. Klicke ich Combobox1 wieder offen und in Combobox2 die 59. sich der Commandbutton59 rot färbt. Danke

  

Betrifft: Meinst du auf einem Userform? von: Beverly
Geschrieben am: 03.12.2018 16:22:09

Hi Nikki,

dann vielleicht so:

Private Sub ComboBox1_Change()
    Dim intElement As Integer
    If ComboBox1 = "offen" Then
        If ComboBox2 <> "" Then
            For intElement = 1 To 100
                If Me.Controls("CommandButton" & intElement).Name = "CommandButton" & _
                    CInt(ComboBox2) Then
                    Me.Controls("CommandButton" & intElement).BackColor = &HFF&
                Else
                    Me.Controls("CommandButton" & intElement).BackColor = &H80000005
                End If
            Next intElement
        End If
    Else
        For intElement = 1 To 100
            Me.Controls("CommandButton" & intElement).BackColor = &H80000005
        Next intElement
    End If
End Sub

Private Sub ComboBox2_Change()
    Dim intElement As Integer
    If ComboBox1 = "offen" Then
        If ComboBox2 <> "" Then
            For intElement = 1 To 100
                If Me.Controls("CommandButton" & intElement).Name = "CommandButton" & _
                    CInt(ComboBox2) Then
                    Me.Controls("CommandButton" & intElement).BackColor = &HFF&
                Else
                    Me.Controls("CommandButton" & intElement).BackColor = &H80000005
                End If
            Next intElement
        Else
            For intElement = 1 To 100
                Me.Controls("CommandButton" & intElement).BackColor = &H80000005
            Next intElement
        End If
    Else
        For intElement = 1 To 100
            Me.Controls("CommandButton" & intElement).BackColor = &H80000005
        Next intElement
    End If
End Sub


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Meinst du auf einem Userform? von: Nikki
Geschrieben am: 03.12.2018 17:01:14

Hallo Karin,

erstmal vielen dank für deine Mühe :)
Ich hatte einfach über einfügen ein ActiveX_Steuerelement die 2 Comboboxen eingefügt.
Bisher hatte ich folgendes probiert:

Select Case ComboBox1.Value
Case 0 '0
Case 1 '08100

If ComboBox2 = "offen" Then
CommandButton1.BackColor = RGB(240, 240, 240)
Else
If ComboBox2 = "in bezahlt" Then
CommandButton1.BackColor = RGB(255, 0, 0)
Else
If ComboBox2 = "Retoure" Then
CommandButton1.BackColor = RGB(50, 205, 50)

was auch für eine Anfängerin wie mich erstmal gereicht hat und funktionierte. Mußte halt jeden Button händisch eingeben. Aber es werden wohl noch einige Buttons dazukommen irgendwann und dann ist mir das zu aufwendig. Bei deiner Version zeigt er mir den Fehler bei Me.Controls an. Im konkreten das: Controls.

Vielen Dank,

Nicole


  

Betrifft: Also doch kein UserForm von: Beverly
Geschrieben am: 03.12.2018 18:26:07

Hi Nicole,

ist ja auch logisch, dass der Code einen Fehler anzeigt, denn er gilt für ein UserForm... Schreibe doch nächstesmal bitte gleich in deinen Beitrag, um welche Art Steuerelemente es sich handelt und wo sie sich befinden - das erspart einem Arbeit.

Wenn es ActiveX-Steuerelemente im Tabellenblatt sind, kannst du für beide ComboBoxen diesen Code verwenden:

    Dim intElement As Integer
    Dim lngFarbe As Long
    Select Case ComboBox1
        Case "offen"
            lngFarbe = 255       '<== Farbnummer anpassen
        Case "bezahlt"
            lngFarbe = 155235    '<== Farbnummer anpassen
        Case "Retoure"
            lngFarbe = 25365     '<== Farbnummer anpassen
    End Select
    If ComboBox1 <> "" Then
        If ComboBox2 <> "" Then
            For intElement = 1 To 100
                If Me.OLEObjects("CommandButton" & intElement).Name = "CommandButton" & _
                    CInt(ComboBox2) Then
                    Me.OLEObjects("CommandButton" & intElement).Object.BackColor = lngFarbe
                Else
                    Me.OLEObjects("CommandButton" & intElement).Object.BackColor = &H80000005
                End If
            Next intElement
        Else
            For intElement = 1 To 100
                Me.OLEObjects("CommandButton" & intElement).Object.BackColor = &H80000005
            Next intElement
        End If
    Else
        For intElement = 1 To 100
            Me.OLEObjects("CommandButton" & intElement).Object.BackColor = &H80000005
        Next intElement
    End If


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Also doch kein UserForm von: Nikki
Geschrieben am: 03.12.2018 21:40:11

Hallo Karin,

sorry nochmal. Wußte nicht das es da andere Anweisung zum greifen kommen :( Dein Code funktioniert perfekt :) Könnte man es so ändern das die Farben bei den Buttons bleiben bis zum nächsten Anwählen? Im Moment springt die Farbe ja von einem zum anderen, so wie ich es anklicke.

Viele Grüße


  

Betrifft: AW: Also doch kein UserForm von: Beverly
Geschrieben am: 03.12.2018 23:21:37

Hi Nicole,

auf einem UserForm sind es zwar auch ActiveX-Steuerelemente, aber sie werden eben anders angesprochen und haben teilweise auch endere Eigenschaften als die im Tabellenblatt

Die Farben ändern sich, sobalb in einer der beiden ComboBoxen etwas gewählt wird - wie meinst du das "bleiben bis zum nächsten Anwählen"? Sollen die CommandButton die Farbe erst dann ändern wenn sie einmal angeklickt wurden?


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Also doch kein UserForm von: Nikki
Geschrieben am: 04.12.2018 00:16:30

Genau. Die Farben sollen solange bleiben bis ich die Commandbuttons wieder anwähle. Wähle ich zum Beispiel die 1 auf Retoure und die 2 vllt. bezahlt, sollen Sie die Farbe erst wieder ändern wenn ich sie anwähle und Ihren Status ändere. Dazwischen sollen sie Ihren Status der Farbe nicht ändern.


  

Betrifft: AW: Also doch kein UserForm von: Nikki
Geschrieben am: 04.12.2018 09:13:31

Genau. Die Farben sollen solange bleiben bis ich die Commandbuttons wieder anwähle. Wähle ich zum Beispiel die 1 auf Retoure und die 2 vllt. bezahlt, sollen Sie die Farbe erst wieder ändern wenn ich sie anwähle und Ihren Status ändere. Dazwischen sollen sie Ihren Status der Farbe nicht ändern.


  

Betrifft: ActiveX-Steuerlemente färben mit Bedingung von: Beverly
Geschrieben am: 04.12.2018 09:56:31

Hi Nicole,

das geht dann aber nur, wenn eine der ComboBoxen das Primat erhält und wenn diese geändert wird, wird die andere erst einmal geleert und muss danach erneut ausgewählt werden. Ich gehe davon aus, dass die erste ComboBox die "wichtigere" ist - der betreffende CommandButto muss also jedesmal erst in ComboBox2 (neu) ausgewählt werden nachdem ComboBox1 geändert wurde:

Private Sub ComboBox1_Change()
    ' Combobox2 zurücksetzen
    If ComboBox1 <> "" Then ComboBox2.ListIndex = -1
End Sub

Private Sub ComboBox2_Change()
    Dim intElement As Integer
    Dim lngFarbe As Long
    Select Case ComboBox1
        Case "offen"
            lngFarbe = 255       '<== Farbnummer anpassen
        Case "bezahlt"
            lngFarbe = 155235    '<== Farbnummer anpassen
        Case "Retoure"
            lngFarbe = 25365     '<== Farbnummer anpassen
    End Select
    If ComboBox1 <> "" Then
        If ComboBox2 <> "" Then Me.OLEObjects("CommandButton" & _
            CLng(Me.ComboBox2)).Object.BackColor = lngFarbe
    End If
End Sub

Was das Rücksetzen der Farbe der CommandButton betrifft, musst du für jeden Button einen eingenen Code haben - nach diesem Prinzip:
Private Sub CommandButton1_Click()
    CommandButton1.BackColor = &H80000005
End Sub
Wenn du bereits für jeden CommandButton einen Code haben solltest, musst du einfach nur die Zeile mit .BackColor ergänzen und die Nummer des CommandButton anpassen.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: ActiveX-Steuerlemente färben mit Bedingung von: Nikki
Geschrieben am: 04.12.2018 12:18:05

Hallo Karin,

funktioniert einwandfrei. Ich danke Dir vielmals :)

Nicole


Beiträge aus dem Excel-Forum zum Thema "Comboboxauswahl für mehrere Commandbuttons"