2016-06-16 29 views
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 

これは私がボタンを実行した後に、それがどのように見えるかです。
This

Item#の最初のセルとその同じ行のSpecsのセルだけを入力します。次に、各セルの行を下に移動し、次の項目を入力します。代わりに、各アイテムは古いアイテムの上に塗りつぶされます。

+0

[DataBodyRange] [%]は、テーブル内のヘッダー行を除いた値の範囲を表します。読み取り専用]](https://msdn.microsoft.com/en-us/library/office/ff841252.aspx) – findwindow

+0

データボディ範囲は、定義されていても特定のセルではなく、全体の範囲を選択して編集します?それを細胞に絞り込む方法はありますか?私はいくつかの方法を試みました(databodyrangeの代わりに範囲を使用しました、 'InventoryTable.listcolumns( "Item#")。databodyrange(i + 1、colItemID).value'、 'inventoryTable.cells'など) 。 – JED

答えて

3

あなたがAutoCorrect.AutoFillFormulasInLists propertyの有効にする必要があり、その後の構造化テーブルに(ListObject object別名)を、個々の細胞を標的としている場合。

Application.AutoCorrect.AutoFillFormulasInLists = False 

これはまた、TAltキー + Fで達成することができ、PAltキー + その後、あなたはタブを入力し、のチェックを外したようオートフォーマットに行きます計算された列を作成するテーブル内の数式を入力します

オプションで、このアプリケーション全体のオプションを使用できるようにするには、サブプロシージャの最後に再度オンにします。

Application.AutoCorrect.AutoFillFormulasInLists = True 
+1

alt f t p alt a ....あなたはアップダウンしていないと確信していますか? = P – findwindow

+1

これはとても感謝しています!私はそれを設定してブックを開いた状態にしてから閉じる前にそれを可能にする。私は自分のコードが正しいと思った。 – JED

関連する問題