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これは、 + FTPAlt+を使用して達成することもできます。A次に、 [入力オートフォーマット] タブに移動し、[表に数式を入力して計算列を作成する] のチェックを外します。

このアプリケーション全体のオプションを利用可能にしたい場合は、必要に応じてサブ手順の最後でオンに戻します。

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