Thema Datum  Von Nutzer Rating
Antwort
Rot FormField nach Eingabe deaktivieren.
17.08.2014 15:11:16 Manuel
NotSolved

Ansicht des Beitrags:
Von:
Manuel
Datum:
17.08.2014 15:11:16
Views:
1147
Rating: Antwort:
  Ja
Thema:
FormField nach Eingabe deaktivieren.

Guten Tag,

ich habe eine Frage bezüglich eines makros, und zwar habb ich ein makro erstellt welches aus einem Textfeld bei Aktivierung eine Userform mit KOmbinationsfeld macht. mit folgendem 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
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

 

Hiernach wird also am Ende aus dem Userform wieder ein gewöhnliches Textfeld.

Allerdings möchte ich das nachdem der gewünschte Eintrag aus dem Kombinationsfeld gewählt wurde und dieser in das Textfeld übertragen wurde, ein weiteres manuelles editieren des Textfeldes nicht mehr möglich ist, wohl aber das bei erneutem anklicken des Textfeldes wieder die Userform mit Kombinationsfeld geöffnet wird um ein erneutes Auswählen eines Eintrags zu ermöglichen.

Ich hoffe es ist einigermaßen klar verständlich worauf ich hinaus möchte.

Hat irgendjemand eine Idee wie sowas verwirklicht werden kann?

 

Für ein paar Hinweise wäre ich sehr dankbar.

 

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 FormField nach Eingabe deaktivieren.
17.08.2014 15:11:16 Manuel
NotSolved