You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBA用户窗体ListBox中填充两个表格内容

VBA用户窗体ListBox显示横向并列的两个表格

原代码仅能在ListBox中展示"PL2_Steel"工作表里的单个18列表格(A8:R区域),要实现将第二个表格横向拼接在第一个表格之后(ListBox第19列对应第二个表格第1列),可按以下方式修改代码:

Sub spl2list()
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("PL2_Steel")
    Dim lr As Long
    lr = sh.Cells(Rows.Count, 1).End(xlUp).End(xlUp).Row
    If lr = 7 Then lr = 8
    
    ' 定义两个目标数据区域:第一个表格A8:R,第二个表格S8:AD(需根据实际列范围调整)
    Dim rng1 As Range, rng2 As Range
    Set rng1 = sh.Range("A8:R" & lr)
    Set rng2 = sh.Range("S8:AD" & lr)
    
    ' 将区域数据读取到数组中,提升处理效率
    Dim arr1 As Variant, arr2 As Variant, arrCombined As Variant
    arr1 = rng1.Value
    arr2 = rng2.Value
    
    ' 初始化合并数组:行数与原表格一致,列数为两个表格列数之和
    ReDim arrCombined(1 To UBound(arr1, 1), 1 To UBound(arr1, 2) + UBound(arr2, 2))
    
    ' 循环填充合并数组,将两个表格的行数据横向拼接
    Dim i As Long, j As Long
    For i = 1 To UBound(arr1, 1)
        ' 填充第一个表格的列
        For j = 1 To UBound(arr1, 2)
            arrCombined(i, j) = arr1(i, j)
        Next j
        ' 填充第二个表格的列
        For j = 1 To UBound(arr2, 2)
            arrCombined(i, UBound(arr1, 2) + j) = arr2(i, j)
        Next j
    Next i
    
    With Me.ListBox_spl2
         .ColumnCount = 36 ' 18列 + 18列,需与实际列数匹配
         .ColumnHeads = True
         ' 设置36列的宽度,可根据需求调整各列数值
         .ColumnWidths = "150,150,150,150,150,150,150,190,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,190,150,150,150,150,150,150,150,150,150,150"
         .Clear ' 清空ListBox原有内容
         .List = arrCombined ' 加载合并后的表格数据
         ' 设置表头区域,对应工作表第7行的两个表格表头
         .RowSource = sh.Range("A7:AD7").Address
    End With
End Sub

关键说明:

  • 第二个表格的列范围需根据实际情况修改:如果第二个表格不是从S列开始,或者列数不是18,要调整rng2的定义以及ColumnCount、ColumnWidths的对应数值
  • 若两个表格的行数不一致,可通过取最大行数、空行补空值的方式处理,避免数据错位
  • 使用数组拼接而非直接修改RowSource,能更灵活地处理横向合并的场景,同时提升数据加载效率

内容的提问来源于stack exchange,提问作者shahin syr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:05:38