1

我有一个按钮,可以从列表框中获取数据并将其放入表格的特定单元格中。我现在的问题是将值插入单元格时,它会填充单元格所在的整个列而不是特定单元格。

这是按钮的代码:

Private Sub cbSubmit_Click()

Dim i As Long
Dim v As Variant
Dim vTable() As Variant

 Set inventoryTable = cSheet.ListObjects("inventory_table")
    colItemID = inventoryTable.ListColumns("Item #").Index
    colSpecs = inventoryTable.ListColumns("Specs").Index

    v = inventoryTable.DataBodyRange.Rows
    ReDim vTable(1 To UBound(v, 1), 1 To 4)
    For i = 0 To lbItemList.ListCount - 1

        vTable(i + 1, 1) = "=DATA!" & lbItemList.List(i, 2)

        If specLink = "" Then
            Exit For
        Else

            vTable(i + 1, 4) = lbItemList.List(i, 1)

        End If
    inventoryTable.DataBodyRange(i + 1, colItemID).Value = vTable(i + 1, 1)
    inventoryTable.DataBodyRange(i + 1, colSpecs).Value = vTable(i + 1, 4)
    Next

Unload Me
End Sub

这是我运行按钮后的样子。
这个

我希望它只填写 Item # 中的第一个单元格,然后填写同一行中 Specs 中的单元格。然后沿着每个单元格的行向下并填写下一项。相反,每个项目都在旧项目之上填充。

4

1 回答 1

3

如果您的目标是结构化表格(又名 ListObject 对象)中的单个单元格,那么您需要打开AutoCorrect.AutoFillFormulasInLists 属性

Application.AutoCorrect.AutoFillFormulasInLists = False

这也可以通过Alt+ F、、、+来实现T,然后转到“键入P自动套用格式”选项卡并取消选中“在表格中填充公式”以创建计算列AltA

如果您希望此应用程序范围的选项可用,可选择在子过程结束时重新打开它。

Application.AutoCorrect.AutoFillFormulasInLists = True
于 2016-06-16T23:01:57.703 回答