Страницы: 1
RSS
VBA Кодировка и раскодировка причин
 
Добрый день, Уважаемые форумчане!  
 
Вы неоднократно уже мне помогали решать сложные и не очень задачи, за что вам огромное спасибо. Сейчас придумал сложную задачу (как мне кажется), и сам я её решить, к сожалению не могу.  
Очень прошу обратить внимание на эту задачку и помочь, если кто в силах.  
 
Описание вопроса во вложении.  
 
Заранее большое спасибо!
 
А почему выбрана именно такая система кодировки? ИМХО она не совсем удобная для этого случая, да еще и с точками...
 
{quote}{login=Влад}{date=30.12.2008 03:47}{thema=}{post}А почему выбрана именно такая система кодировки? ИМХО она не совсем удобная для этого случая, да еще и с точками...{/post}{/quote}  
 
Алфавитный тип кода выбран, по причине того, что вариантов в одном уровне может быть больше 9, а в числе 10 уже 2 цифры. И так как списки привязываются по оределённому количеству первых символов, то этот вариант не подошёл. Точки ставил, чтобы в глазах не сплывалось (мне показалось, что a.a.a. лучше, чем aaa), хотя для кода (для привязки списков) точки не принципиальны.
 
А можно посмотреть пример с указанием каких-нибудь конкретных причин вместо ТЕКСТ? Хотелось бы увидеть, как это будет выглядеть в оригинале.
 
{quote}{login=Влад}{date=30.12.2008 04:15}{thema=}{post}А можно посмотреть пример с указанием каких-нибудь конкретных причин вместо ТЕКСТ? Хотелось бы увидеть, как это будет выглядеть в оригинале.{/post}{/quote}  
 
Вместо слова ТЕКСТ(код) в Combobox будет выводиться текстовое значение, можно просто представить, что там написано, что-то (то, что Вам будет угодно).  
Я проставил ТЕКСТ(код), чтобы можно было проверить что привязка работает корректно.  
А на самом деле выглядит так, пример:  
   код в ячейке         |    код в Combobox    
уровень 1  
a.Нахамили по телефону  => Нахамили по телефону  
уровень2  
a.a.Оператор матюкнулся => Оператор матюкнулся  
 
привязка идёт по первым двум символам, т.е. по a.
 
Хорошо, кодировку можно отложить, главнее раскодировка.  
К примеру есть у нас код: 1aab2nnb3ddbdbb  
надо чтобы макрос раскидал его на причины, как это можно сделать?
 
Не спешите. Для удобства раскодировки нужно сначало "научить" макрос правильно кодировать. Предлагаю такой вариант: точками разделять только причины/подпричины, т.е. формировать кодовую строку в виде 1.a.ab.2.n.nb.3.d.db.dbb. Тогда в дальнейшем "." можно будет использовать как разделительный символ. Строку бить командой Split, восстанавливать текст причин по коду через Select Case в цикле.
 
Имею ввиду использовать Select Case для различения номера причины и самого кода. Код искать в списке через find и загонять найденное значение в массив, или (если получится) сразу в результирующую таблицу.
 
{quote}{login=Влад}{date=30.12.2008 04:47}{thema=}{post}Имею ввиду использовать Select Case для различения номера причины и самого кода. Код искать в списке через find и загонять найденное значение в массив, или (если получится) сразу в результирующую таблицу.{/post}{/quote}  
 
хм полезные советы. ТОлько я не знаю, получится у меня это сделать.
 
Да вроде ничего сложного:) Split создаст одномерный массив с кодами и номерами причин. Ubound определит общее количество элементов. Можно и без Select Case - оператор IsNumber позволит узнать, является ли проверяемый циклом элемент массива цифрой (тогда подготовить следующую причину к заполнению) или текстом (тогда организовать поиск кода в списке через find). Find.Column покажет номер условия (подпричины), ну а вставить найденый текст причины в нужную ячейку вам уже не составит труда:)
 
{quote}{login=Влад}{date=30.12.2008 05:06}{thema=}{post}Да вроде ничего сложного:) Split создаст одномерный массив с кодами и номерами причин. Ubound определит общее количество элементов. Можно и без Select Case - оператор IsNumber позволит узнать, является ли проверяемый циклом элемент массива цифрой (тогда подготовить следующую причину к заполнению) или текстом (тогда организовать поиск кода в списке через find). Find.Column покажет номер условия (подпричины), ну а вставить найденый текст причины в нужную ячейку вам уже не составит труда:){/post}{/quote}  
 
ок, почитаю на досуге и попытаюсь сделать.  
Спасибо!
Страницы: 1
Читают тему
Наверх