2016-11-10 2 views
0

У меня есть табличный объект на листе, который используется многими формулами в моей книге.Можно ли удалить и воссоздать объект таблицы в VBA без удаления ссылок на формулы в книге?

Объект таблицы создается в рутине VBA.

Проблема заключается в том, что любые формулы, относящиеся к таблице, разбиваются, если таблица воссоздана в подпрограмме VBA. Можно ли избежать этого.

Например

=SUMIFS(output_dump[Value],output_dump[assetClass],"ML") 

нарушается, когда таблица удаляется и воссозданы с тем же именем во время VBA рутинного

=SUMIFS(#REF!,#REF!,"ML") 

Есть ли способ блокировки формул в листе или предупреждения их от обновления во время процедуры VBA?

+0

В теории, вы можете сбросить все ваши рабочий лист формул в массив, а затем после этого верните их обратно на рабочие листы. Бог знает, как медленно это будет, я даже не хочу угадывать ... – CallumDA

+0

Да, было бы неплохо, я попытался превратить режим расчета в 'xlCalculationManual', но безрезультатно .. – OfficialBenWhite

+0

Не можете ли вы просто обновить таблицу данных вместо их воссоздания? Вы можете сделать «.Clear» или подобное (я не знаю вашего конкретного случая) – RCaetano

ответ

0

просто вставить строки в таблице и любые ссылки из него будет обновлено, чтобы охватить в диапазоне новых строк данных

Option Explicit

Sub main() 
    Dim tbl As ListObject 

    Set tbl = Worksheets("table").ListObjects("output_dump") '<--| change "table" to your actual worksheet name 

    With tbl.DataBodyRange.Rows(2) '<-- reference data 2nd row 
     .Insert '<-- insert a row -> you'll have a new empty row between data row 1 and 2 
     .Offset(-1).Cells(1, 1) = "ML" '<-- fill inserted row row index (.Offset(-1)) first column (.Cells(1, 1)) 
     .Offset(-1).Cells(1, 2) = 100 '<-- fill inserted row row index (.Offset(-1)) second column (.Cells(1, 2)) 
    End With 
End Sub 
+0

@OfficialBenWhite; вы прошли через это? – user3598756

+0

@OfficialBenWhite, было бы здорово и уместно, чтобы вы давали отзывы людям, пытающимся помочь вам – user3598756

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