【问题标题】:Exporting items in list box to range in Excel将列表框中的项目导出到 Excel 中的范围
【发布时间】:2015-08-21 23:05:17
【问题描述】:

所以我在一个又一个论坛(包括堆栈)搜索谷歌和论坛试图解决这个问题。我想要做的就是有一个 ActiveX 按钮将列表框的内容导出到 Excel 中的某个范围。

以下是将 ListBox1 中的项目添加到 ListBox2 的代码。在所有需要的项目都移动到 ListBox2 之后,所述 ActiveX 按钮 (SomeButton_Click) 会将 ListBox2 中的所有项目导出到从 range("a1") 开始的 "Sheet15"。

(请注意,这是一个不在实际表单上的 ActiveX 列表框。它在工作表中)

Public Sub BTN_MoveSelectedRight_Click()
    Dim iCtr As Long
        Dim n As Long, lRow As Long
         Dim cStartCell As Range
    For iCtr = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(iCtr) = True Then
        Me.ListBox2.AddItem Me.ListBox1.List(iCtr)

        End If
    Next iCtr

    For iCtr = Me.ListBox1.ListCount - 1 To 0 Step -1
        If Me.ListBox1.Selected(iCtr) = True Then
            Me.ListBox1.RemoveItem iCtr
        End If
    Next iCtr

End Sub

下面是执行导出的按钮:

Public Sub SomeButton_Click()
'What code can I put here to perform the export to abovementioned range?
End sub

任何帮助都将不胜感激,因为我花了几个小时试图弄清楚这一点(尽管我不想真正承认这一点,但这是真的)

谢谢!

【问题讨论】:

    标签: vba excel listbox export


    【解决方案1】:

    给你:

    Public Sub SomeButton_Click()
        Dim v
        v = Sheet15.ListBox2.List
        Sheet15.[a1].Resize(UBound(v)) = v
    End Sub
    

    如果列表框位于不同的工作表上,则需要对其进行调整。

    编辑#1

    这样更好:

    Public Sub SomeButton_Click()
        With Sheet15
            .[a1].Resize(.ListBox1.ListCount) = .ListBox1.List
        End With
    End Sub
    

    【讨论】:

    • 效果很好!我已经调整了工作表,并且能够获得要填充的项目。但是,由于某种原因,只能导出两个或更多值。因此,如果我只将一项发送到 listbox2 并尝试运行 SomeButton_Click() 我会收到错误“运行时错误'1004':应用程序定义或对象定义的错误。或者如果两个项目被发送到 listbox2,只有一个得到已导出,3 个已发送到 listbox2;仅导出 2 个项目等。关于为什么会发生这种情况的任何想法?再次感谢!
    • 奇怪。以前没见过这种行为。你能给我一个小样本来证明它发生了吗?我的电子邮件地址在我的个人资料中。
    • 我更新了我的原始帖子,以向您展示正在发生的事情的示例。如果您需要更好的示例,请告诉我。谢谢!
    • 如果你在一个变量 v 中只存储 1 个值,那么 v 将不会被转换为二维数组,所以 UBound(v) 会抛出一个错误。您应该检查 ListBox2.ListCount 是否为 1,在这种情况下执行 Sheet15.[a1].Value = v.
    • 您的编辑成功了!感谢您的帮助,我现在明白为什么示例 1 完全有效,而示例 2 则有效。很高兴为将来的编码学到了这一点。谢谢大家,感谢 Excel Hero 抽出宝贵时间!接受并点赞! :)
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 2017-11-09
    • 1970-01-01
    • 2018-12-24
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多