Строка вставки таблицы Excel Listobject вызывает ошибку формулы ячейки

Фон: я создал шаблон Word, который содержит подпрограмму, которая создает массив, который содержит заголовок проекта в первом измерении и заголовок цели во втором измерении. Этот массив транспонируется в таблицу в Excel для использования при создании диаграммы временной шкалы / диаграммы Ганта.

Проблема: Транспонирование помещает информацию массива соответствующим образом в таблицу Excel и расширяет размер этой таблицы по желанию. Ячейка B5 является началом DataBodyRange и началом, куда я хочу вставить информацию массива.

' paste headings from array into excel
xlWS.Range("B5:C" & UBound(gHeadings, 2)) = xlApp.Transpose(gHeadings)

То, что не происходит надлежащим образом, находится в последующих ячейках данных в таблице. Ячейки шкалы времени имеют следующую формулу:

=IF(AND(COLUMNS($H$5:H10)>=$E5,COLUMNS($H$5:H10)<=$F5),IF(COLUMNS($H$5:H10)-$E5<ROUND(($F5-$E5+1)*$G5,0),fillblock,""),"")

Когда транспонирование завершено, строка ячеек, содержащая указанные в формуле ошибки в строке таблицы, которая была исходной последней строкой DataBodyRange. В этой строке, строке 10, формула изменяется с того, что показано выше, на:

=IF(AND(COLUMNS($H$5:H119)>=$E10,COLUMNS($H$5:H119)<=$F10),IF(COLUMNS($H$5:H119)-$E10<ROUND(($F10-$E10+1)*$G10,0),fillblock,""),"")

Любые мысли или понимание того, почему это происходит, и как это предотвратить?

1 ответ

Решение

Общий ответ о том, почему таблицы Excel ведут себя так, как я описал, остается без ответа. Но вот мой обходной путь. Скорость удара незначительна.

    ' variable to hold the formula and fix the double-quote ("") issue in vba
        sEmpty = Chr(34) & Chr(34)
        sFormula = "=IF(AND(COLUMNS($H$5:H5)>=$E5,COLUMNS($H$5:H5)<=$F5),IF(COLUMNS($H$5:H5)-$E5<ROUND(($F5-$E5+1)*$G5,0),fillblock," & sEmpty & ")," & sEmpty & ")"

    ' paste cell formula into the new worksheet
        lTblRows = xlLO.DataBodyRange.Rows.Count
        xlWS.Range("H5:AK" & lTblRows + 4).Formula = sFormula

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

Другие вопросы по тегам