|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
31.10.2019, 20:23 | #1 |
Пользователь
Регистрация: 16.05.2009
Сообщений: 64
|
Как увязать тип данных в ячейке Эксел с типом данных в переменной VBA?
Здравствуйте!
Имею колонку шестизначных артикулов с форматом числа 000000. Т.е. есть артикулы с лидирующими нулями. 810625 315426 003344 012506 315426 810625 Средствами VBA я формирую массив неповторяющихся артикулов из этой колонки, а затем делаю выборку по каждому из артикулов. Фильтрую вот так: Код:
Пока я эту проблему решаю так: в начале кода форматирую колонку артикулов так, чтобы не было лидирующих нулей, а в конце кода опять возвращаю формат 000000. Но чешется мозг насчёт того, как бы изнасиловать переменную "art_massiv", чтобы этого не надо было делать. Ну и по касательной, второй вопрос. Задав переменной "art_massiv" тип as Integer я получаю ошибку - overflow при присвоении значения этой переменной. А это всего лишь шестизначное целое число. Как так? Пришлось отказаться от определения этой переменной. И всё работает, если не считать косяка с фильтром. Офис 2003. Спасибо! |
31.10.2019, 20:33 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
31.10.2019, 21:24 | #3 |
Пользователь
Регистрация: 16.05.2009
Сообщений: 64
|
|
31.10.2019, 21:45 | #4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Хочу чтоб были числа, но не числа
Хотя они и изначально не числа - сами ведь писали что там
webmoney: E265281470651 Z422237915069 R418926282008
|
31.10.2019, 21:51 | #5 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
возможно я Вас сильно огорчу но Integer это целые числа от -32768 до +32767
Цитата:
обьявите массив без типа. смелее экспериментируйте - все получится. удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
31.10.2019, 23:09 | #6 | |
Пользователь
Регистрация: 16.05.2009
Сообщений: 64
|
Цитата:
Видимо я что-то неправильно понял читая справку про Integer в VBA, где написано буквально следующее: Содержит 32-разрядные (4-байтовые) целые числа со знаком в диапазоне от -2 147 483 648 до 2 147 483 647. Массив я, естественно, объявил без типа. О чём и написано в топикстартере. |
|
31.10.2019, 23:17 | #7 | |
Пользователь
Регистрация: 16.05.2009
Сообщений: 64
|
Цитата:
И вот я задался вопросом, а можно ли переменную в ВБА представить шестизначным числом, даже если она, по сути, двух или трёхзначная. |
|
31.10.2019, 23:42 | #8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
- т.е. на самом деле в ячейке обычное число, возможно даже и одна цифра. Тогда как вариант (если нужно именно то, что видите на листе) - считывать из ячейки не .value, а .text, но нужно позаботиться чтоб не взять случайно именно то, что бывает видно в ячейке когда Эксель не может отобразить значение, т.е. #####
webmoney: E265281470651 Z422237915069 R418926282008
|
01.11.2019, 14:06 | #9 | |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
Цитата:
Последний раз редактировалось unbanned; 01.11.2019 в 14:18. |
|
01.11.2019, 16:41 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Зачем вообще производить какие-то арифметические действия с артикулами? Они прекрасно могут так и жить в текстовом виде.
webmoney: E265281470651 Z422237915069 R418926282008
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с типом данных | JIexa0 | Общие вопросы C/C++ | 7 | 22.03.2018 13:52 |
Макрос для переноса (с удалением) данных с одного листа на другой при появлении дополнительных данных в ячейке - MS Excel | Тохес | Microsoft Office Excel | 2 | 15.03.2016 22:26 |
Проблема с типом данных!!!!! | Екатерина_21 | C++ Builder | 1 | 02.02.2012 02:19 |
Проблема с типом данных | BMWSauber | Общие вопросы .NET | 1 | 12.10.2010 13:42 |
Макрос в эксел или PHP обработчик данных для формата .xls | panashka | Microsoft Office Excel | 2 | 02.11.2009 15:56 |