|
2 / 2 / 0
Регистрация: 13.02.2010
Сообщений: 3
|
|
VBA - запуск макросов, сообщение об ошибке, цикл13.02.2010, 04:23. Показов 4445. Ответов 9
Метки нет (Все метки)
Доброй ночи! Есть вопрос по заданию по программированию в универе (уровень знаний - ознакомительный), если поможете и как можно скорее, то буду очень благодарна.
Задача такова: создать 2 любых макроса в Worde. создать форму (2 optionButton, 1checkBox, 2commandButton - OK и CANCEL), которая будет запускать эти макросы так: 1. включен OptionButton1 и CheckBox1 => макрос1 2. включен OptionButton2 и CheckBox1 => макрос2 Если ничего не выбрано или выбран только CheckBox1 и нажать ОК, вывести сообщение типа "ошибка". Позволить ошибаться 4 раза и закрыть форму. Форма также должна закрываться по CANCEL. Я кое-что сделала, НО... поскольку нет опыта, то и результаты такие. В общем, как там видно, у меня при ошибке сообщение выскакивает и подряд все 4 раза открывается. Так не должно быть. Может, можете помочь?
0
|
|
| 13.02.2010, 04:23 | |
|
Ответы с готовыми решениями:
9
Как открыть книгу (Excel) из VBA и при этом отключить запуск макросов в ней
|
|
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
|
|
| 13.02.2010, 05:15 | |
|
в разделе объявления модуля формы необходимо объявить переменную типа Static
это такая переменная которая не исчезает при выходе из процедуры (но изчезает при закрытии формы). в теле обработчика нажатия кнопки следует поместить оператор увеличения этой переменной на единицу и проверку - не превысило ли ее значение 4. если превысило - закрыть форму. ну и условия твои... вместо того, чтобы перебирать все возможные комбинации давай при входе в процедуру обработки кнопки проверим - установлен ли чекбокс, и если он установлен, проверим оператором Case ... Else какой оптион установлен и установлен ли он вообще. Добавлено через 2 минуты потом код можно будет украсить и оптимизировать. чтобы получить хорошую отметку Добавлено через 3 минуты если бы ты использовал для отладки клавишу F8, то разобрался бы и сам. если в режиме останова навести мышу на выражение или переменную, узнаешь текущее значение
0
|
|
|
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
|
|
| 13.02.2010, 08:14 | |
|
innannai,
0
|
|
|
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
|
|
| 13.02.2010, 10:51 | |
|
Интересно, а в банкоматах также создаётся статичная переменная и если ты 3 раза неправильно ввёл код, то карточка блокируется.
0
|
|
|
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
|
|||||||||||
| 13.02.2010, 12:13 | |||||||||||
|
действительно. с select... case я загнул. перепутал с чем то вроде RadioButtonList (который возвращает номер выбранного элемента)
развивая идею Busine2009... вот вариант без лишнего ветвления. ветвление исключено благодаря включению одного оптионБокса по умолчанию (при загрузке формы программно или в конструкторе в окне свойств), что, кстати, является хорошим стилем
0
|
|||||||||||
|
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
|
|||||||
| 13.02.2010, 12:58 | |||||||
|
Я вот так ещё сейчас сделал, я на самом деле очень плохо знаю VBA.
0
|
|||||||
|
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
|
||||||
| 13.02.2010, 13:34 | ||||||
|
это для читабельности прием. VBA ведет счет от нуля. поэтому можно написать 4-1. будет понятно, что нам надо четыре раза. а компилятор при первом проходе вычислит это выражение и сохранит как константу 3, скорость кода не ухудшается
Добавлено через 10 минут не обязательно очищать статическую переменную. она и так перестает существовать при закрытии формы. а вот обнулить этот счетчик в случае успешного запуска макроса наверное стоит. innannai, как насчет автостарта твоей формы при открытии документа. обрати внимание на событие документа Document_Open() Добавлено через 15 минут innannai, можно и кнопочку на первой странице для повторного запуска формы. и макрос ты как то нечестно запускаешь. может вот в таком духе?
0
|
||||||
|
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
|
|
| 13.02.2010, 13:41 | |
|
ironegg,
кстати ты прав, надо полностью прописывать путь к макросу. Я с этим как-раз вчера столкнулся. Сейчас делаю новый шаблон и вставляю в него модули и коды из старых шаблонов. У меня тоже есть макросы по вызову других макросов, и я их вызывал по имени процедуры. А у меня в проекте оказалось 2, а может и больше (я потом сразу переделал), процедуры с одинаковыми именами. Я сижу делаю работу и вдруг появляется совсем из другой оперы.
0
|
|
|
2 / 2 / 0
Регистрация: 13.02.2010
Сообщений: 3
|
|
| 13.02.2010, 13:43 [ТС] | |
|
ой) да, неправильно запускаю, знаю) но это уже ладно.
автооткрытие - это, конечно, хорошо, как и кнопка автозапуска, но абсолютно не нужна по заданию. а так в дальнейшем - , буду исправляться.спасибо, ребята, все работает, беру два ваших варианта. ![]() рада, что от лишней моей писанины избавились. и форма Static для меня теперь понятна. правда, утречком пришлось немного помучаться, разбираясь в select case, хаха задание выполнено.
0
|
|
|
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
|
||||||
| 13.02.2010, 13:54 | ||||||
|
innannai,
вот это говорят не нужно, так что можешь удалить
0
|
||||||
| 13.02.2010, 13:54 | |
|
Помогаю со студенческими работами здесь
10
Поделюсь шаблонами макросов VBA Предупреждение системы… Запуск макросов отключен
Запуск макросов из Delphi. 1-создание 2-удаление
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|