Hallo,
ich habe in einem Formular eine Userform mit Kombinationsfeld erstellt um mir mehr als 25 Einträge zu ermöglichen.
Hier der Link zum Workaround, falls jemand nicht wissen sollte das sowas möglich ist.
http://web.archive.org/web/200708231405 ... FDD25p.htm
So, jetzt habe ich also diese Userform mit dem Kombinationsfeld in dem sich Listeneinträge befinden.
Zum Beispiel "Armatur funktionssicher instandgesetzt" oder "Altarmatur - Zulassung zurückgezogen".
Wie kann ich es anstellen das diese Einträge, nachdem sie im Kombinationsfeld ausgewählt und eingefügt wurden, farblich hervorgehoben werden.
Also die Hintergrundfarbe hinter dem Satz soll dann zum Beispiel Grün oder Rot sein.
Ich weiss nicht genau wo ich hier ansetzen soll. Direkt im Code für die Userform oder in dem Bereich wo letztendlich der ausgewählte Satz eingefügt wird, quasi in dem Code für das Formular selbst.
Als Ansatz poste ich einfach mal den Code für das Userform und die Listeneinträge. Eventuell reicht das ja bereits aus.
Userform Code:
Private WithEvents cbbFeld As MSForms.ComboBox
Private WithEvents cmdOk As MSForms.CommandButton
Private WithEvents cmdCancel As MSForms.CommandButton
Private WithEvents cmdHelp As MSForms.CommandButton
Private Eintraege() As String
Private strTitel As String
Private strAufforderung As String
Private FldName As Variant
Private FldValue As Variant
Private FldStatus As String
Private FldHelp As String
Sub DropdownFormularInit(x() As String, ByVal Titel As String, _
ByVal Aufforderung As String)
ReDim Eintraege(UBound(x) - 1)
For i = 1 To UBound(x)
Eintraege(i - 1) = x(i)
Next i
strAufforderung = Aufforderung
strTitel = Titel
Me.Show
End Sub
Private Sub UserForm_Activate()
Me.Caption = strTitel
Me.Height = 96
Me.Width = 320
FldName = Selection.Bookmarks(1).Name
With ActiveDocument.FormFields(FldName)
If .DropDown.Valid Then
If .DropDown.ListEntries.Count > 0 Then FldValue = .Result
Else
FldValue = .Result
End If
If .OwnStatus Then FldStatus = .StatusText
If .OwnHelp Then FldHelp = .HelpText
End With
DropdownSchaltflaechenHinzufuegen
cbbFeld.List = Eintraege()
If Not FldStatus = "" Then Me.Height = Me.Height + 30
For i = 0 To UBound(Eintraege)
If FldValue = Eintraege(i) Then
cbbFeld.ListIndex = i
Exit For
End If
Next i
End Sub
Private Sub cbbFeld_Change()
ActiveDocument.FormFields(FldName).Result = cbbFeld.Value
Application.ScreenRefresh
End Sub
Private Sub DropdownSchaltflaechenHinzufuegen()
Set lblName = Me.Controls.Add("Forms.Label.1", , True)
With lblName
.Top = 4
.Left = 9
.Height = 12
.Width = 240
.Caption = strAufforderung
End With
Set cbbFeld = Me.Controls.Add("Forms.ComboBox.1", "cbbFeld", True)
With cbbFeld
.Top = 18
.Left = 9
.Height = 18
.Width = 300
.Style = fmStyleDropDownList
End With
Breite = 60
rechts = Me.Width - Breite - 12
For i = 1 To 3
Set cmd = Me.Controls.Add("Forms.CommandButton.1", , True)
With cmd
.Top = 48
.Left = rechts
.Height = 18
.Width = Breite
.Font.Size = 8
Select Case i
Case 1
.Caption = "Ok"
.Accelerator = "O"
.Default = True
Set cmdOk = cmd
Case 2
.Caption = "Abbrechen"
.Accelerator = "A"
.Cancel = True
Set cmdCancel = cmd
Case 3
.Caption = "Hilfe"
.Accelerator = "H"
If FldHelp = "" Then .Enabled = False
Set cmdHelp = cmd
End Select
End With
rechts = rechts - Breite - 6
Next i
If Not FldStatus = "" Then
Set lblStatus = Me.Controls.Add("Forms.Label.1", , True)
With lblStatus
.Top = Me.Height - 12
.Left = 9
.Height = 24
.Width = Me.Width - 24
.Caption = FldStatus
End With
End If
End Sub
Private Sub cmdOk_Click()
Unload Me
ActiveDocument.FormFields("Gefrp").Select
End Sub
Private Sub cmdHelp_Click()
MsgBox FldHelp, vbOKOnly + vbInformation, strTitel
End Sub
Private Sub cmdCancel_Click()
If Not FldValue = "" Then _
ActiveDocument.FormFields(FldName).Result = FldValue
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then cmdCancel_Click
End Sub
Code für Listeneinträge:
'*** Start des anpassbaren Teils
Private Const Titel = "Gerätestatus" 'Hier Titel der Userform
Private Const Aufforderung = "Bitte Gerätestatus festlegen"
Private Const Anzahl = 7 'Hier Anzahl der Listeneinträge
'*** Ende des anpassbaren Teils
Sub OnEntryElemente()
Dim L() As String
ReDim L(Anzahl)
L(1) = " "
L(2) = "Armatur funktionssicher instandgesetzt."
L(3) = "Weitere Maßnahmen erforderlich. (siehe Text)"
L(4) = "Wartung nicht möglich. (siehe Text)"
L(5) = "Altarmatur - Zulassung zurückgezogen! (siehe Text)"
L(6) = "Altarmatur - Zulassung eingeschränkt! (siehe Text)"
L(7) = "Armatur baulich verändert - Keine Zulassung! (siehe Text)"
frmDropdown.DropdownFormularInit L(), Titel, Aufforderung
End Sub
Ist es eventuell auch möglich, dass man diese Listeneinträge in dem sich öffnenden Userform bereits farblich hinterlegt sieht und diese Farben dann beim auswählen und bestätigen direkt ins Formular übertragen werden?
Ich hoffe es ist verständlich genug was ich versuche umzusetzen.
Gruß
Manuel
|