Anzeige
Archiv - Navigation
1660to1664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Comboboxauswahl für mehrere Commandbuttons

Comboboxauswahl für mehrere Commandbuttons
03.12.2018 13:47:19
Nikki
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

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Meinst du auf einem Userform?
03.12.2018 16:22:09
Beverly
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


Anzeige
AW: Meinst du auf einem Userform?
03.12.2018 17:01:14
Nikki
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
Anzeige
Also doch kein UserForm
03.12.2018 18:26:07
Beverly
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       ' "" 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



Anzeige
AW: Also doch kein UserForm
03.12.2018 21:40:11
Nikki
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
AW: Also doch kein UserForm
03.12.2018 23:21:37
Beverly
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?


Anzeige
AW: Also doch kein UserForm
04.12.2018 00:16:30
Nikki
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.
AW: Also doch kein UserForm
04.12.2018 09:13:31
Nikki
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.
Anzeige
ActiveX-Steuerlemente färben mit Bedingung
04.12.2018 09:56:31
Beverly
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       ' "" 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.


Anzeige
AW: ActiveX-Steuerlemente färben mit Bedingung
04.12.2018 12:18:05
Nikki
Hallo Karin,
funktioniert einwandfrei. Ich danke Dir vielmals :)
Nicole

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige