|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|||||||||||
Ошибка при разбиении текста на символы (на вход данные из Excel)13.08.2012, 10:22. Показов 3623. Ответов 22
Метки нет (Все метки)
Пишу макрос для заполнения документа и для заполнения полей, разбитых на клетки, решил провести посимвольное заполнение.
Но при выполнении программы получаю ошибку Invalid qualifier с указанием на переменную value. Подпрограмма для разбиения полученного содержимого ячеек на необходимое количество частей:
полный код.
За основу взят вполне рабочий макрос из интернета. Добавлено через 9 часов 26 минут Поправка. Ошибка указывает на переменную volume.
0
|
|||||||||||
| 13.08.2012, 10:22 | |
|
Ответы с готовыми решениями:
22
Ошибка при разбиении Acronis'ом : как восстановить данные?
|
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|
| 13.08.2012, 11:19 [ТС] | |
|
Предполагалась volume.
Исправил, но всё также получаю ошибку в volume.ToCharArray с указанием на переменную.
0
|
|
|
Супер-модератор
|
||||||
| 13.08.2012, 11:27 | ||||||
1
|
||||||
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|
| 13.08.2012, 11:29 [ТС] | |
|
Хм, вот как.
Тогда каким образом можно получить отдельные символы из строки, чтобы потом поместить в массив?
0
|
|
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
||||||
| 13.08.2012, 11:55 [ТС] | ||||||
|
Благодарю. То, что надо.
А знак процентов указан просто для отличия от других переменных или это какой-то особый элемент синтаксиса? Теперь говорит о несовпадении типов в строке:
0
|
||||||
|
Супер-модератор
|
||||||
| 13.08.2012, 11:59 | ||||||
|
Знак процента указывает на то, что переменная имеет тип Integer.
А оператор FindText(j) = "{" + mark + j + "}" лучше записать так:
1
|
||||||
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|
| 13.08.2012, 14:45 [ТС] | |
|
Хм, насколько понял, действия из подпрограммы x() не отражаются на массивах ReplaceText() и FindText().
Нумерация ячеек правильная (во всех случаях, где не требуется вызов x() всё проходит нормально). Как понял, что-то не так в объявлении переменных, но что именно понять не могу. В подпрограмме переобъявляю массивы всё тем же ReDim. Основная программа без изменений.
0
|
|
|
Супер-модератор
|
|||||||
| 13.08.2012, 15:52 | |||||||
1
|
|||||||
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
||||||
| 13.08.2012, 17:17 [ТС] | ||||||
|
Отлично! Заработало.
Насколько понимаю, последняя проблема.
Размер массива фиксированный - 30. На этом шаге volume содержит слово из 5 русских букв, u%=3. Добавлено через 36 минут Ах да, полный текст сообщения: Subscript out of range.
0
|
||||||
|
Супер-модератор
|
|
| 13.08.2012, 18:23 | |
|
1. Я бы вставил процент вот сюда: ReplaceText(u%) = Mid$(volume, u%, 1)
2. Если не поможет, проверьте, сколько символов в строке "volume". Если больше 30 - все понятно. Сообщение "Subscript out of range (9)" - означает выход индекса за границу описания (как в большую, так и в меньшую сторону)
1
|
|
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
||||||
| 13.08.2012, 19:06 [ТС] | ||||||
|
1. Исправлено.
2. В строке 5 символов. Больше 30 там быть не может в принципе. Появилось подозрение, что переопределять массивы с указанием размера стоит также вне процедур, но интерпретатор считает это плохой идеей. Быть может, всё дело действительно в этом?
0
|
||||||
|
Супер-модератор
|
|
| 13.08.2012, 19:35 | |
|
Когда возникнет ошибка - нажми "Отладка" и посмотри, что в u%, чему равно volume и верхнюю границу RepaceText. Для этого в окне отладки выполни Debug.print Ubound(RepaceText,1)
0
|
|
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|
| 13.08.2012, 19:59 [ТС] | |
|
Как было сказано выше, u& = 3, volume = "Суфия".
Только не понял, что означает "выполнить в окне отладки". В смысле, куда его вставлять?
0
|
|
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|
| 13.08.2012, 20:37 [ТС] | |
|
Полезная вещь. Надо будет побольше погуглить по этой теме.
Похоже, после ReplaceText() = Split, размер массива сокращается до 2. Поставил переопределение перед последующими разбиениями-заполнениями, теперь работает. Огромнейшая вам благодарность. Теперь обнаружилась ошибка с адресаций ячейка-метка, но, думаю, с этим я и сам справлюсь.
0
|
|
|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|
| 13.08.2012, 21:33 [ТС] | |
|
Опаньки, оказывается, ReplaceText(u%) = Mid$(volume, u% + 1, 1) возвращает пустую строку вместо цифр.
0
|
|
| 14.08.2012, 08:14 | |
|
0
|
|
| 14.08.2012, 08:14 | |
|
Помогаю со студенческими работами здесь
20
Ошибка при разбиении на страницы
Ошибка при разбиении программы на файлы(модули) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|