【问题标题】:Exporting data from a userform output into an Excel spreadsheet将数据从用户表单输出导出到 Excel 电子表格
【发布时间】:2023-03-20 11:39:01
【问题描述】:

我想问一下是否有人熟悉将数据从用户表单列表框导出到单独的工作表的方法。

例如,我在用户表单列表框中存储并显示了 3 列(“名称”、“公司”和“职位”)以及多行,我想将其传输到 Excel 工作表中(单击按钮)以及相应的列和行。

感谢任何可能提供任何建议的人!

'在结果列表的新行中显示所有参数的匹配结果

            Rownum = ResultsList.ListCount
            ResultsList.AddItem

            ResultsList.List(Rownum, 0) = Name.Value
            ResultsList.List(Rownum, 1) = Company.Value
            ResultsList.List(Rownum, 2) = Position.Value


    Else
    End If
 End Sub

 Private Sub CommandButton1_Click()

Sheets.Add = ResultsList.Value

 End Sub

我实际上是在尝试将运行正常的“ResultsList”中的结果放入 excel 中的新工作表中。

抱歉没有早点加入。

【问题讨论】:

  • 你能告诉我你到目前为止所做的尝试,或者提供一些示例代码吗?
  • 请看我的编辑版本。干杯!
  • 您的问题涉及文本框,但ResultsList 似乎不是文本框(可能是列表框?)。
  • 哦,是的,这是真的!抱歉,我是 VBA 新手,我仍然混淆了很多东西......我指的是列表框(如果它有所作为)。

标签: vba excel


【解决方案1】:

以下似乎是您正在尝试做的事情:

Private Sub CommandButton1_Click()
    Dim m As Long, n As Long
    Dim ws As Worksheet
    m = ResultsList.ListCount
    n = ResultsList.ColumnCount
    Set ws = Sheets.Add
    ws.Range(ws.Cells(1, 1), ws.Cells(m, n)).Value = ResultsList.List
End Sub

该代码假定它是一个多列列表,并且可能会因单列而失败(我尚未对此进行测试)。它创建一个新工作表,将值放在从 A1 开始的新工作表中。我不相信这实际上是一个好主意。我倾向于发现 VBA 代码在没有充分理由的情况下创建新工作表有点烦人 - 所以请确保您有充分的理由将其放在新工作表上,而不是当前工作表上的某个位置(可能在用户选择的位置)。

【讨论】:

  • 该代码完美地用于创建新工作表并显示列表中的信息。我想您适合新工作表方法,因为它每次都会添加一个新工作表,而不是在同一个工作表上书写(单击按钮时)。谢谢,但是,这段代码给了我一些修改问题的想法!很抱歉不能给你的答案积分,因为我还没有足够的声誉。
  • 很高兴能提供帮助。如果你愿意,你可以随时接受答案。
  • 我是否能够存储结果列表中的信息并将其放入数组中,原因很简单,将更多信息放入我不想显示在列表框上但想要的数组中导出到工作表?
  • 变体可以保存数组——包括二维列表框中的列表。只需将其分配给数组变量而不是范围。如果您想在用户窗体关闭后在代码中使用它,请将其分配给标准代码模块中定义的公共变量。
  • 是的,我这样做了,但让我感到困惑的是如何在新工作表中发布数组。到目前为止,我尝试过的方法会产生某种错误,假设我只是无法弄清楚语法。