Здравствуйте. Возникла, казалось бы простая задача, растянуть формулу массива до конца последней строки, но по какой то причине это не выходит. Делал так. В Range("P2: Последняя строка / столбец") у меня имеются формулы ({массивы}). Я прочитал на форумах, что за вставку массивов отвечает не formula / formular1c1, а FormulaArray. Растягивать нужно в "P3: последняя строка/столбец"
Код
'Нахожу последний столбец / строку:
lColumnsCnt = wSh_Base_Sales.Cells(1, wSh_Base_Sales.Columns.Count).End(xlToLeft).Column
lLastRow_Prod_Un_C = wSh_Base_Sales.Cells(Rows.Count, 13).End(xlUp).Row
With wSh_Base_Sales
'Копирую формулы в весь диапозон
.Range(.Cells(3, 16), .Cells(lLastRow_Prod_Un_C, lColumnsCnt)).Formula = .Range(.Cells(2, 16), .Cells(2, lColumnsCnt)).Formula
For i = 16 To lColumnsCnt
'Преобразую формулы в массивы
.Range(.Cells(3, i), .Cells(lLastRow_Prod_Un_C, i)).FormulaArray = .Range(.Cells(3, i), .Cells(lLastRow_Prod_Un_C, i)).Formula
Next i
.Calculate
End With
Вся это конструкция не работает. Я не понимаю почему, особенно если учитывать что
работает без проблем Ситуация с Range("A1:A2") и Range(Cells (1,1), Cells(1,2)) должна быть одинаковой (так везде в примерах приведено), но у меня это не работает и всегда выдает ошибку.
А Вы попробуйте так же, как во втором примере не Formula указывать, а FormulaR1C1. Насколько помню, в справке тоже предлагают применять для формул массива именно этот стиль(хотя может работать и с другим, но велика вероятность ошибок).
P.S. Для оформления кодов на форуме применяется спец.тег: <...>
For i = 16 To lColumnsCnt
.Range(.Cells(3, i), .Cells(lLastRow_Prod_Un_C, i)).FormulaArray = .Range(.Cells(3, i), .Cells(lLastRow_Prod_Un_C, i)).Formula
Next i
А почему Вы пытаетесь выудить целый массив формул? Т.е. получаете все формулы из диапазона? Это неверно, FormulaArray должна быть строковым значением типа String, а свойство Formula, взятое из диапазона возвращает тип Array. Вот и вся ошибка. Делайте так:
The_Prist спасибо, заработало. Утро вечера мудренее оказалось, не заметил, что делаю полный бред. У меня видимо ошибка в чем-то еще, так как попробовал в другом файле, все работает, у меня нет. Буду искать подвох.