使用VBA将值插入excel表的正确方法是什么?

Ash*_*ets 4 arrays vba insert excel-vba listobject

我需要能够使用VBA代码在excel中的空表中插入一大组值.这是代码到目前为止的工作方式.

首先,用户将值输入到用户表单中.然后代码清除表格,然后根据代码中已有的查找条件找到一系列数字.检索到的数据全部包含在单个列中,并像数组一样存储.

从这里开始,我需要将所有值放入表中的某个列(Policy#),从而将表行扩展为检索数据集中的许多行.(如果需要,我确实将计数单独存储为"AC")我要插入的列标题是"Policy#".

请记住,代码当前表中只有一个空行,如何正确插入数据?我试过了

 range("commissionstatement[Policy #]").value = Als
Run Code Online (Sandbox Code Playgroud)

但那不起作用.顺便提一下,Als是一系列价值观.通常要插入我必须插入到大小相等的范围的数组,这就是为什么我已经将行计数作为AC.

我也尝试过使用range("commissionstatement").listobject.listrows但不起作用.

有什么建议?在我实际将数据放入那里之前,我是否需要在表中插入一些等于我添加的数据的行...

range("commissionstatement").listobject.listrows.add ()
Run Code Online (Sandbox Code Playgroud)

然后插入数据?

如果需要更多信息,请与我们联系.谢谢!

chr*_*sen 6

假设您使用的是Excel 2010,请尝试此操作(可能不适用于早期版本的Excel)

Sub AddToList()
    Dim lo As ListObject
    Dim ws As Worksheet
    Dim Als() As Variant
    Dim rng As Range

    Set ws = ActiveSheet

    ' Get reference to table
    Set lo = ws.ListObjects("MyTable")  ' <--- Update this with your table name

    If lo.InsertRowRange Is Nothing Then
        ' List already has data
        Set rng = lo.ListRows.Add.Range
    Else
        ' List is empty
        Set rng = lo.InsertRowRange
    End If

    '  *** Remove one of these two lines ***
    ' If Als is a 1 dimensional array
    rng.Cells(1, lo.ListColumns("Policy #").Index).Resize(UBound(Als) - LBound(Als) + 1, 1) = Application.Transpose(Als)

    ' If Als is 2 dimensional array (1 to rows, 1 to 1)
    rng.Cells(1, lo.ListColumns("Policy #").Index).Resize(UBound(Als, 1), 1) = Als
End Sub
Run Code Online (Sandbox Code Playgroud)