リストボックスからデータを取り出し、テーブルの特定のセルに配置するボタンがあります。私の問題は今、特定のセルの代わりにセルが入っている列全体を塗りつぶすセルに値を挿入するときです。ここでコードが個別に表のセルを塗りつぶすのではなく、列全体を塗りつぶす
は、ボタンのコードです:
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のセルだけを入力します。次に、各セルの行を下に移動し、次の項目を入力します。代わりに、各アイテムは古いアイテムの上に塗りつぶされます。
[DataBodyRange] [%]は、テーブル内のヘッダー行を除いた値の範囲を表します。読み取り専用]](https://msdn.microsoft.com/en-us/library/office/ff841252.aspx) – findwindow
データボディ範囲は、定義されていても特定のセルではなく、全体の範囲を選択して編集します?それを細胞に絞り込む方法はありますか?私はいくつかの方法を試みました(databodyrangeの代わりに範囲を使用しました、 'InventoryTable.listcolumns( "Item#")。databodyrange(i + 1、colItemID).value'、 'inventoryTable.cells'など) 。 – JED