Процедура используется для рассчета стоимости и заполняет массив значений и формул, которые потом вставляются на лист целиком. Если что-то пошло не так, и формула битая какая нибудь (из за которой бывают ошибки #ЗНАЧ), то макрос вставит значения только до этой ячейки и вывалится с ошибкой 1004 Подскажите, а можно как-то вставить данные массивом, но без проверок, чтобы отобразились ошибки. ?
Процедура используется для рассчета стоимости и заполняет массив значений и формул, которые потом вставляются на лист целиком. Если что-то пошло не так, и формула битая какая нибудь (из за которой бывают ошибки #ЗНАЧ), то макрос вставит значения только до этой ячейки и вывалится с ошибкой 1004 Подскажите, а можно как-то вставить данные массивом, но без проверок, чтобы отобразились ошибки. ?
это конечно так было бы правильнее, и я так и буду делать - проверять сгенерированные формулы через Eval, но меня интересует теоретическая возможность вставки массива данных как есть.
Может я просто не знаю какой-то базовой переменной, которую можно было бы отключить и всё? Типа Application.EnableEvents=False и подобными этой?
это конечно так было бы правильнее, и я так и буду делать - проверять сгенерированные формулы через Eval, но меня интересует теоретическая возможность вставки массива данных как есть.
Может я просто не знаю какой-то базовой переменной, которую можно было бы отключить и всё? Типа Application.EnableEvents=False и подобными этой?PATRI0T
У меня примерно такая ситуация (см. код под спойлером)
[vba]
Код
Sub ErrTest()
Dim Arr As Variant Arr = Range("$A$1:$B$2") Arr(1, 1) = "1" Arr(1, 2) = "=2+" Arr(2, 1) = "3" Arr(2, 2) = "4" Range("$A$1:$B$2").Value = Arr End Sub
[/vba]
Формула сложения, и если один операнд по какой-то причине не определился, формула получается не законченной и вставить данные массивом не получается. Обратите внимание - данные вставятся только до ячейки с ошибкой. Можете поиграться и переместить в другое место.
Повторюсь. Мой вопрос не как проверять данные в массиве, а как вставить массив с заведомо битыми формулами
Спасибо за ответ.
У меня примерно такая ситуация (см. код под спойлером)
[vba]
Код
Sub ErrTest()
Dim Arr As Variant Arr = Range("$A$1:$B$2") Arr(1, 1) = "1" Arr(1, 2) = "=2+" Arr(2, 1) = "3" Arr(2, 2) = "4" Range("$A$1:$B$2").Value = Arr End Sub
[/vba]
Формула сложения, и если один операнд по какой-то причине не определился, формула получается не законченной и вставить данные массивом не получается. Обратите внимание - данные вставятся только до ячейки с ошибкой. Можете поиграться и переместить в другое место.
Повторюсь. Мой вопрос не как проверять данные в массиве, а как вставить массив с заведомо битыми формуламиPATRI0T
Сообщение отредактировал PATRI0T - Суббота, 13.01.2018, 12:33
Но в самом Excele'е нельзя вставить битую формулу - если формула битая и Вы нажимаете Enter, то Excel не позволит Вам вставить формулу. Поэтому у Вашей задачи нет решения. Единственное, можно сделать у ячеек формат "Текстовый" и тогда можно вставить все, что угодно, но в таком случае исправные формулы не будут работать, а будут в виде текста.
Но в самом Excele'е нельзя вставить битую формулу - если формула битая и Вы нажимаете Enter, то Excel не позволит Вам вставить формулу. Поэтому у Вашей задачи нет решения. Единственное, можно сделать у ячеек формат "Текстовый" и тогда можно вставить все, что угодно, но в таком случае исправные формулы не будут работать, а будут в виде текста.Karataev
Оно и понятно, в массив Вы вставлять должны какое-то значение, соответствующее к тому же типу данных объявленной переменной массива. Какое значение эксель должен вставить, когда формула говорит об ошибке?
Оно и понятно, в массив Вы вставлять должны какое-то значение, соответствующее к тому же типу данных объявленной переменной массива. Какое значение эксель должен вставить, когда формула говорит об ошибке?Roman777