2017-01-09 3 views
2

Ich lade ein Useform, dynamisch, auf folgende Weise.Wie kann ich YES oder NO CheckBoxes dynamisch zu einem UserForm hinzufügen?

Sub UserForm_Initialize() 
    With Worksheets("SetupQuestions") 
     Lrow = Worksheets("SetupQuestions").Cells(Rows.Count, 1).End(xlUp).Row 
     Set rngSource = .Range("A2:B" & Lrow) 
    End With 
    NewrngSource = Replace(rngSource.Address, "$", "") 
       With ListBox1 
        .Value = "None" 
        .ColumnHeads = True 
        .ColumnCount = 2 
        .ColumnWidths = "50;100" 
        .RowSource = "SetupQuestions!" & NewrngSource & "" 
        .MultiSelect = fmMultiSelectMulti 
        .BoundColumn = 1 
       End With 
End Sub 

Ich versuche, eine Möglichkeit zum Hinzufügen von CheckBoxen, die den Elementen in der ListBox entsprechen. Ich kann leicht Gegenstände von meiner ListBox bekommen.

Sub CommandButton1_Click() 
    Dim text As String 
    Dim i As Integer 
    For i = 0 To Me.ListBox1.ListCount - 1 
     If Me.ListBox1.Selected(i) Then 
      text = text & Me.ListBox1.List(i, 0) & ". " & Me.ListBox1.List(i, 1) & " " & Chr(10) 
     End If 
    Next i 
    Sheets("NEW Format").Range("BB1").Value = text 
    Unload Me 
End Sub 

Ich kann einfach nicht herausfinden, wie Sie CheckBoxes dynamisch hinzufügen. Hier ist eine Ansicht meiner Lisbox und eine CheckBox für die YES/NO-Objekte, aber ich habe nur eine hier aufgelistet, und ich möchte wirklich alle CheckBoxen, die jedem Element in der Liste entsprechen.

enter image description here

Ich sah Skript Online eine Probe, die vielversprechend aussah, aber es fügt Checkboxen unter meiner List-Box und nicht auf der rechten Seite davon.

For Each rngCell In rngSource 
    If rngCell.Value <> "" Then 
     Set NewChkBx = Me.Controls.Add("Forms.CheckBox.1") 
     With NewChkBx 
      .Caption = rngCell.Value 
      .Left = 5 
      .Top = TopPos 
      .AutoSize = True 
      If .Width > MaxWidth Then MaxWidth = .Width 
     End With 
     TopPos = TopPos + 15 
    End If 
Next rngCell 
+0

Haben Sie versucht, mit der linken Einstellung sowie die Top zu spielen? – SJR

Antwort

0

Ich bin es möglich ist, automatisch generieren Checkboxen, aber es war zu lange dauert und ich war für die Sache nicht mehr viel Zeit arbeite ich an. Ich fügte einige AND/OR-Felder in einer Spalte neben Spalten hinzu und fügte Code hinzu, um alles richtig zu behandeln.

enter image description here

Alle eingestellt. Danke an alle.

0

Ich gebe eine Antwort, auch Sie brauchen es nicht mehr. Andere Leute könnten danach suchen. Hier

ist ein Beispielcode zum Erstellen von 2 Kontrollkästchen in einer Userform:

Option Explicit 'inside userform's code 

Private Sub AddCheckboxes() 
Dim i& 
For i=1 to 2 
    with Me.controls.add("Forms.Checkbox.1","CheckBx" & i ,true) '3 arguments : the first is a fix one (do not mind the ".1" inside it, it is the way it needs to be ; the 2nd is the name of the control, the 3rd means visible=true 
     .top=50 + (i-1)*20 'commencing at 50 and having a distance of 20 between controls 
     .Left = 50 
     .Caption= "Autorize or Do something as #" & i 'for example 
    end with 
next i 
end sub 

wenn viele Kontrollen haben, das Beste, was sie in einem Array von Wörterbuch setzt, und in meinem Fall habe ich oft verwenden Wörterbuch von calsses (die Klasse hat viele Steuerelemente), und so kann ich ein gemeinsames Verhalten für alle diese Kontrollen machen, zum Beispiel _mousemove oder _mousedown ...

Verwandte Themen