Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как вставить массив с ошиб ками - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как вставить массив с ошиб ками (Макросы/Sub)
Как вставить массив с ошиб ками
PATRI0T Дата: Пятница, 12.01.2018, 11:08 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.

Процедура используется для рассчета стоимости и заполняет массив значений и формул, которые потом вставляются на лист целиком.
Если что-то пошло не так, и формула битая какая нибудь (из за которой бывают ошибки #ЗНАЧ), то макрос вставит значения только до этой ячейки и вывалится с ошибкой 1004
Подскажите, а можно как-то вставить данные массивом, но без проверок, чтобы отобразились ошибки. ?

[vba]
Код
[РассчетЗаказа].Resize(UBound(ArrTable, 1), UBound(ArrTable, 2)) = ArrTable
[/vba]


Сообщение отредактировал PATRI0T - Пятница, 12.01.2018, 11:10
 
Ответить
СообщениеДобрый день.

Процедура используется для рассчета стоимости и заполняет массив значений и формул, которые потом вставляются на лист целиком.
Если что-то пошло не так, и формула битая какая нибудь (из за которой бывают ошибки #ЗНАЧ), то макрос вставит значения только до этой ячейки и вывалится с ошибкой 1004
Подскажите, а можно как-то вставить данные массивом, но без проверок, чтобы отобразились ошибки. ?

[vba]
Код
[РассчетЗаказа].Resize(UBound(ArrTable, 1), UBound(ArrTable, 2)) = ArrTable
[/vba]

Автор - PATRI0T
Дата добавления - 12.01.2018 в 11:08
K-SerJC Дата: Пятница, 12.01.2018, 12:18 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 359
Репутация: 52 ±
Замечаний: 0% ±

Excel 2013
например при заполнении массива, заменять ошибки, текстом


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениенапример при заполнении массива, заменять ошибки, текстом

Автор - K-SerJC
Дата добавления - 12.01.2018 в 12:18
PATRI0T Дата: Пятница, 12.01.2018, 14:19 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
это конечно так было бы правильнее, и я так и буду делать - проверять сгенерированные формулы через Eval, но меня интересует теоретическая возможность вставки массива данных как есть.

Может я просто не знаю какой-то базовой переменной, которую можно было бы отключить и всё?
Типа Application.EnableEvents=False
и подобными этой?
 
Ответить
Сообщениеэто конечно так было бы правильнее, и я так и буду делать - проверять сгенерированные формулы через Eval, но меня интересует теоретическая возможность вставки массива данных как есть.

Может я просто не знаю какой-то базовой переменной, которую можно было бы отключить и всё?
Типа Application.EnableEvents=False
и подобными этой?

Автор - PATRI0T
Дата добавления - 12.01.2018 в 14:19
sboy Дата: Пятница, 12.01.2018, 15:23 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1909
Репутация: 558 ±
Замечаний: 0% ±

Excel 2010
Файл бы помог в понимании проблемы, т.к. ошибки с листа нормально пишутся в массив и обратно на лист...
запустите макрос er в файле
К сообщению приложен файл: 1921297.xlsm(14.6 Kb)
 
Ответить
СообщениеФайл бы помог в понимании проблемы, т.к. ошибки с листа нормально пишутся в массив и обратно на лист...
запустите макрос er в файле

Автор - sboy
Дата добавления - 12.01.2018 в 15:23
PATRI0T Дата: Суббота, 13.01.2018, 12:31 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо за ответ.

У меня примерно такая ситуация (см. код под спойлером)

[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 - Суббота, 13.01.2018, 12:33
 
Ответить
СообщениеСпасибо за ответ.

У меня примерно такая ситуация (см. код под спойлером)

[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
Дата добавления - 13.01.2018 в 12:31
Karataev Дата: Суббота, 13.01.2018, 13:10 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1238
Репутация: 471 ±
Замечаний: 0% ±

Excel
Но в самом Excele'е нельзя вставить битую формулу - если формула битая и Вы нажимаете Enter, то Excel не позволит Вам вставить формулу.
Поэтому у Вашей задачи нет решения.
Единственное, можно сделать у ячеек формат "Текстовый" и тогда можно вставить все, что угодно, но в таком случае исправные формулы не будут работать, а будут в виде текста.


Киви-кошелек: 9166309108
Яндекс-деньги: 410014131888288
 
Ответить
СообщениеНо в самом Excele'е нельзя вставить битую формулу - если формула битая и Вы нажимаете Enter, то Excel не позволит Вам вставить формулу.
Поэтому у Вашей задачи нет решения.
Единственное, можно сделать у ячеек формат "Текстовый" и тогда можно вставить все, что угодно, но в таком случае исправные формулы не будут работать, а будут в виде текста.

Автор - Karataev
Дата добавления - 13.01.2018 в 13:10
Roman777 Дата: Суббота, 13.01.2018, 13:32 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 865
Репутация: 109 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Оно и понятно, в массив Вы вставлять должны какое-то значение, соответствующее к тому же типу данных объявленной переменной массива. Какое значение эксель должен вставить, когда формула говорит об ошибке?


Много чего не знаю!!!!
 
Ответить
СообщениеОно и понятно, в массив Вы вставлять должны какое-то значение, соответствующее к тому же типу данных объявленной переменной массива. Какое значение эксель должен вставить, когда формула говорит об ошибке?

Автор - Roman777
Дата добавления - 13.01.2018 в 13:32
PATRI0T Дата: Суббота, 13.01.2018, 13:51 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо всем огромное, в проблеме разобрался.
Текстовый формат решает!
 
Ответить
СообщениеСпасибо всем огромное, в проблеме разобрался.
Текстовый формат решает!

Автор - PATRI0T
Дата добавления - 13.01.2018 в 13:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как вставить массив с ошиб ками (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!