首页 文章

将所选项目从一个列表框移动到另一个列表框

提问于
浏览
0

我有两个列表框,名为listbox1和listbox2 .

Listbox1使用SQL查询填充,并包含两列 . 它的第一列包含逗号的值 .

Listbox2在Access属性表的“行源类型”属性中设置为值列表 .

我的目标是使用控制按钮将所选项目从listbox1复制到listbox2 .

我还需要知道listbox1记录包含逗号,它们在复制期间充当分隔符 . 不过,这个问题已经解决了 .

我创建了两个模块来完成从一个列表框到另一个列表框的所选记录的复制:

Public Sub CopySelected(ByRef frm As Form)

    Dim ctlSource As Control
    Dim ctlDest As Control
    Dim strItems As String
    Dim intCurrentRow As Integer

    Set ctlSource = Me!listbox1
    Set ctlDest = Me!listbox2

    For intCurrentRow = 0 To ctlSource.ListCount - 1
        If ctlSource.Selected(intCurrentRow) = True Then
            'must insert double quote around single quote to escape commas
            strItems = strItems & "'" & ctlSource.Column(0, intCurrentRow) & "'" & ";" 


            Me!listbox2.AddItem (strItems)

        End If
    Next intCurrentRow
End Sub

Private Sub cmdAddSelected_Click()

    CopySelected Me

End Sub

我确实将listbox1上的多选选项设置为“extended” .

current problem 是当我单击我的控制按钮时,只复制listbox1中的第一个选项,并且需要多次复制它(复制与所选记录相同的数字) .

显然,我的For循环存在问题 .

R是我的主要语言,我只是学习VBA .

1 回答

  • 0

    在程序中,您将所有选定值与分隔符连接,并将较长和较长的字符串添加到Listbox2 . ; 充当多列列表框的列分隔符,即,从Listbox1到Listbox2中选择的值是"transposing",而多余项(在Listbox2的列数上方)只是被忽略 . 如果要将单个值复制到单列Listbox2中,请执行以下操作:

    For intCurrentRow = 0 To ctlSource.ListCount - 1
        If ctlSource.Selected(intCurrentRow) Then
            strItems = "'" & ctlSource.Column(0, intCurrentRow) & "'" 
            Me!listbox2.AddItem (strItems)
        End If
    Next intCurrentRow
    

相关问题