【发布时间】:2019-04-05 04:32:54
【问题描述】:
我有一个包含多列的 ListView。更准确地说,ListView 包含 8 列。其中 2 个应填写复选框。
目前只有第一列包含复选框。定义如下:
While Not rs.EOF
//first column with checkboxes
ListViewCustomer.ListItems.Add , , rs("Id")
ListViewCustomer.ListItems(ListViewCustomer.ListItems.Count).tag = rs("Status")
//second column etc.
ListViewCustomer.ListItems(ListViewCustomer.ListItems.Count).ListSubItems.Add , , rs("name")
....
//Here is the second column, which doesn't display the checkboxes
ListViewCustomer.ListItems(ListViewCustomer.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs("date_from")), "", rs("date_from"))
ListViewCustomer.ListItems(ListViewCustomer.ListItems.Count).tag = rs("Status2")
Wend
有人知道如何在最后一列中添加复选框吗?
编辑:
通过.Controls添加可以实现本栏目吗?
【问题讨论】:
-
据我了解,每一行都是 ListBox 中的一条记录,因此您可以选择一条记录,而不是子记录。基于此,我认为这是不可能的。
-
@ib11 不可能。必须可以在多个列中添加多个复选框。
-
在输入框中输入 $A$1:$c$10 的范围。~Sub InsertCheckBoxes() Dim Rng As Range Dim WorkRng As Range Dim Ws As Worksheet On Error Resume Next xTitleId = "New_Experiments" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) Set Ws = Application.ActiveSheet Application.ScreenUpdating = False 对于 WorkRng 中的每个 Rng 使用 Ws.CheckBoxes.Add(Rng .Left, Rng.Top, Rng.Width, Rng.Height) .Characters.Text = Rng.Value End With Next WorkRng.ClearContents WorkRng.Select Application.ScreenUpdating = True End Sub
-
我已经提到了在工作表范围内创建多列复选框的代码。也许其中涉及的概念可以适应您的情况。它适用于我,并在工作表范围内的每个单元格中创建复选框。
-
@skkakkar 感谢您的 cmets。但是我在我的基于 excel 的应用程序中使用了 UserForms。在此 UserForm 中称为 ListView,其中包含一个列表。
标签: vba excel listview checkbox