Thema Datum  Von Nutzer Rating
Antwort
02.04.2016 16:47:26 Lala
NotSolved
Blau Formular Kontrollkästchen
02.04.2016 21:15:03 Gast73192
NotSolved

Ansicht des Beitrags:
Von:
Gast73192
Datum:
02.04.2016 21:15:03
Views:
946
Rating: Antwort:
  Ja
Thema:
Formular Kontrollkästchen

Hallo,

versuch's mal mit einer Listbox mit Mehrfachauswahl:

Ein Userform und ein eigenes Klassenmodul einfügen, das Klassenmodul in clsCommandButton umbenennen, dann folgende Codes einfügen:

' **********************************************************************
' Modul: Tabelle1 Typ: Klassenmodul des Tabellenblattes
' **********************************************************************

Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Rows("1:10")) Is Nothing Then '// Bereich anpassen....
   Cancel = True
   With UserForm1
        Set .prpobjTargetRow = Target.EntireRow
        Call .Show
   End With
End If
End Sub
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private mobjCommandButtonClass As clsCommandButton
Private mobjTargetRow As Range

Private Sub UserForm_Activate()
Set mobjCommandButtonClass = New clsCommandButton
With Controls.Add(bstrProgID:="Forms.ListBox.1", Name:="ListBox1", Visible:=True)
     .Left = 10!
     .Top = 10!
     .Height = 80!
     .Width = 100!
     .MultiSelect = fmMultiSelectMulti
     .List() = Array("Deutschland", "Norwegen", "Spanien", "Frankreich", "Schweden", "Portugal")
End With
With Controls.Add(bstrProgID:="Forms.CommandButton.1", Name:="CommandButton1", Visible:=True)
    .Left = Controls(0).Left + Controls(0).Width + 10!
    .Top = Controls(0).Top
    .Height = 50!
    .Width = 50!
    .Caption = "Bestätigen"
    .BackColor = vbMagenta
End With
With mobjCommandButtonClass
    Set .prpcmdButton = Controls(1)
    Set .prpobjUserForm = Me
End With
End Sub

Private Sub UserForm_Terminate()
Set mobjCommandButtonClass = Nothing
Set mobjTargetRow = Nothing
End Sub

Friend Property Set prpobjTargetRow(ByRef probjTargetRow As Range)
 Set mobjTargetRow = probjTargetRow
End Property

Public Sub prcInsertCountryNames()
  Dim astrNames() As String
  Dim lngIndex As Long, ialngCount As Long
  With Controls(0)
        For lngIndex = 1 To .ListCount
           If .Selected(pvargIndex:=lngIndex - 1) Then
             ialngCount = ialngCount + 1
             ReDim Preserve astrNames(ialngCount - 1) As String
             astrNames(ialngCount - 1) = .List(pvargIndex:=lngIndex - 1)
           End If
        Next
  End With
  If ialngCount > 0 Then
    With mobjTargetRow
          Call .ClearContents
          ThisWorkbook.Worksheets(.Parent.Name).Cells( _
             .Row, 1).Resize(1, UBound(astrNames) + 1).Value = astrNames
    End With
  Else
    If MsgBox("Keine Länder ausgewählt, möchten Sie eine Auswahl treffen?", vbQuestion + vbYesNo) = vbNo Then _
         Call Unload(Me)
  End If
End Sub
' **********************************************************************
' Modul: clsCommandButton Typ: Klassenmodul
' **********************************************************************

Option Explicit

Private mobjUserForm As Object
Private WithEvents mcmdButton As CommandButton

Private Sub Class_Terminate()
Set mcmdButton = Nothing
Set mobjUserForm = Nothing
End Sub

Private Sub mcmdButton_Click()
Call mobjUserForm.prcInsertCountryNames
End Sub

Friend Property Set prpcmdButton(ByRef prcmdButton As CommandButton)
 Set mcmdButton = prcmdButton
End Property

Friend Property Set prpobjUserForm(ByRef probjUserForm As Object)
 Set mobjUserForm = probjUserForm
End Property

Gruß,


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
02.04.2016 16:47:26 Lala
NotSolved
Blau Formular Kontrollkästchen
02.04.2016 21:15:03 Gast73192
NotSolved