2016-06-16 8 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

Если вы ориентируетесь отдельные ячейки в структурированной таблице (акаListObject object), то вам необходимо обратиться в AutoCorrect.AutoFillFormulasInLists property.

Application.AutoCorrect.AutoFillFormulasInLists = False 

Это также может быть достигнуто с Alt + F, T, P, Alt + затем перейти к Автоформат Как Вы Введите вкладку и снимите Заполните формулы в таблицах, чтобы создать расчетные столбцы.

Опционально включите его в конце своей подпроцедуры, если вы хотите иметь эту доступную для всего приложения опцию.

Application.AutoCorrect.AutoFillFormulasInLists = True 
+1

alt f t p alt a .... вы уверены, что это не вверх по b a b вверх вниз? = P – findwindow

+1

Это исправлено, спасибо большое! Я установил его так, чтобы он отключился при открытии рабочей книги, а затем перед закрытием включил его. Я думал, что мой код прав. – JED

 Смежные вопросы

  • Нет связанных вопросов^_^