VBA将信息从列表框复制到不同的列

时间:2013-10-30 22:51:47

标签: excel-vba vba excel

大家好,这是我的第一个,希望我会在这里提出最后一个问题。我在excel中遇到vba问题,我希望有人可以回答它

复制命令按钮代码的提示:使用For -Next循环遍历列表框中的每个项目以查看它是否已被选中。请记住,列表框从零开始。使用列表的lstListBox.ListCount属性结束For-Next循环。 (lstListBox.ListCount - 1)在For-Next循环中,使用If语句查看是否使用具有布尔数据类型的lstListBox.Selected(intIndex)属性选择列表中的项。如果选择了列表值,则递增计数器(intCounter)以跟踪选择了多少项并将其放入语句中以将所选列表值显示到电子表格的B列中的行。在单元格对象行号中使用此计数器可将列表中的选定项目显示到电子表格的B列。 示例:Cells(intCounter,“B”)。Value = lstListBox.List(intIndex) 请参阅下面列出的伪代码:(这些语句可用作代码中的注释) 循环到列表中的十个项目     检查是否选择了列表中的项目如果是则         增加一个柜台         在电子表格的B列的计数器编号行的列表中显示所选项目     结束检查或选择结构 结束循环结构 附:将上面列出的伪代码转换为For-Next和If-End If循环并选择编码结构。

所以我真正想做的是将一些信息从列表框复制到另一列。如果有人能提供帮助,那就太好了。在我解决之前不能回家。这就是我到目前为止它可能都是垃圾我真的不知道

Private Sub CommandButton1_Click() Dim intNumberOfItemsInList As Integer Dim lstListBoxListCount As Integer Dim ItemsCount为整数 Dim strInput As String Dim intIndex As Integer Dim lstlistbox作为ListBox Dim intcounter As Integer

'循环到列表中的十个项目 对于intNumberOfItemsInList = 0到9     '检查是否选择了列表中的项目如果是,则

Next lstlistbox.ListCount - 1
    'increment a counter
    Cells(intcounter, "B").Value = lstlistbox.List(intIndex)
   ' display the selected item from the list in the counter number row of column B of the spreadsheet
   Range("B1:B10").Select
ActiveSheet.Paste
'End the Check or Select structure

End Select

'结束循环结构

End Sub

这些评论应该有助于“指导我们”通过该计划,但它没有帮助我。再次感谢。如果您对此问题有任何疑问,请告诉我们。我会尽力回答他们。

1 个答案:

答案 0 :(得分:1)

如果您只需要将列表信息复制到其他位置,则列表框对象具有一个名为ListFillRange的变量,该变量包含从中提取数据的范围的字符串。

option explicit
Sub copy_list_items()
    Dim ws as Worksheet
    Dim lstbox as Variant
    Set ws = Sheets("Sheet 1")
    Set lstbox = ws.Shapes("List Box 1").OLEFormat.Object
    /*'' The range for my list box was set using values from the same sheet 
    ''    a few columns away.
    '' Also, ignore/remove the slash star comments, as these will throw an error with 
    '' Excel VBA,*/
    ws.Range(ws.Cells(1,1),ws.Cells(lstbox.ListCount,1)).Value = _
                    ws.Range(lstbox.ListFillRange).Value
End Sub

这适用于您的情况吗?