如何在VBA中动态定义标签?

How to define a label dynamically in VBA?

我有一个带有列表视图的用户窗体。在此列表视图中,一列是用复选框定义的。因此,当用户单击多行中的复选框时,我想在标签的标题中显示选定的 ID,例如: "You are selected: 848, 12133, 414"

我怎样才能做到这一点?

编辑:我刚刚看到你在谈论列表视图...

这是 ExcelForum 上来自 AlphaFrog 的修改后的代码片段:

Private Sub Listview1_ItemCheck(ByVal Item As MSComctlLib.ListItem)

Dim si As MSComctlLib.ListSubItem

    For Each si In Item.ListSubItems
        si.ForeColor = IIf(Item.Checked, vbBlue, vbBlack)
    Next

End Sub

他所做的是根据复选框的状态更改字体颜色 (Item.Checked)。

您可以使用我下面的原始回复逻辑来获得您想要的结果。


原回复:

这是一个包含 3 个复选框的示例,我只会发布 Checkbox1 的代码以及初始化。 Checkbox1_Click 中的代码将 one-to-one 变为 Checkbox2_Click 和 Checkbox3_Click.

Dim cnt As Integer
Dim checked() As Integer
Dim tmp As Integer

Private Sub CheckBox1_Click()

    cnt = 0

    ReDim checked(1 To 3)

    tmp = 1

    For i = 1 To 3
        If UserForm1.Controls("Checkbox" & i).Value = True Then
            checked(tmp) = i
            cnt = cnt + 1
            tmp = tmp + 1
        End If
    Next i

    Select Case cnt

        Case 0
        Label1.Caption = ""

        Case 1
        Label1.Caption = "You have selected: " & UserForm1.Controls("CheckBox" & checked(tmp - 1)).Caption

        Case Is > 1
        Label1.Caption = "You have selected: " & UserForm1.Controls("CheckBox" & checked(1)).Caption
        For t = 2 To tmp - 1
            Label1.Caption = Label1.Caption & ", " & UserForm1.Controls("CheckBox" & checked(t)).Caption
        Next t

    End Select

End Sub

'same code here for Checkbox2 and 3


Private Sub UserForm_Initialize()

    For i = 1 To 3
        UserForm1.Controls("CheckBox" & i).Value = False
    Next i

    Label1.Caption = ""

End Sub

概念验证: