Страницы: 1 2 След.
RSS
Редактор VBA
 
Топик Alex_ST навеял.  
 
По себе знаю, как по первости трудно ориентироваться в возможностях редактора VBA. Предлагаю в этом топике всем посвященным поделиться опытом, а всем желающим познать VBA -задавать вопросы по возможностям РЕДАКТОРА VBA.  
 
 
Для начала: Сам не пользуюсь (пока обхожусь) окнами Local Windows и Immedate Windows. Просто даже не интересовался. А сейчас подумал - пробел то какой! Поэтому вопрос как ими пользоваться?  
 
Полагаю топик будет полезен многим начинающим...
 
В этих окнах при отладке кода удобно отслеживать значение (и тип) переменных. Напишите простенький макрос, где будет пара переменных. Добавьте строчку Debug.    
Sub Test()  
Dim x  
Dim z  
x = 4  
z = x / 7  
Debug.Print z, x  
End Sub  
Откройте оба этих окна. Начните пошаговое выполнение и всё станет понятно.
 
Для этих целея я ипользую Watch Window, пока обходился.  
 
Подытожим - Local Window отражает значения ВСЕХ локальных переменных при пошаговой отладке. - Immedate Window отражает результат выполнения оператора Debug.Print (обходился для этих целей MsgBox"").  
 
Просматривая страницы по VBA наткнулся на рекомендации по использованию Add-Ins для редактора с именем VBA.MZ-Tools 3.0  
Ниже ссылка для скачивания.  
http://downtown.trilo.de/repos/downloads-20070101/_20071108-1401_mz-tools-3-0-for-vba_/  
 
Сам еще не оценил в полной мере, но народ хвалит.  
 
Ставится очень легко.
 
Хочу добавить - в редакторе есть очень удобные команды в меню Edit - это закомментировать выделеные строки и Навигация по меткам (bookmark - кнопочка с флажком) - очень удобно.  
 
А теперь вопрос - как пользоваться инструментарием меню Userform.
 
Да там вроде всё в подписях кнопок понятно - выровнять тем или иным способом, подогнать размеры, позицию...
 
Есть нюанс: при выделении нескольких контролов, подгонка/выравнивание производится по этому (последнему из выделенных) контролу.
 
Надо же - я до сего момента значениями в свойствах все выравнивал.
 
Понравились - группировка и выделить на пердний план (нужна для наложенных друг на друга контролов). Почему мне раньше на глаза это меню мне не попалось?    
 
Есть еще один очень приятный прибамбас в меню Edit - Complite Word (закончить слово) - по нажатию Ctrl+Space вываливается окно со всеми возможными переменными VBA, подобно нажатию точки после ключевых слов.
 
Товарищи ученные програмисты!  
А нельзя ли для особо "одаренных" любителей Бейсика обяснить более дентально, где искать эти меню? Например, меню Userform. Я  мыслю что вы имете в виду Insert-Userform. Или я не прав?  
Далее. Вам Юрий всепонятно : « … ванглицких подписях кнопок : выровнять тем или иным способом, подогнать размеры, позицию...». А для меня , это темный лес и много разных дров. Но, на которую из этих «дровеняк» нажать мышкой, чтобы с определенной точностью, и результативно «погреться» возле того или иного проекта задуманой мною формы, усе еще очень даже не понятно. И уж совсем сложно блуждать в английских «лабиринтах»  Properties-Userform. Из всех, перечисленых там свойств, я, пока усвоил : BackColor – которым устанавливается цвет формы, Caption – название формы, Font и FontColor – соответственно; вид, размер и цвет шрифтов. А вот разглядеть названые вами кнопки: выровнять тем или иным способом, подогнать размеры, позицию, пока не получается. Потому что на панели инструментов, даже такие, всегда нужные для начинающего програмиста «прибамбасы», усе еще подписаны по-английски.    
Учитывая все сказаное выше, очень и очень прошу и слезно умоляю всех профи, у своих, неизмеримо полезных для нас, истинных почиталей VBA, стремящихся к познанию и покорению его неограниченых возможностей - рассуждениях, выражаться с учетом подетальных потребностей отдельных, пока еще недостаточно осведоимленных форумчан и заинтересованых гостей Планеты Ру.
 
О_о, и Gleod с нами :-)
 
{quote}{login=Serge 007}{date=26.12.2009 11:50}{thema=}{post}О_о, и Gleod с нами :-){/post}{/quote}  
 
Serge 007! Приветствую вас лично и отношусь к вам с большим уважением. А! Уж как ценю ваши полезные советы и вашу безотказную помощь - известно одному Богу!!! И не важно, что эта помощь адрессована не мне лично. Важно, что она есть!!!  
А, вы что не рады меня почитать???
 
Да нет, просто я теперь даже не знаю как к Вам относиться...  
Очень уж много Вы плохого сделали, но вроде осознали...  
А может и нет...  
Не знаю...
 
См. файл. Если с английским проблема и нет словаря, то всё понятно по пиктограммам на самих кнопках. Сама панель вызывается: меню View - Toolbars - UserForm
 
{quote}{login=Serge 007}{date=26.12.2009 12:10}{thema=}{post}Да нет, просто я теперь даже не знаю как к Вам относиться...  
Очень уж много Вы плохого сделали, но вроде осознали...  
А может и нет...  
Не знаю...{/post}{/quote}  
 
Serge 007!  
Вы наверняка знаете пословицу "Кто старое помянет - тому глаз долой ...". А, относительно "плохого сделали", то мы кажется уже усе выяснили.И до сего дня, я думал что обоюдно простили друг друга. Не смотря на то, что ваши извинения не были обнародованы. Оказывается, ошибся!!! И, как выясняется, правы те, кто утверждает: "В чужом глазу и пылинка видна ..." . А вот в своем .... - додумайте сами.  
А то, что делать добро людям гораздо приятнее, я никогда и не забывал.И усе то, о чем вы не можете забыть, всего лишь реакция на ваши не совсем хорошие действия.К стати, их жертвой стал Саша. Как говорится "за что боролся на то и напоролся"! Ведь Бог шельму метит.И пусть ОН, и только ОН - будет и вам судиею!!!!    
 
С неизменным к вам уважением, Gleod!!!
 
Юрий спасибо вам за совет!  
Но, что интересно. Например, попробовал с помощью СократПерсонал перевести PefEdit и ничего не вышло!!!  
уважением, Gleod!
 
{quote}{login=Gleod}{date=26.12.2009 01:07}{thema=Re: }{post}{quote}{login=Serge 007}{date=26.12.2009 12:10}{thema=}{post}Да нет, просто я теперь даже не знаю как к Вам относиться...  
Очень уж много Вы плохого сделали, но вроде осознали...  
А может и нет...  
Не знаю...{/post}{/quote}  
 
...Не смотря на то, что ваши извинения не были обнародованы...{/post}{/quote}  
 
 
А мне извиняться не за что, не я Вас оскорблял...  
 
PS предлагаю закрыть тему, тем более, что это явный оффтоп...
 
Это составное слово (составлено из двух слов). Если не ошибаюсь Reference и Editor. Поэтому и не перевёл.  
P.S. Если ещё увижу пост, аналогичный от 13:07 - буду удалять. И начнём всё заново...
 
{quote}{login=Юрий М}{date=26.12.2009 01:31}{thema=}{post}Это составное слово (составлено из двух слов). Если не ошибаюсь Reference и Editor. Поэтому и не перевёл.  
P.S. Если ещё увижу пост, аналогичный от 13:07 - буду удалять. И начнём всё заново...{/post}{/quote}  
 
Юрий извините меня пожалуйста!!!  
Просто сдают нервы. Поэтому и реагирую. Дальше обещаю себя сдерживать.
 
недавно поставил себе    
VBA.MZ-Tools 3.0 ( http://www.mztools.com/v3/download.aspx ),    
Smart Indenter Version 3.5 ( http://www.oaltd.co.uk/Indenter/Default.htm ) и    
VBE Tools v2.0 ( http://www.oaltd.co.uk/VBETools/Default.htm )  
До чего же удобно стало!
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Alex распиши в чем удобство, если честно - жаль времени на лишние телодвижения.  
Укажи какие именно удобства добавляет каждая надстройка...
 
Ну, честно говоря, там по ссылкам всё достаточно кратко и ясно расписано, правда, на инглише...  
Но совсем кратко:  
 
VBE Tools v2.0:  
- добавляет в меню VBE "Close All Windows" в меню Window -- очень удобная фича!  
- добавляет панель "VBE Tools", в ней - использование стрелок клавиатуры для перемещения и изменения размеров элементов управления на форме, вычисление размера модуля  
- увеличивает размер окна "Location" (пути к файлу References) -- тоже очень удобно, а то пути длинные и файл найти трудно.  
- позволяет переименовать элемент управления на форме и при этом автоматически переименовываются программы его обработки -- ещё не проверял, но должно быть очень удобно, особенно если описАлся, задавая имя элемента, а когда заметил, править написанный код уже лень  
 
Smart Indenter - автоматом расставляет отступы в коде в соответствии с его структурой -- очень удобно, постоянно использую.  
Код становится удобочитаемым. Множество настроек опций выравнивания...  
Выравнивает (увеличивает отступы) внутри блоков if ... end if, select case...end select, for...next, do...next, и т.д. , вставляет переносы строк в длинные строки... Да там ещё куча всего "для красоты" и удобочтения.  
 
VBA.MZ-Tools 3.0 - ну, тут вообще такая куча добавочных удобств для VBE, что очень долго описывать...  
Тут и заголовки процедур, и всяческие ассистенты-помощники.... Ну, в общем это я ещё далеко не всё освоил, но приятностей уже нашёл много...
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Да здесь я, здесь. Просто отвлекли на работу, нехорошие люди...  
По поводу VBE Tools v2.0 я вроде бы кратко описал..  
Ну, если не понятно, посмотрите сами на том же сайте, где и Smart Indenter ( http://www.oaltd.co.uk/VBETools/Default.htm ). Не понятно, правда, почему украинские разработчики сделали сайт и все свои программы только на инглише...  
Но программы хорошие. Сильно помогают.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
The_Prist, ну так и ещё мои 5 копеек в пользу VBA.MZ-Tools 3.0 :  
- MsgBox Assistant - задаёшь как должен быть виден MsgBox и всё что хочешь в нем написать, а он делает готовый код.  
 
А вот как работает Select Case Assistant я что-то пока не разобрался...
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Alex_ST}{date=28.12.2009 11:43}{thema=}{post}  
А вот как работает Select Case Assistant я что-то пока не разобрался...{/post}{/quote}  
 
Эта функция будет полезна для перебора значений ранее описанного перечислимого типа.  
 
Например, есть код:  
 
Public Enum Line_ID_Const  
   az_Unknown_Line = 10  
   az_PHONE_only = 51  
   az_ADSL_only = 52  
   az_PHONE_and_ADSL = 53  
   az_ISDN_only = 54  
   az_ISDN_and_ANALOG = 55  
   az_RPN = 56  
   az_xDSL_NoPhone = 57  
   az_HDSL_EMX = 58  
   az_HDSL_FCM = 59  
   az_Other_Purpose = 90  
   az_Free_Line = 99  
End Enum  
 
Public LineID As Line_ID_Const  
 
 
А надо получить такой макрос:  
 
Sub test()  
 
   Select Case LineID  
 
       Case az_Unknown_Line  
         
       Case az_PHONE_only  
     
       Case az_ADSL_only  
     
       Case az_PHONE_and_ADSL  
     
       Case az_ISDN_only  
     
       Case az_ISDN_and_ANALOG  
     
       Case az_RPN  
     
       Case az_xDSL_NoPhone  
     
       Case az_HDSL_EMX  
     
       Case az_HDSL_FCM  
     
       Case az_Other_Purpose  
     
       Case az_Free_Line  
 
   End Select  
 
End Sub  
 
 
Вот тут как раз очень поможет данная функция.  
Ставим курсор в строку Select Case LineID, и нажимаем Select Case Assistant  
 
Надстройка сама определит тип переменной LineID, и, если она имеет перечислимый тип, сформирует приведённый выше код.  
 
PS: К сожалению, бывают случаи, когда функция не может распознать перечислимый тип. (сталкивался с этим, но редко)
 
>>перечислимый тип  
Только вчера узнал о таком типе. Вещь, думаю, полезная, наряду с Пользовательским типом. Собственно, эту тему я нашел по запросу "enum".  
 
>>Smart Indenter - автоматом расставляет отступы в коде в соответствии с его структурой -- очень удобно, постоянно использую.  
Код становится удобочитаемым. Множество настроек опций выравнивания...  
 
А я все табуляцией шлёпал)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Напишу в этой теме, думаю нет смысла создавать новую.  
Уважаемые разработчики, не замечали ли Вы, что поиск в MZ-Tools 3.0 для VBE (И для VS 6.0 тоже) отображает в итоговом дереве только первое найденное в строке слово?  
 
Нет ли заплатки/патча от этого?
 
Поставил VBA.MZ-Tools 3.0, потестил, удобная штука, радует наличие возможности задавать шаблоны для часто используемых операторов и горячих клавиш к ним.  
Единственное немного кривовато работает функция проверки кода (на предмет использования переменных и продцедур) Review Source Code:  
В ситуации когда продцедура вызывается например так:    
With CommandBars("Cell").Controls.Add  
.Caption = "Сложить"  
.OnAction = "MyPlus"  
End with  
 
Sub MyPlus()  
...  
End Sub  
почему то пишет что продцедура MyPlus не используется (is not used), что не соответствует, истине.  
А в остальном очень нужная и удобная утилита.
Редко но метко ...
 
Здравствуйте все!  
А для 2010 Smart Indenter бывает? Или что-то аналогичное
 
Exc 2007.Спасибо Алексей (Alex_ST )за ссылку. Smart Indenter-очень удобно.Работает через контекст (вытащить на кнопку не получилось, наверное не разобрался).Остальные пока никчему-больше читаю,чем пишу.Еще раз ,спасибо.
 
Спасибо тем, кто поднял эту древнюю тему.  
Начал читать её с первого поста - и понял, что про VBE и функционал используемых мной надстроек я мало чего знаю)  
 
В частности, только сейчас открыл для себя Locals Window  
И в MZ-Tools нашел кое-что новое
Страницы: 1 2 След.
Читают тему
Наверх
Loading...