1. Главная страница » Компьютеры

Excel vba комментарии в коде

Автор: | 16.12.2019

Оформление кода VBA

​Смотрите также​bla​ with​ — это и​:​ код, если комментарий​: то биш (позволю​ Comment​.Visible = True​iComment.Shape.TextFrame.AutoSize = True​

​Set cc =​If cc.Rows.Count =​ его блоки c​ кода продолжается на​ блок кода.​ = 0 ‘​ – это строки​Начиная практиковаться в написании​*/​Не менее безопасная​ есть проверка. На​iskan13​ уже есть, вывести​ себе резюмировать) перед​For Each iComment​End With​Next iComment​ Selection​ 1 And cc.Columns.Count​ условиями видны гораздо​ следующей строке.​Часто программисты ленятся добавлять​

​ последовательно посматриваем ячейки​ в коде, которые​ кода VBA, очень​Да, действительно чтобы​ конструкция​ псевдоязыке: "Объект -​

Комментарии в VBA

​, правила Форума: "один​ окошко типа "вы​ присвоением комментарию текста,​ In ActiveSheet.Comments​End With​End Sub​’если выделили 1​ = 1 Then​ более наглядно. Этот​Следующий пример демонстрирует, как​ подробные комментарии к​

​ A1-A100, пока не​ исполняют роль заметок​ важно с самого​ сделать многострочный комментарий​Dim MyCommentText$ MyCommentText​ ничто ?"​ вопрос — одна​ уверены?", при нажатии​ его(комментарий) нужно сначала​With iComment.Shape​End Sub​’3) добавляем комментарий​ ячейку, то выход​MsgBox "Выделено слишком​ пример иллюстрирует, как​ при помощи переносов​

​ своему коду, но,​ будет найдено значение​ и помогают разобраться,​​ начала выработать хорошие​​ нужно поступить как​

​ = "Текст нового​Оли объект "Комментарий"​ тема". А ответ​ "да" выполняется код,​ создать.​.TextFrame.AutoSize = True​’6) устанавливаем высоту​ в ячейку и​If cc.Rows.Count =​ мало ячеек!", ,​ аккуратное оформление может​ строк можно сделать​ поверьте, затраченные усилия​ ‘sFindText’ For i​ какие действия выполняет​ привычки в оформлении​ сказал Вася Пупкин.​ комментария" ActiveCell.NoteText MyCommentText​ существует, то мы​ звучит так:​ при нажатии "нет"​iskan13​.Placement = xlMove​ и ширину для​ меняем его шрифт​ 1 And cc.Columns.Count​ "Ошибка"​ сделать код более​ длинные строки кода​ оправдают себя с​ = 1 To​ та или иная​ кода, чтобы в​Разве нельзя за​Dragokas​ просто изменяем ему​1) устанавливается защита​ он, соответственно, не​: Здравствуйте.​ ‘перемещать, но не​ всех примечаний​Sub ChangeFontInComment()​ = 1 Then​End​ читаемым и привести​ гораздо более понятными​ избытком! Несколько минут,​ 100 If Cells(i,​

Читайте также:  Nfc как установить на смартфоне

​ часть кода.​ дальнейшем написанный код​ столько лет дополнить​, благодарю! Вроде пока​ значение свойства Text.​ нужных листов (предположим,​ выполняется.​Прошу вашей помощи,​ именять размеры​Sub Размер_Комментарий()​With Range("B2")​

​MsgBox "Выделено слишком​End If​ в результате к​ и легко читаемыми.​ потраченных на написание​ 1).Value = sFindText​Комментарии не участвуют в​ было легко читать​ поддержку многострочных комментариев.​ всё понятно)​

Отступы в коде VBA

​Если объект "Комментарий"​ с паролем 123123)​3. Можно ли​ уважаемые эксперты. Сейчас​End With​Dim iComment As​.ClearComments​ мало ячеек!", ,​​Set cc =​​ меньшему количеству ошибок​Посмотрите на этот оператор​ понятного комментария, могут​ Then ‘ найдено​ процессе выполнения программы​ и понимать, как​ Для кого язык​pashulka​

Переносы строк в VBA

​ не существует, нам​2) В коде​ вносить правку в​ пилю таблицу учета​Next iComment​ Comment​.AddComment​ "Ошибка"​ Selection.SpecialCells(xlCellTypeVisible)​ и путаницы.​If​ сэкономить Вам долгие​ совпадение с переданной​ и не влияют​ он работает.​ сделан? Кто на​, спасибо. Не знал​

​ нужно его добавить​ пишется:​ существующий комментарий средствами​ рабочей документации. Хочу​MsgBox "Все комментарии​For Each iComment​

​.Comment.Text "бла-бла-бла"​​End​​For Each c​

​Урок подготовлен для Вас​:​ часы в будущем.​ строкой ‘ сохраняем​ на результат работы​В процессе написания кода,​ нем будет программировать​ о ней.​ (создать). Это делается​Sub AAA() ActiveSheet.Unprotect​ VBA?​

​ реализовать такую фишку:​ обработаны!", 64, "Конец"​​ In ActiveSheet.Comments​​With .Comment.Shape.TextFrame.Characters.Font​End If​

​ In cc​ командой сайта office-guru.ru​If (index =​Другой приём, делающий написанный​ номер текущей строки​ макроса. Каждая строка,​ программист может иметь​ через несколько лет?​Morwen​ другой командой:​ Password:="123123" Range("A1").Value =​Прошу вас помочь,​

​ при щелчке по​​End Sub​​iComment.Shape.TextFrame.AutoSize = True​.Name = "Times​Set cc =​If Not c.Comment​Источник: http://www.excelfunctions.net/VBA-Code-Presentation.html​ 1 And sColor1​ код более читаемым​ и выходим из​ начинающаяся апострофом (‘),​ совершенно чёткое представление​Обходиться формулами?​: как VBA закомментировать​

​Метод AddComment объекта​ 888 ActiveSheet.Protect End​
​ по ходу скорее​
​ ячейке определенного столбца​

​’8 Добавление даты​

VBA. Комментарии в ячейках

​iComment.Shape.Height = iComment.Shape.Height​​ New Roman"​ Selection.SpecialCells(xlCellTypeVisible)​ Is Nothing Then​Перевел: Антон Андронов​

​ = "красный") Or​ – правильно расставлять​

​ цикла iRowNumber =​ будет считаться в​ о том, что​

​SVM​​ сразу несколько строк,​
​ Cell / Range.​ Sub3) Проект защищается​
​ всего появятся еще​ появляется формочка, где​
​ в комментарий​ + 10​.Size = 14​
​For Each c​c.Value = c.Comment.Text​
​Автор: Антон Андронов​
​ (index = 2​
​ отступы. В приведённом​
​ i Exit For​ VBA комментарием. Редактор​
​ за код он​: Здравствуйте!​
​ чтоб каждую не​ActiveCell.AddComment.TextПри этом, если​ от просмотра​
​ вопросы. заранее большое​ пользователь расставляет галочки,​Private Sub Worksheet_Change(ByVal​
​iComment.Shape.W >​.Bold = True​
​ In cc​’c.ClearComments ‘если надо​
​человек​ And sColor1 =​
​ выше примере видно,​ End If Next​
​ VBA в Excel​
​ пишет и как​Комментарии в тексте​
​ начинать ковычками?​
​ Вы дважды воспользуетесь​
​Евгений_Пермь​
​ спасибо.​
​ нажимает ок, и​
​ Target As Range)​
​ + 15​End With​If c.Value <>​
​ удалить комментарий​
​: Подскажите, как достучаться​

​ "синий") Or (index​ что отступ сделан​ i ‘ сообщение​

​ выделит такую строку​
​ этот код должен​ макроса начинаются с​Alexey​
​ этим методом, то​: Можно.​Catstail​
​ в примечание этой​’если изменения в​
​Next iComment​End With​
​ Empty Then​
​i = i + 1​ до комментариев? Считывать​
​ = 3 And​ для кода внутри​
​ во всплывающем окне​ зелёным цветом шрифта,​ работать. Но нужно​
​ апострофа на каждой​: В редакторе VBA​ вылетит ошибка, т.к.​
​with ActiveCell If​
​: Проверка наличия примечания:​
​ ячейки добавляется информация​ диапазоне A1:A10​
​MsgBox "Размеры комментарий​End Sub​
​c.AddComment CStr(c.Value)​End If​
​ и устанавливать их​
​ sColor1 = "зеленый")​
​ главной процедуры​
​ сообщает пользователю, ‘​
​ чтобы с первого​ позаботиться и о​ строчке программы, а​
​ -​
​ такой объект уже​

​ Not (.Comment Is​​If ActiveCell.Comment Is​

​ в соответствии с​
​If Not Intersect(Target,​ исправлены!", vbInformation, "Комментарии"​’4) меняем шрифт​
​i = i + 1​

​End If​ значение.​ Or (index =​Sub​
​ найдена ли строка,​
​ взгляда было понятно,​ том, чтобы, вернувшись​
​ существует какая-либо возможность​Вид -> Панели​
​ сущеуствует (у одной​
​ Nothing) Then .Comment.Text​
​ Nothing Then MsgBox​

​ поставленными галочками.​ Range("A1:A10")) Is Nothing​End Sub​
​ у всех комментариев​
​End If​
​Next​
​TempRow.Cells(j + 1).Comment.Text​
​ 4 And sColor1​
​и далее отступ​
​ и если найдена​ что это комментарий,​
​ к работе спустя​
​ закомментировать сразу целый​
​ интрументов -> Правка​
​ ячейки не может​
​ .Comment.Text & "​

​ "Нет" Else MsgBox​Все достаточно прозрачно,​
​ Then​
​’7 устанавливаем размер​Sub All_Comments_Font_Change()​
​Next​Application.Calculation = xlCalculationAutomatic​
​ "1234567890"​
​ = "коричневый") Then​ увеличивается для каждого​
​ – сообщает номер​
​ который не будет​
​ полгода, не пришлось​
​ блок проги (тем​
​ -> Там есть​

​ быть 2 объекта​ Дописываем текст к​ "Есть" End If​
​ кроме момента с​
​’если выделили больше​
​ окна комментария AutoSize​
​Dim iComment As​
​MsgBox "Добавлено "​
​Application.ScreenUpdating = True​
​Это я пробовал.​
​При помощи переносов строк​
​ вложенного блока кода.​
​ строки If iRowNumber​

​ выполняться.​ ломать голову, пытаясь​ более если он​
​ две кнопочки 1.​
​ Comment).​ существующему комментарию." end​
​Удаление примечания:​ комментарием. Как его​
​ одной ячейке, то​
​ и меняем свойство​ Comment​
​ & i &​MsgBox "Перенесено "​
​ Не выходит. Пишет​
​ тот же оператор​ Такие увеличенные отступы​
​ = 0 Then​

​Ниже продемонстрировано, как при​ понять, что должен​ большой), например как​ Закоментировать блок 2.​Т.е. в итоге,​ if end with​
​If Not (ActiveCell.Comment​
​ добавить я разобрался,​ выход​ окно на "Перемещать,​For Each iComment​
​ " комментарий!"​ & i &​ обьект не определен.​
​If​ помогают понять, где​ MsgBox "Строка "​
​ помощи комментариев поясняется​ делать этот код.​ в других языках​ Раскоментировать блок​
​ если Вы хотите​pashulka​
​ Is Nothing) Then​ использую команду ActiveCell.AddComment.Text​
​If Selection.Cells.Count >​
​ но не именять​
​ In ActiveSheet.Comments​Exit Sub​ " комментариев!"​
​mazayZR​
​может быть записан​
​ каждый отдельный блок​ & sFindText &​
​ работа простой процедуры​

​ Ещё более неприятная​ — /* -​
​Выделяешь необходимое кол-во​ в активную ячейку​
​: Здравствуйте. поясните пожалуйста​ ActiveCell.Comment.Delete​
​ ("текст"). Но если​ 1 Then Exit​ размеры"​
​With iComment.Shape.TextFrame.Characters.Font​End Sub​Exit Sub​
​: Sub Комментарий_в_ячейку_в_диапазоне()​ вот так:​ кода начинается и​
​ " не найдена"​Sub​ ситуация – когда​
​ начало блока, */​
​ строк и жмёшь. ​

​ просто записать комментарий​​ данную часть кода.​Добавлено через 1 минуту​

​ щелкнуть по ячейке,​
​ Sub​
​Sub AutoSizeMoveDontChangeSizeComments()​
​.Name = "Times​
​Pavel55​
​End Sub​

​’переносит комментарий в​​If (index =​ заканчивается.​ Else MsgBox "Строка​:​ кто-то другой станет​

Работа с комментарием ячейки Excel через VBA

​ -конец блока?​​Это ли тебе​
​ (не имея представления,​ Не могу понять​Новый комментарий взамен​ которая уже содержит​Target.NoteText Text:=Application.UserName &​’Свойство XlPlacement объекта​ New Roman"​: Ну, приблизительно так​P.S. А перенос​ ячейку​ 1 And sColor1​Ещё один способ сделать​ " & sFindText​’ процедура Sub​
​ продолжать Вашу работу​Казанский​ нужно?​ есть ли там​ детально.​ имеющегося я записываю,​ примечание, то появляется​ Chr(10) & "Дата:​ Shape может быть​.Size = 14​’Работа с комментариями​ значений из ячейки​Dim i As​
​ = "красный") Or​ код более читаемым​ & " найдена​
​ для просмотра диапазона​ над кодом и​: В редакторе VBA​Morwen​ в данный момент​Общая суть понятна,​ удалив имеющийся.​ ошибка 1004. Хочу​ " & Now​ одним из этих​.Bold = True​’1) меняем штрифт​ в комментарий, так​ Long​
​ _ (index =​ и облегчить работу​ в ячейке A"​ ячеек A1-A100 активного​
​ не сможет понять,​ на панели Edit​: никак, это особенность​ уже комментарий, или​ Если есть комментарий​

​iskan13​​ подразобраться с этим.​
​End If​ констант (Формат примечания/Свойства/)​End With​ у комментария в​
​Sub Добавить_комментарий_в_диапазоне()​
​Dim c As​ 2 And sColor1​ с ним –​​ & iRowNumber End​
​ ‘ листа и​ как он работает.​ есть кнопки Comment​

​ языка​​ его еще нет),​
​ то добавляем к​: Спасибо за ответ!​ В связи с​End Sub​’- xlFreeFloating -​Next iComment​ заданной ячейке​’копирует значение ячейки​ Range, cc As​

​ = "синий") Or​​ делать переносы и​​ If End Sub​​ поиска ячейки, содержащей​Эта статья посвящена комментариям,​ Block, Uncomment Block.​master-neo​
​ то безопасной конструкцией​ нему еще запись.​Подскажите, а как​
​ этим несколько вопросов:​Pavel55​
​ не перемещать и​End Sub​Range("D10").Comment.Shape.TextFrame.Characters.Font.Size​ в комментарий в​ Range​

​ _ (index =​​ разбивать одну длинную​
​Не расстраивайтесь, если какую-то​ переданную процедуре строку​ отступам в коде​Казанский​: сама уже не​ будет следующая:​Евгений_Пермь​

​ можно сделать следующее:​​1. Как, собственно,​: Ну и самое​ не изменять размеры​’5) устанавливаем высоту​
​’2) изменяем размер​ видемом диапазоне​Dim iCommment As​ 3 And sColor1​

​ строку кода на​​ часть кода, показанного​​ Sub Find_String(sFindText As​​ и переносам строк​
​: Дмитрий, опять опередил​
​ знаю. что мне​dim MyCommentText as​: Здравствуйте,​
​ я хочу защитить​ записать новый комментарий​ простое​’- xlMove -​ и ширину окна​
​ окошка всех примечаний​Dim c As​ Comments​ = "зеленый") Or​
​ несколько коротких. В​ выше, не удалось​ String) Dim i​ – элементам, которые​ :))​
​ нужно. но за​ String MyCommentText =​
​Евгений_Пермь​ книгу от изменений,​ взамен имеющегося?​Sub Макрос1()​ перемещать, но не​ примечания​ на листе ровно​ Range, cc As​Application.DisplayCommentIndicator = xlCommentIndicatorOnly​
​ _ (index =​ VBA, чтобы разбить​ понять – далее​ As Integer ‘​ делают код аккуратным​Пора отдохнуть от​ совет спавибо​ "Текст нового комментария"​!​ но при этом​2. Как сделать​
​With Range("A1")​ именять размеры​Sub Change_Size_Comment_Window()​ под текст (AutoSize)​ Range​Application.ScreenUpdating = False​ 4 And sColor1​ строку, нужно вставить​ в учебнике мы​

​ переменная типа Integer​ и понятным.​
​ форума :)​хотелось просто закомментировать​ with ActiveCell If​​.Comment.Text​​ хочу, чтобы изменения,​ проверку на наличие​​.AddComment​​’- xlMoveAndSize -​With Range("A1")​

Как VBA закомментировать сразу несколько строк?

​Sub All_Comments_Size_Change()​​Dim i As​Application.Calculation = xlCalculationManual​ = "коричневый") Then​ символы » _»​

​ рассмотрим эту тему​​ для цикла ‘For’​Самое важное для написания​
​SVM​ как-нибудь так :​ (.Comment Is Nothing)​чтобы воспользоваться свойством​ вносимые макросами, применялись.​ комментария? То есть,​
​.Comment.Text Text:="123"​ перемещать и изменять​
​.AddComment "Bla-bla-bla"​Dim iComment As​

​ Long​​Set cc =​Если рассмотренный оператор​

​ (пробел+подчёркивание) непосредственно перед​​ подробнее. Цель приведённого​ Dim iRowNumber As​ аккуратного и понятного​: Спасибо.​
​/*​ Then .AddComment.Text MyCommentText​
​ объекта Comment, он​
​ Можно так? заранее​
​ если ячейка не​
​End With​
​ объект вместе с​

​With .Comment.Shape​ Comment​On Error GoTo​ Selection​
​If​ переносом строки. Это​ примера – продемонстрировать,​ Integer ‘ переменная​ кода – чаще​Да. Век живи​bla​
​ else .Comment.Text MyCommentText​

Комментарии в VBA

​ должен существовать.​​ спасибо.​

​ содержит комментарий, то​End Sub​ ячейками​.W >

​bla​​ end if end​.Comment Is Nothing​Catstail​ молча выполняется нужный​

​слэн​​Dim iComment As​.Height = 200​

​ In ActiveSheet.Comments​Application.DisplayCommentIndicator = xlCommentIndicatorOnly​

​ ячейку, то выход​​ строки, то составляющие​
​ что текущая строка​ комментариев поясняется каждый​

Среда разработки макросов в Excel Microsoft Visual Basic for Applications, мягко говоря, не является самой удобной средой разработки. Сравнивать его с Visual Studio просто нельзя – это как сравнить текстовые редакторы Блокнот и Word. Но пользоваться Microsoft Visual Basic for Applications иногда нужно, потому приходится адаптироваться.

Столкнулся с необходимостью закомментировать порядка 20 строчек кода. Ставить знак ‘ в начале каждой строки очень не хочется, к тому же потом еще и раскомментировать нужно.

По умолчанию, панель с кнопкой комментирования кода отключена. Для начала нужно включить панель редактирования, для этого в меню View / Toolbars нужно отметить пункт Edit (Рис.1).

Рис.1. Добавление тулбара в среду разработки Microsoft Visual Basic for Applications

Для того, чтобы закомментировать несколько строк кода, нужно в появившемся тулбаре нажать на кнопку "Comment Block" (Рис.2)

Рис.2. Закомментировать несколько строк кода

Для раскомментирования строчек нужно нажать на соседнюю кнопку "Uncomment block".

Начиная практиковаться в написании кода VBA, очень важно с самого начала выработать хорошие привычки в оформлении кода, чтобы в дальнейшем написанный код было легко читать и понимать, как он работает.

В процессе написания кода, программист может иметь совершенно чёткое представление о том, что за код он пишет и как этот код должен работать. Но нужно позаботиться и о том, чтобы, вернувшись к работе спустя полгода, не пришлось ломать голову, пытаясь понять, что должен делать этот код. Ещё более неприятная ситуация – когда кто-то другой станет продолжать Вашу работу над кодом и не сможет понять, как он работает.

Эта статья посвящена комментариям, отступам в коде и переносам строк – элементам, которые делают код аккуратным и понятным.

Комментарии в VBA

Самое важное для написания аккуратного и понятного кода – чаще оставлять комментарии. Комментарии – это строки в коде, которые исполняют роль заметок и помогают разобраться, какие действия выполняет та или иная часть кода.

Комментарии не участвуют в процессе выполнения программы и не влияют на результат работы макроса. Каждая строка, начинающаяся апострофом (‘), будет считаться в VBA комментарием. Редактор VBA в Excel выделит такую строку зелёным цветом шрифта, чтобы с первого взгляда было понятно, что это комментарий, который не будет выполняться.

Ниже продемонстрировано, как при помощи комментариев поясняется работа простой процедуры Sub:

Не расстраивайтесь, если какую-то часть кода, показанного выше, не удалось понять – далее в учебнике мы рассмотрим эту тему подробнее. Цель приведённого примера – продемонстрировать, как при помощи комментариев поясняется каждый блок кода.

Часто программисты ленятся добавлять подробные комментарии к своему коду, но, поверьте, затраченные усилия оправдают себя с избытком! Несколько минут, потраченных на написание понятного комментария, могут сэкономить Вам долгие часы в будущем.

Отступы в коде VBA

Другой приём, делающий написанный код более читаемым – правильно расставлять отступы. В приведённом выше примере видно, что отступ сделан для кода внутри главной процедуры Sub и далее отступ увеличивается для каждого вложенного блока кода. Такие увеличенные отступы помогают понять, где каждый отдельный блок кода начинается и заканчивается.

Переносы строк в VBA

Ещё один способ сделать код более читаемым и облегчить работу с ним – делать переносы и разбивать одну длинную строку кода на несколько коротких. В VBA, чтобы разбить строку, нужно вставить символы ” _” (пробел+подчёркивание) непосредственно перед переносом строки. Это сообщает компилятору VBA, что текущая строка кода продолжается на следующей строке.

Следующий пример демонстрирует, как при помощи переносов строк можно сделать длинные строки кода гораздо более понятными и легко читаемыми.

Посмотрите на этот оператор If:

При помощи переносов строк тот же оператор If может быть записан вот так:

Если рассмотренный оператор If разбит на четыре строки, то составляющие его блоки c условиями видны гораздо более наглядно. Этот пример иллюстрирует, как аккуратное оформление может сделать код более читаемым и привести в результате к меньшему количеству ошибок и путаницы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *