Excel VBA ListBox列表框添加和删除问题

Excel VBA 窗体中有两个ListBox,需要做的操作:从一个列表框中选择列表值向另一个列表添加值,以及从已选择的值中删除选择的列表值。

例:ListBox列表 被选框lbData,选择框lbSelectedData,列表框中显示三列。

'-------------------------------------------------------------------------
'将选中的备选科目加入到已选科目中
'内部变量说明:
'x 代表要循环的lbData行
'j 代表要向lbSelectedData插入的行
'i 代表lbSelect和lbData要操作的列
'程序设计思路:
'获取lbSelectedData已有行数量赋值于j,要添加的行数为该值(因为行数从0开始)
'循环检查lbData中选中的行
'在lbSelectedData中添加空行,行号为j
'将选中的记录从0列开始将每一列赋值到新行中
'添加新记录完成后,lbSelectedData可添加行行号加1
'
'操作完毕清空lbData框中的已选中的列,以免误操作再次被新增
'--------------------------------------------------------------------------
Private Sub SelectListItem(isAll As Boolean)
Dim j As Integer

'获取可新增行的行号
j = lbSelectedData.ListCount

'向已选科目列表中添加选择的列
'循环lbData每一行数据
For x = 0 To lbData.ListCount - 1

'判断是否为全部新增(True),还是部分新增(False)
If (isAll) Then

'在lbSelectedData中添加新行,行号为获取的可新增行行号
lbSelectedData.AddItem , j

'根据lbSelectedData中的列号,循环向新行中添加列值
For i = 0 To lbData.ColumnCount - 1
lbSelectedData.List(j, i) = lbData.List(x, i)
Next i

'可新增行行号加1
j = j + 1

Else

'如果记录被选中进行新增操作
If lbData.Selected(x) = True Then

'在lbSelectedData中添加新行,行号为获取的可新增行行号
lbSelectedData.AddItem , j

'根据lbSelectedData中的列号,循环向新行中添加列值
For i = 0 To lbData.ColumnCount - 1
lbSelectedData.List(j, i) = lbData.List(x, i)
Next i

'可新增行行号加1
j = j + 1

End If
End If

Next x

'清除备选表中的已选列
For y = 0 To lbData.ListCount - 1
lbData.Selected(y) = False
Next
End Sub

如果要选择备选全部列表值,可以将上述代码中“If lbData.Selected(x) = True Then”的条件判断去掉即可。

你可能感兴趣的:(VBA,Excel,J#)