Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
3 / 3 / 0
Регистрация: 17.05.2015
Сообщений: 39
Access

VBA + нормальный дебаг, реальность или утопия

12.07.2018, 12:47. Показов 3298. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех читающих!) Для людей у которых не хватает терпения либо берегут глаза рекомендую перейти сразу на 4й абзац этого "длиннопоста"

Только начиная свое непродолжительное (на данный момент) знакомство с VBA я не мог не отметить ужасного вида стандартный SDK. В те первые дни наполненые суровой реальностью ограниченной длинны строк кода(это когда вставляешь SQL, а среда такая: "а не побить ли мне его на отдельные строчки чертекак!? отличная идея!") и удивительно "полезным" контролем синтаксиса (и настолько же удивительно навязчивым: "Не, едрен батон, вот после этого знака "равно" ты должОн чтот присвоить, и мне пофиг, что ты пошел копировать значение в другом участке кода - Сначала нажми ка на "Окей" моего безумно полезного меседжбокса" ) а уж проблемы с кодировкой мммм... мои любимые) я думал так: "Да ладно, эт не надолго, привыкнуть только, а там задачку допилю и покеда".

Не тут-то было товарищи! Судя по всему я тут надолго) Что плавно подводит к сути вопроса. Озвученные проблемы это так, мелкие неудобства, как например крокозябры вместо кирилицы при вставке - известно как боротся. с остальными же можно и мирится. Но вот чего мне действительно не хватает как человеку изнеженному вижуал студией, нетбинсом, да и еклипсом, так это адекватного дебага.

Да, в встроенной пародии на SDK есть брейк поинты. Да, компилятор на этапе компиляции сообщает иногда полезную инфу об ошибке. Бывает даже так, что при ошибке правильно указывает на нужную строчку, а не на начало SUB'a (!!)... Но мне этого уже не достаточно. "Проект" уже "распух" до той стадии когда начинаешь смотреть на некоторые участки кода с мыслью "А ты ли это писал?" и "что это вообще здесь имелось в виду?". Потому хотелось бы в случае ошибки вроде "Попытки присвоить null значению Variant" или там "у этого класса нет такого свойства" что-то кроме "крайне полезной" справки по этой ошибке. А конкретно: нормальный стактрейс ошибки с указанием всех ключевых елементов критичного пути. Разве я хочу слишком многого?

Потому нужен совет, либо ссылка на соответствующую информацию - как заменить или проапгейдить "SDK по умолчанию" таким образом чтобы там появился нормальный дебаг. Чтобы новая SDK открывалась вместо обычного редактора VBA. Например - я знаю что в вижуал студии это все есть. Есть даже возможность компиляции VB кода. Но как открыть БД аксесс кроме как через БДО конекторы? мне то нужно редактировать и дебажить код форм и прочую шушеру а не работать с базой...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2018, 12:47
Ответы с готовыми решениями:

Утопия или реальность
Доброго всем времени Задался я целью создать себе (помощника в работе) USB Диск на котором бы было следующие: 1)Windows PE и нужные...

VBA это миф или реальность в русской раскладке?
VBA это миф или реальность в русской раскладке?

Где можно скачать нормальный хелп или литературу по VBA для office2000?
здравствуй, Народ! если не трудно подскажи адреса где можно скачать нормальный хелп или литературу по VBA для office2000 ато в...

54
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
18.07.2018, 15:59
Студворк — интернет-сервис помощи студентам
Коллеги, а не кажется ли вам что это все из-за "ё", которая вылезает за пределы непрерывного алфавита русских букв в нашей аске? при попытке привести переменные в один регистр, исполняющая функция считает, что наш алфавит в длину без буквы ё, а как только начинает выстраивать все для перевода в один регистр, то "ё" начинает учитывать ... а т.к. длина алфавита по факту больше чем он считает, то при приведении регистра в один - последняя буква и теряется

(например)а длину алфавита он считает разницу между началом алфавита и концом таблицы аски (где и стоит я)
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12513 / 5087 / 814
Регистрация: 07.08.2010
Сообщений: 14,985
Записей в блоге: 4
18.07.2018, 15:59
надо еще букву Ё проверить

Visual Basic
1
2
3
4
5
6
7
8
9
Sub A____180131()
датаа = 2: датаа = 3
датаю = 2: датаю = 3
датаё = 2: датаЁ = 3
датаэ = 2: датаэ = 3
датая = 2: датаЯ = 3
 
 
End Sub
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
18.07.2018, 16:18
Цитата Сообщение от anton-sf Посмотреть сообщение
ваш вариант непригоден так как для vba это две разные переменные !
именно поэтому пригоден, т.к. для VBA это две разные переменные! Мой пример работает, а ваш нет, потому как у вас в объявлении одна переменная, а в присваивании другая!

Добавлено через 2 минуты
Цитата Сообщение от StepInLik Посмотреть сообщение
Коллеги, а не кажется ли вам что это все из-за "ё",
так дело в букве "Я", до "ё" еще не дошли)
0
 Аватар для anton-sf
128 / 64 / 14
Регистрация: 29.03.2015
Сообщений: 265
18.07.2018, 16:52
Цитата Сообщение от bedvit Посмотреть сообщение
именно поэтому пригоден, т.к. для VBA это две разные переменные!
Не согласен с вами, в таком случае зачем нам IDE? Давайте писать в блокноте и самостоятельно компилировать, хе
Я пишу всегда в маленьком регистре а умный редактор самостоятельно исправляет регистр переменных, это же сделано, понимаете?
Это именно так работает и так должно работать, ну кроме буквы я в верхнем регистре.
И именно поэтому ваш вариант непригоден.

Добавлено через 3 минуты
Цитата Сообщение от StepInLik Посмотреть сообщение
Коллеги, а не кажется ли вам что это все из-за "ё"
Кажется, кажется, ну, как один из многих вариантов, но даже если вы правы то что это нам даст?

Добавлено через 21 минуту
Цитата Сообщение от bedvit Посмотреть сообщение
SoftIce, суть в том, что везде пишут что в VBA регистронезависимые переменные. По факту это не так - регистрозависимые см.п34.
Так правильно пишут, для примера попробуйте на латинице создать две переменных "Var" и "vaR"
Сперва редактор исправит регистр переменных (будет одинаковый) а после запуска процедуры
на выполнение компилятор ругнется duplicate declaration'oм
А если есть языки где переменные регистрозависимые то этим кодерам можно только посочувствовать, ужас же
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
18.07.2018, 17:35
Сразу, пока все собрались ... может я чего не знаю

почему можно глобально писать
Const d& = 1024 * 10
но уже
Const d& = 1024 * 100
нельзя?!

и лонг тут не при чем
потому, как можно указать
Const d& = 1024100
или
Const d = 1024100

Добавлено через 8 минут
нашел. надо добавлять явное преобразование
Const d = 1024& * 10
видимо базовый тип константы не является основанием к преобразованию. логика конечно торжествует
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
18.07.2018, 17:39
Цитата Сообщение от anton-sf Посмотреть сообщение
Давайте писать в блокноте и самостоятельно компилировать
Так бородатые дядьки и делают.
Цитата Сообщение от anton-sf Посмотреть сообщение
И именно поэтому ваш вариант непригоден.
Мой вариант не пригоден, потому как за вас IDE-шник не сделал вашу работу (привел все переменные к идентичному регистру)? Странное заявление. По-моему мой вариант рабочий, а ваш нет, вне зависимости от работы IDE. Привыкайте программировать правильно, потому как...
Цитата Сообщение от anton-sf Посмотреть сообщение
есть языки где переменные регистрозависимые то этим кодерам можно только посочувствовать, ужас же
(можно посочувствовать кодерам, которые переменные объявляют в одном регистре, а присваивают другим переменным в другом регистре, а думаю что тем же самым переменным). Все нормальные языки регистрозависимые, потому как это разные символы юникода, что я считаю правильно.
Пример на С++
Миниатюры
VBA + нормальный дебаг, реальность или утопия  
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
18.07.2018, 17:51
C#.NET
Миниатюры
VBA + нормальный дебаг, реальность или утопия  
0
 Аватар для anton-sf
128 / 64 / 14
Регистрация: 29.03.2015
Сообщений: 265
18.07.2018, 18:52
Цитата Сообщение от bedvit Посмотреть сообщение
Мой вариант не пригоден, потому как за вас IDE-шник не сделал вашу работу (привел все переменные к идентичному регистру)? Странное заявление. По-моему мой вариант рабочий, а ваш нет, вне зависимости от работы IDE. Привыкайте программировать правильно, потому как...
Напомню вам "константы" IDE Excel, проблему и что мы обсуждаем конкретную среду: переменные регистронезависимые, редактор исправляет регистр переменных в коде к регистру в объявлении, есть проблема с регистром одной буквы.
Вы предлагаете устранить проблему объявлением дополнительной переменной с другим регистром, так сказать победить баг багом.
Если предположить что вы рассчитывали на запись в одну и туже переменную обращаясь к двум одинаковым но с разными регистрами то вы ошиблись и это не работает, то есть ваш вариант не пригоден.
Если предположить что вы рассчитывали устранить проблему дав кодеру две переменных вместо одной то вы так же ошиблись так как это лишь усугубляет работу кодера, дебаг программы, то есть ваш вариант не пригоден.

Странно не моё заявление а ваше, так как IDE не делает за меня мою работу, он делает свою работу.
Что значит привыкайте программировать правильно? В этой среде я следую её правилам и это и есть правильно.
Эта вот часть вашего ответа была мягко говоря лишняя, или это шутки такие от "бородатых дядек"? Чет не смешно.

По примеру из си шарп - здорово, пользуйтесь, вы привели пример регистрозависимости.
Гм, но вы явно не в блокноте пишите, среда то у вас посмартовее будет чем наш IDE (намёк про бородатость).
И сдаётся мне что в вашей среде регистрозависимость является настраиваемым параметром.

Добавлено через 3 минуты
Касательно решения проблемы - решения не искал, давно привык к этой занозе, на латиницу переходить не буду.

Добавлено через 5 минут
Цитата Сообщение от bedvit Посмотреть сообщение
можно посочувствовать кодерам, которые переменные объявляют в одном регистре, а присваивают другим переменным в другом регистре, а думаю что тем же самым переменным
А вы не заметили что вашем варианте именно это и будет происходить?

Добавлено через 2 минуты
Цитата Сообщение от bedvit Посмотреть сообщение
Все нормальные языки регистрозависимые, потому как это разные символы юникода
Не все языки, VBA в моем Office ASCII ориентированный, а "нормальность" это вообще из области фантастики

Добавлено через 5 минут
А даже если и все языки регистрозависимые то в нашем случае, в среде, для кодера, это не так!
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
18.07.2018, 19:02
Цитата Сообщение от anton-sf Посмотреть сообщение
Вы предлагаете устранить проблему объявлением дополнительной переменной с другим регистром
Нет, я предлагаю правильный (ИМХО) подход - использовать наименование переменной в коде, такое же как в объявлении (в идентичном регистре). Все. Везде так делается. Да проблема есть, IDE Excel за вас не приводит к одному регистру букву "Я". Но если изначально писать, так как я выше написал, то проблем не будет. За 10 лет программирования в VBA только теперь узнал, что такой косяк есть в IDE. Наверное потому что следовал вышеописанному правилу. В других языках (C++, C#.NET) вы вообще не сможете присвоить данные, в том коде который вы выше написали (компилятор не даст), просто VBA простой язык и демократичен к начинающим, многое позволяет с собой делать.
Цитата Сообщение от anton-sf Посмотреть сообщение
это шутки такие от "бородатых дядек"?
нет, серьезно. Пример.

Добавлено через 4 минуты
Цитата Сообщение от anton-sf Посмотреть сообщение
А вы не заметили что вашем варианте именно это и будет происходить?
каким образом? у меня всё в идентичном регистре.

Добавлено через 1 минуту
Поэтому, собственно, и работает
0
 Аватар для anton-sf
128 / 64 / 14
Регистрация: 29.03.2015
Сообщений: 265
18.07.2018, 19:17
Цитата Сообщение от bedvit Посмотреть сообщение
Нет, я предлагаю правильный (ИМХО) подход - использовать наименование переменной в коде, такое же как в объявлении (в идентичном регистре). Все. Везде так делается.
Ох, это сродни предложить мне бросить дышать. Я со школы что-то клепаю/поделываю на VBA и всегда писал тело программы в маленьком регистре. Не, не вариант. И программировать правильно мне не нужно, мне нужно понятно, в удовольствие. И несмотря на косяки инструмента у меня тоже работает - предупреждён значит вооружён.
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
18.07.2018, 19:27
anton-sf, так и пишите в "маленьком" регистре. А в вашем примере объявление в большом, а код в маленьком. Если все было бы в одном, ошибок не было бы. Попробуйте.
0
 Аватар для anton-sf
128 / 64 / 14
Регистрация: 29.03.2015
Сообщений: 265
19.07.2018, 03:05
bedvit, нет, я буду объявлять переменную с разным регистром букв, а обращаться к переменной в коде (делал и делаю) буду исключительно в маленьком и редактор будет (делал и будет делать) менять регистр букв на такой как в объявлении. И всё работает так как и задумано, кроме одной буковки. Это терпимо. И это VBA. Попробуйте.

Добавлено через 7 часов 4 минуты
DevilsDen, по теме я ничего толкового не нашёл, от форумчан тоже ответов нет, видать нету ничего (общедоступного) и не было

Добавлено через 22 минуты
Нашёл одну надстройку к IDE - http://rubberduckvba.com , есть в ней пару инструментов интересных, но и всё на этом
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2018, 07:58
Цитата Сообщение от StepInLik Посмотреть сообщение
- Работаешь такой - работаешь ... и вдруг этой хрени какая-то жидкость бъет в голову - и ВСЕ!!! переменная dМама теперь всегда будет dМАМА ... и как-бы ты не писал, скакал и не делал - она теперь всегда и везде будет называться в верхнем регистре
Для переменных, у которых слишком уж часто вас надоумевает смена регистра, можете сделать так:

Visual Basic
1
2
3
#If False Then
    Dim VAR
#End If
Цитата Сообщение от StepInLik Посмотреть сообщение
я вчера только 30 минут убил чтобы понять где среди сотни тысяч строк кода вылезла хрень, которая меняет значение глобальной переменной на то чего не должно быть!
Могли где-то неправильно выделить буфер, и данные перезаписали соседние адреса, где хранилась глобальная переменная.
У меня, например, такое было, когда неправильно указал тип данных в API-функции.
1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
20.07.2018, 21:42
Цитата Сообщение от SoftIce Посмотреть сообщение
MicroSoft сейчас что-то рожает типа VSTO, VSTA, VSA. Посмотрим что получится.
скоро?
0
 Аватар для anton-sf
128 / 64 / 14
Регистрация: 29.03.2015
Сообщений: 265
21.06.2019, 21:22
Цитата Сообщение от StepInLik Посмотреть сообщение
- Работаешь такой - работаешь ... и вдруг этой хрени какая-то жидкость бъет в голову - и ВСЕ!!! переменная dМама теперь всегда будет dМАМА ... и как-бы ты не писал, скакал и не делал - она теперь всегда и везде будет называться в верхнем регистре
Это я побеждаю с помощью формы замены (Replace), заменяю "dМАМА" на "dМама", включены опции "Find Whole Word Only" и "Search/Current Project"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2019, 21:22

Мусор в движке реальность или миф, стоит удалить и поставить заново, или никак это не влияет
Друзья, подскажите пожалуйста, только без догадок, а те кто реально знает и понимает о чем речь! Суть такова, я сделал сайт на...

фокусы или реальность?
http://www.youtube.som/watch?v=2ODW-ntPHSU часто вижу такого характера ролики, но не понимаю его сути. либо там КПД 1%, то как тогда с...

реальность или миф ?!
Добрый день, УВ! вот както общался с другом, он говорит что знает легкий способ заработать в интернете и т.д. ! Суть в том что, есть...

Бред или Реальность?
Решила сегодня проверить тИЦ liveinternet.ru Результат меня ошарашил - 15 000 b-( Может кто-нибудь объяснить?

whois, миф или реальность...
Доброго времени суток! хотелось бы уточнить один вопрос, реально ли сделать на делфи Whois? тоесть у меня выводятся ИП адреса, а рядом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
55
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru