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

来源:互联网 发布:中国移动 大数据 重庆 编辑:程序博客网 时间:2024/06/02 09:38

        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”的条件判断去掉即可。

原创粉丝点击