Thema Datum  Von Nutzer Rating
Antwort
Rot Userform mit Kombinationsfeld - Listeneinträge Hintergrund einfärben
23.05.2015 07:44:55 Manuel
NotSolved
28.05.2015 18:22:45 Manuel
NotSolved

Ansicht des Beitrags:
Von:
Manuel
Datum:
23.05.2015 07:44:55
Views:
1646
Rating: Antwort:
  Ja
Thema:
Userform mit Kombinationsfeld - Listeneinträge Hintergrund einfärben

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Userform mit Kombinationsfeld - Listeneinträge Hintergrund einfärben
23.05.2015 07:44:55 Manuel
NotSolved
28.05.2015 18:22:45 Manuel
NotSolved