|
7 / 7 / 0
Регистрация: 13.08.2012
Сообщений: 250
|
|||||||||||
Ошибка при разбиении текста на символы (на вход данные из Excel)13.08.2012, 10:22. Показов 3576. Ответов 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
Ошибка при разбиении на страницы
Ошибка при разбиении программы на файлы(модули) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|