Vba excel примечание ячейки

Return to VBA Code Examples

This tutorial will demonstrate how to work with Cell comments in VBA.

The following code snippets show you how to add or delete a comment in a cell.

1. Put the following code somewhere in your macro to add a comment.

Sheet1.Range("A1").AddComment ("Hello World")

2. To delete a comment use this code

Sheet1.Range("A1").Comment.Delete

3. To edit a comment in a certain cell you need to read the existing comment and edit it. Use the code below

Dim OldComment As Variant
Dim NewComment As Variant

OldComment = Sheet1.Range("A1").Comment.Text
NewComment = OldComment & " Edited comment"
    
Sheet1.Range("A1").Comment.Delete
    
Sheet1.Range("A1").AddComment (NewComment)

First, you need to read the existing comment in OldComment variable.

After that you can edit a comment, e.g. add the new text to the existing one in NewComment variable.

Now, you need to delete the old comment and add the new one. In order to delete the comment, you have to use the .Comment.Delete command.

Finally, you can add the comment from the NewComment variable using the .AddComent command.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

alt text

Learn More!

Is there a way to activate a comment on a cell by hovering over it? I have a range of cells that I would like to pull respective comments from another sheet when hovered over each individual cell. The hover event would pull the comments from their respective cells in the other sheet.

The comments are of string value. Basically, I have a range of cells in Sheet 1, let’s say A1:A5 and I need comments to pop-up when I hover over them and pull from Sheet 2 range B1:B5. The reason why I won’t do it manually is because the contents of Sheet 2 change every day. That is why I am trying to see if there is a VBA solution.

asked Aug 9, 2017 at 21:09

studentofarkad's user avatar

studentofarkadstudentofarkad

1551 gold badge1 silver badge8 bronze badges

4

hovering over any cell, that contains a comment, shows that cell’s comment

this is how you add a comment to a cell and how you update the comment text

Sub aaa()
    With Range("E6")
        If Not .Comment Is Nothing Then .Comment.Delete
        .AddComment "this is a comment"
        .Comment.Text "abc123" 'No need the assignment sign "=" after .Comment.Text             
    End With
End Sub

Kristóf Nagy's user avatar

answered Aug 9, 2017 at 21:24

jsotola's user avatar

jsotolajsotola

2,2391 gold badge9 silver badges22 bronze badges

0

Try this code.

Sub test()
    Dim rngDB As Range, rngComent As Range
    Dim rng As Range
    Dim cm As Comment, i as integer
    Set rngComent = Sheets(1).Range("a1:a5")
    Set rngDB = Sheets(2).Range("b1:b5")

    For Each rng In rngComent
        i = i + 1
        If Not rng.Comment Is Nothing Then
            rng.Comment.Delete
        End If
        Set cm = rng.AddComment
        With cm
            .Visible = False
            .Text Text:=rngDB(i).Value
        End With
    Next rng

End Sub

answered Aug 10, 2017 at 4:20

Dy.Lee's user avatar

Dy.LeeDy.Lee

7,4771 gold badge11 silver badges14 bronze badges

2

A less bulky «All-in-One» solution:

Sub comment(rg As Range, Optional txt As String = "")
  If rg.comment Is Nothing Then
    If txt <> "" Then rg.addComment txt
  Else
    If txt = "" Then rg.comment.Delete Else rg.comment.text txt
  End If
End Sub

Usage:

Using cell [a1] as an example …but shortcut notation like [a1]) should generally be avoided except for testing, etc

  • Add or change comment: comment [a1], "This is my comment!"
  • Delete existing comment: comment [a1], "" or simply comment [a1]

Related stuff:

  • set comment box size:[a1].comment.Shape.Width = 15 and[a1].comment.Shape.Height = 15
  • set the box position: [a1].comment.Shape.Left=10 and [a1].comment.Shape.Top=10
  • change background box color: [a1].comment.Shape.Fill.ForeColor.RGB = vbGreen

Nowadays I think that comments (or «notes», as they’re now called) are hidden by default.

  • Always show all comments: Application.DisplayCommentIndicator=1

  • Show when mouse hovers over cell: Application.DisplayCommentIndicator=-1

  • Disable comments (hide red indicator): Application.DisplayCommentIndicator=0

  • show/hide individual comments like [a1].comment.visible=true, etc.

  • get comment text: a=[a1].comment.text

hornetbzz's user avatar

hornetbzz

9,1285 gold badges35 silver badges53 bronze badges

answered Nov 9, 2021 at 12:06

ashleedawg's user avatar

ashleedawgashleedawg

20k8 gold badges73 silver badges104 bronze badges

This code will refresh the contents of the comments every time you open the workbook. It is based on ranges of both destination as well as source. Make sure to first add a comment for the cell range first. You won’t need VBA for that.

Private Sub Workbook_Open()
    Dim ws As Worksheet
    Dim rg As Range
    Dim comment As String
    Dim i As Integer

i = 1
Set rg = Range("E1:E10") 'set range of where the comments will be seen
Set ws = Sheets("Sheet1")


For Each c In rg
comment = ws.Cells(i, 2).Value 'set location of comments you are grabbing from
c.comment.Text Text:=comment
i = i + 1
Next c
End Sub

Mathieu Guindon's user avatar

answered Aug 9, 2017 at 21:50

TJYen's user avatar

TJYenTJYen

3435 silver badges13 bronze badges

1

I’ve discovered that if the sheet cell is previously formatted and contains data the VBA Add Comments routines may not work. Also, you have to refer to the cell in the «Range» («A1») format, not the «Cells» (Row Number, Column Number) format. The following short sub worked for me (utilize prior to program formatting/adding data to cell):

Sub Mod01AddComment()

Dim wb As Workbook
Set wb = ThisWorkbook
Dim WkSheet As Worksheet
Set WkSheet = wb.Sheets("Sheet1")

Dim CellID As Range

Set CellID = WkSheet.Cells(RowNum, ColNum)
` ( or, Set CellID = WkSheet.Range("A1") )

CellID.Clear

CellID.AddComment
CellID.Comment.Visible = False
CellID.Comment.Text Text:="Comment Text"

End Sub

answered Nov 27, 2021 at 18:25

Alabama_Al's user avatar

RAN, Да, Ваш вариант работает. БОЛЬШОЕ СПАСИБО.

По ходу дела возник еще вопрос.

Например процедура добавления примечания прошла успешно. Если необходимо в уже сущуствующее примечание добавить еще текст (например при составлении отчёта по бизнес-плану за отчётный период). Т.е. в строке прочие расходы суммируется числа по 7-8 позициям, соответственно необходимо занести в примечание какая сумма и что она значит. Не всегда получается это внести за один раз. Иногда приходится возвращаться к этой сумме и ещё что-то добавлять, т.о. необходимо и в примечании делать изменения.

Как это можно осуществить через макрос.

RAN, Да, Ваш вариант работает. БОЛЬШОЕ СПАСИБО.

По ходу дела возник еще вопрос.

Например процедура добавления примечания прошла успешно. Если необходимо в уже сущуствующее примечание добавить еще текст (например при составлении отчёта по бизнес-плану за отчётный период). Т.е. в строке прочие расходы суммируется числа по 7-8 позициям, соответственно необходимо занести в примечание какая сумма и что она значит. Не всегда получается это внести за один раз. Иногда приходится возвращаться к этой сумме и ещё что-то добавлять, т.о. необходимо и в примечании делать изменения.

Как это можно осуществить через макрос.

Сообщение RAN, Да, Ваш вариант работает. БОЛЬШОЕ СПАСИБО.

По ходу дела возник еще вопрос.

Например процедура добавления примечания прошла успешно. Если необходимо в уже сущуствующее примечание добавить еще текст (например при составлении отчёта по бизнес-плану за отчётный период). Т.е. в строке прочие расходы суммируется числа по 7-8 позициям, соответственно необходимо занести в примечание какая сумма и что она значит. Не всегда получается это внести за один раз. Иногда приходится возвращаться к этой сумме и ещё что-то добавлять, т.о. необходимо и в примечании делать изменения.

Как это можно осуществить через макрос.

Заранее спасибо. Автор — Hyperboreus
Дата добавления — 24.04.2013 в 13:55

Источник

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

Оформление кода 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,​

​ часть кода.​ дальнейшем написанный код​ столько лет дополнить​, благодарю! Вроде пока​ значение свойства 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.Width = iComment.Shape.Width​
​.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​ ячейками​.Width = 100​For Each iComment​ ErrorHandler​’если выделили 1​разбит на четыре​ сообщает компилятору VBA,​ как при помощи​ типа Integer для​ оставлять комментарии. Комментарии​ — Век учись​

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

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

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

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

Источник

Adblock
detector


1 августа 2012,
VBA,
Konstantin

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

With Worksheets(1).Cells(4, 12).Comment
   .Visible = False
   .Text "Жирный шрифт:" & Chr(10) & "курсив"
   .Shape.DrawingObject.Characters(1, 13).Font.Bold = True
   .Shape.DrawingObject.Characters(15, 20).Font.Italic = True
End With

В итоге получится примерно такое примечание:

Форматированное примечание ячейки

Order_macros

2 комментария в “Создание форматированного примечания с помощью VBA”

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

Студворк — интернет-сервис помощи студентам

Здравствуйте.

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

Все достаточно прозрачно, кроме момента с комментарием. Как его добавить я разобрался, использую команду ActiveCell.AddComment.Text («текст»). Но если щелкнуть по ячейке, которая уже содержит примечание, то появляется ошибка 1004. Хочу подразобраться с этим. В связи с этим несколько вопросов:
1. Как, собственно, записать новый комментарий взамен имеющегося?
2. Как сделать проверку на наличие комментария? То есть, если ячейка не содержит комментарий, то молча выполняется нужный код, если комментарий уже есть, вывести окошко типа «вы уверены?», при нажатии «да» выполняется код, при нажатии «нет» он, соответственно, не выполняется.
3. Можно ли вносить правку в существующий комментарий средствами VBA?

Прошу вас помочь, по ходу скорее всего появятся еще вопросы… заранее большое спасибо.

добавления примечания в ячейку

Kinder

Дата: Пятница, 08.03.2013, 23:06 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 77


Репутация:

0

±

Замечаний:
0% ±


kiryan1@mail.ruДобрый вечер.
имеются лист продаж и лист анализа закупа.
как добавить примечание в ячейки в анализе если в продажах выполняется определенное
условие?
sad

К сообщению приложен файл:

Kinder.xlsx
(12.8 Kb)


«И все таки она вертится!»

 

Ответить

Hugo

Дата: Пятница, 08.03.2013, 23:11 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Кто что понял?..
Я пока только это могу предложить:
[vba][/vba]


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

Kinder

Дата: Пятница, 08.03.2013, 23:34 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 77


Репутация:

0

±

Замечаний:
0% ±


Спасибо за отклик.
Как бы правильно сформулировать?((((((

К сообщению приложен файл:

2465333.xlsx
(13.4 Kb)


«И все таки она вертится!»

 

Ответить

Hugo

Дата: Суббота, 09.03.2013, 02:55 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Тупо влоб:
[vba]

Код

Sub tt()
     Dim cc As Range, t$
     Application.ScreenUpdating = False
     For Each cc In [a1].CurrentRegion.Columns(1).Cells
         t = Application.VLookup(cc, Sheets(«Продажи»).Range(«A:F»), 6, 0)
         If Len(t) Then
             With cc.Offset(, 2)
                 .NoteText t
                 .Comment.Shape.TextFrame.AutoSize = True
             End With
         End If
     Next
     Application.ScreenUpdating = True
End Sub

[/vba]


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

Kinder

Дата: Воскресенье, 10.03.2013, 08:02 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 77


Репутация:

0

±

Замечаний:
0% ±


Добрый день!
Выдает ошибку но спасибо за ответ!!!


«И все таки она вертится!»

 

Ответить

KuklP

Дата: Воскресенье, 10.03.2013, 09:07 |
Сообщение № 6

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

Все работает. Никаких ошибок.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Сообщение отредактировал KuklPВоскресенье, 10.03.2013, 09:10

 

Ответить

Kinder

Дата: Воскресенье, 10.03.2013, 09:16 |
Сообщение № 7

Группа: Пользователи

Ранг: Участник

Сообщений: 77


Репутация:

0

±

Замечаний:
0% ±


Все получилось!!!
Большое СПАСИБО!!! biggrin


«И все таки она вертится!»

 

Ответить

Hyperboreus

Дата: Понедельник, 22.04.2013, 17:03 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Приветествую.

Подскажите, пожалуйста, как можно макросом добавить примечание в активную ячейку листа «Отчет».

Заранее благодарю.

 

Ответить

Serge_007

Дата: Понедельник, 22.04.2013, 17:09 |
Сообщение № 9

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

[vba]

Код

ActiveCell.AddComment.Text Text:=»Текст примечания»

[/vba]


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Hyperboreus

Дата: Понедельник, 22.04.2013, 17:17 |
Сообщение № 10

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Цитата (Hyperboreus)

Подскажите, пожалуйста, как можно макросом добавить примечание в активную ячейку листа «Отчет».

Забыл сказать, на листе присутствуют защищённые ячейки, а лист защищён паролем (изменения можно делать только макросом, а не через интерфейс пользователя).
Предполагалось добавлять примечания в активные ячейки (кроме защищённых) макросом.

 

Ответить

Hyperboreus

Дата: Понедельник, 22.04.2013, 17:21 |
Сообщение № 11

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Цитата (Serge_007)

[vba]

Код

ActiveCell.AddComment.Text Text:=»Текст примечания»

[/vba]

Спасибо. Насколько я понял, этот макрос добавляет в примечание уже готовый текст. А как быть если необходимо непосредственно руками, после выполнения макроса, вводить текст примечания.

 

Ответить

Serge_007

Дата: Понедельник, 22.04.2013, 17:28 |
Сообщение № 12

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

[vba][/vba]


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Hyperboreus

Дата: Понедельник, 22.04.2013, 21:59 |
Сообщение № 13

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


То есть пустой комментарий без возможности редактирования?

 

Ответить

Serge_007

Дата: Понедельник, 22.04.2013, 22:01 |
Сообщение № 14

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Почему? Можно и редактировать
Что мешает Вам самому проверить?


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Hyperboreus

Дата: Вторник, 23.04.2013, 21:39 |
Сообщение № 15

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Проверял. Происходит добавление пустого примечания. Изменить (редактировать) примечание через правую кнопку нельзя, так как лист защищён от изменений, вносимых посредством интерфейса. Можно только через макрос.

 

Ответить

Hyperboreus

Дата: Вторник, 23.04.2013, 21:42 |
Сообщение № 16

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Поскольку опыта общения с макросами практически нет, и не всегда в целом получается решить проблему. Поэтому обращаюсь к знающим людям.

 

Ответить

Serge_007

Дата: Вторник, 23.04.2013, 23:36 |
Сообщение № 17

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Цитата (Hyperboreus)

Изменить (редактировать) примечание через правую кнопку нельзя, так как лист защищён от изменений

А причём здесь макрос?! Вы и сами ведь определили причину — защита листа. Снимайте её, правьте примечания и ставьте заново


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Hyperboreus

Дата: Среда, 24.04.2013, 11:45 |
Сообщение № 18

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Цитата (Serge_007)

А причём здесь макрос?! Вы и сами ведь определили причину — защита листа. Снимайте её, правьте примечания и ставьте заново

Сама форма предусмотрена с защитой. Защита была поставлена в целях сохранения структуры формы (чтобы лишнего не добавляли). На листе есть кнопка к которой привязан макрос добавляющий строки (через меню нельзя добавить). Значения в некоторые ячейки и так можно вводить, так как у них снята защита, но добавить примечание нельзя. Поэтому было выдвиното предложение о создании второй кнопки, позволяющей добавить примечание в активную ячейку.

Т.е. насколько я понял, Вы предлагаете использовать макрос, который выполняет следующие действия:
1. Снимает защиту с листа;
2. Добавляет примечание;
3. Ставит защиту листа.

 

Ответить

RAN

Дата: Среда, 24.04.2013, 12:05 |
Сообщение № 19

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

При установке
[vba]

Код

UserInterfaceOnly:=True

[/vba]
можно так поиграться
[vba]

Код

Sub Comm()
      On Error Resume Next
      With Range(«C6»)
          .AddComment
          .Comment.Visible = False
          .Select
          Selection.Comment.Text Text:=InputBox(«Текст комментария»)
      End With
End Sub

[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RANСреда, 24.04.2013, 12:07

 

Ответить

Hyperboreus

Дата: Среда, 24.04.2013, 13:55 |
Сообщение № 20

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


RAN, Да, Ваш вариант работает. БОЛЬШОЕ СПАСИБО!!!!!!

По ходу дела возник еще вопрос.

Например процедура добавления примечания прошла успешно. Если необходимо в уже сущуствующее примечание добавить еще текст (например при составлении отчёта по бизнес-плану за отчётный период). Т.е. в строке прочие расходы суммируется числа по 7-8 позициям, соответственно необходимо занести в примечание какая сумма и что она значит. Не всегда получается это внести за один раз. Иногда приходится возвращаться к этой сумме и ещё что-то добавлять, т.о. необходимо и в примечании делать изменения.

Как это можно осуществить через макрос.

Заранее спасибо!!!!!!!

 

Ответить

Some Excel users love comments; they put comments all over their workbooks.  Other users despise them as they are unsightly and annoying.  Whatever your preference, you can control them with VBA; add, delete, list on a worksheet – it can all be done with VBA.

Adapting the code to your needs

It is unlikely that any of the code below will meet your exact requirements. Every code snippet uses variables to hold either the worksheet, workbook comment, cell or a setting value.  By changing those variables, the code can easily be changed and combined with other code snippets to meet your specific requirements.

Basic comment actions

This first group of macros feature some of the basic actions you may include as part of a longer procedure.

Test if a cell has a comment

The following code will check if the active cell has a comment.  If so, it will output a message box to state that a comment exists.

Sub TestCellForComment()

'Create variables
Dim c As Range
Dim commentText As String

'Set variables
Set c = ActiveCell

'Try to set variable. If error then comment does not exist
On Error Resume Next
commentText = c.comment.Text
On Error GoTo 0

'If comment exists then display message box
If commentText <> "" Then

    MsgBox "Cell contains a comment"

End If

End Sub

Add a comment to a cell

The following code will insert the text “Insert my comment” as a comment attached to the active cell.

Sub AddComment()

'Create variables
Dim c As Range
Dim commentText As String

'Set variables
commentText = "Insert my comment"
Set c = ActiveCell

'Add comment
c.AddComment

'Change the comment
c.comment.Text Text:=commentText

End Sub

Get the text from a comment

The following code will capture text from a comment and display it within a message box.

Sub DisplayCommentFromCell()

'Create variables
Dim c As Range
Dim commentText As String

'Set variables
Set c = ActiveCell

'Try to set variable. If error then comment does not exist
On Error Resume Next
commentText = c.comment.Text
On Error GoTo 0

'If comment exists then display comment
If commentText <> "" Then

    MsgBox commentText

End If

End Sub

Clear comments from a worksheet

The following macro will clear the existing comments from the worksheet.

Sub ClearCommentsWorksheet()

'Creates variables
Dim ws As Worksheet

'Set variables
Set ws = ActiveSheet

'Clear comments from worksheet
ws.Cells.ClearComments

End Sub

Clear comments from a range

The following macro will clear the comments from a specified set of cells (A1-B20 of the active sheet) in this example.

Sub DeleteCommentsFromRange()

'Creates variables
Dim ws As Worksheet
Dim rng As Range

'Set variables
Set ws = ActiveSheet
Set rng = ws.Range("A1:B20")

'Clear comments from worksheet
rng.ClearComments

End Sub

Looping through comments

Some actions can be applied to all comments at the same time (such as clearing them).  But, other actions must be applied individually by looping through each of the comments one-by-one.

Loop through all comments in the worksheet

The following VBA code will loop through all the comments in the active worksheet.

Sub LoopThroughCommentsInWorksheets()

'Create variables
Dim ws As Worksheet
Dim com As comment

'Set variables
Set ws = ActiveSheet

'Loop through each comment on worksheet
For Each com In ws.Comments

    'Do somthing to each comment
    'Use com. to reference each comment

Next com

End Sub

Loop through all comments in the workbook

The following expands on the code above and loops through all the comments in the active workbook.

Sub LoopThroughCommentsInWorkbook()

'Create variables
Dim wb As Workbook
Dim ws As Worksheet
Dim com As comment

'Set variables
Set wb = ActiveWorkbook

'Loop through each worksheet
For Each ws In wb.Worksheets

    'Loop through each comment on worksheet
    For Each com In ws.Comments

        'Do something to each comment
        'Use com. to reference each comment

    Next com

Next ws

End Sub

Cells with comments

When thinking about comments, we also need to consider the cell to which the comment is attached.  The following examples specifically relate to those types of cells.

Select all the cells with comments

Excel provides a method to select all the cells with comments, which is used in the macro below.

Sub SelectCellsWithComments()

'Create variables
Dim ws As Worksheet

'Set variables
Set ws = ActiveSheet

'Select the cells with comments
ws.Cells.SpecialCells(xlCellTypeComments).Select

End Sub

Loop through all cells with comments in the worksheet

Where methods must be applied to each cell individually, it is necessary to loop through them one-by-one.  The code below will loop through each cell in the active worksheet which contains a comment.

Sub LoopThroughAllCellsWithCommentsWorksheet()

'Create variables
Dim ws As Worksheet
Dim c As Range

'Set variables
Set ws = ActiveSheet

'Loop through each comment on worksheet
For Each c In ws.Cells.SpecialCells(xlCellTypeComments)

    'Do somthing to each cell
    'Use c to reference each cell

Next c

End Sub

Loop through all cells with comments in the workbook

The following expands on the code above and loops through all cells  in the workbook which have comments attached.

Sub LoopThroughAllCellsWithCommentsWorkbook()

'Create variables
Dim wb As Workbook
Dim ws As Worksheet
Dim c As Range

'Set Variables
Set wb = ActiveWorkbook

'Loop through each worksheet
For Each ws In wb.Worksheets

    'Loop through each comment on worksheet
    For Each c In ws.Cells.SpecialCells(xlCellTypeComments)

        'Do something to each cell
        'Use c to reference each cell

    Next c

Next ws

End Sub

Change comment display settings

Comment display settings can be changed to one of three options:

  • The comment is hidden
  • The comment is hidden but the indicator (i.e., the red triangle) is visible
  • The comment and indicator are visible

The following macro will hide the comment and indicator.

Sub ChangeCommentDisplay()

'Create variables
Dim indicatorType As Long

'Set variables
indicatorType = xlNoIndicator

'Apply comment indicator
Application.DisplayCommentIndicator = indicatorType

End Sub

To apply the other settings change this line of code:

indicatorType = xlNoIndicator

For one of these lines of code:

Show comment indicator:

indicatorType = xlCommentIndicatorOnly

Show comment indicator and comment:

indicatorType = xlCommentAndIndicator

Displaying and printing comments on a separate page

If you would prefer comments to be displayed in a single worksheet or a single printed page, then these next two macros will be useful.

Print comments on an additional page

Within Excel, there are settings which control comments.  We don’t tend to look for them unless we have a specific problem or requirement.  One of these options controls the print settings.  The macro below will print all the comments on a separate page.

Sub PrintSetupListComments()

'Create variables
Dim ws As Worksheet
Dim printOptions As Long

'Set variables
Set ws = ActiveSheet
printOptions = xlPrintSheetEnd

'Set comments to print on an additional page
ws.PageSetup.PrintComments = printOptions

End Sub

The PrintComments setting has three options.  Therefore this line of code:

printOptions = xlPrintSheetEnd

Can be exchanged for one of these options.

Set comments to print if they are displayed:

printOptions = xlPrintInPlace

Set comments to never print:

printOptions = xlPrintNoComments

List all comments on a separate worksheet

The following code will create a new worksheet which lists all the comments.  There is limited error checking, so if you already have a worksheet called “Comments”, it will display an error.

Sub ListAllCommentsOnSeparateSheet()

'Create variables
Dim wb As Workbook
Dim ws As Worksheet
Dim newWs As Worksheet
Dim c As Range
Dim i As Integer

'Set variables
Set wb = ActiveWorkbook
Set newWs = wb.Worksheets.Add
newWs.Name = "Comments"

'Insert header row into Comments Worksheet
newWs.Cells(1, 1).value = "Sheet"
newWs.Cells(1, 2).value = "Cell Ref"
newWs.Cells(1, 3).value = "Comment"

'Loop through each worksheet
For Each ws In wb.Worksheets

    'Ignore errors from worksheets with no comments
    On Error Resume Next

    'Loop through each cell with a comment
    For Each c In ws.Cells.SpecialCells(xlCellTypeComments)

        'If there are no errors (i.e. comments exist)
        If Err.Number = 0 Then

            'Increment counter
            i = i + 1

            'List comments in the Comments Worksheet
            newWs.Cells(i + 1, 1).value = ws.Name
            newWs.Cells(i + 1, 2).value = c.Address
            newWs.Cells(i + 1, 3).value = c.comment.Text

        End If

    Next c

    'Reset error checking
    On Error GoTo 0

Next ws

End Sub

Change the shape of all comments boxes on a worksheet

Comment boxes always seem to be boring squares, but they can be a variety of shapes.  Use the following code to change all the shapes to boxes with a folded corner.

Sub ChangeCommentsBoxShape()

'Create variables
Dim ws As Worksheet
Dim com As comment
Dim shapeType As Long

'Set variables
Set ws = ActiveSheet
shapeType = msoShapeFoldedCorner

'Loop through each cell with a comment
For Each com In ws.Comments

    'Change the shape
    com.Shape.AutoShapeType = shapeType

Next com

End Sub

Some alternative shapes you could try are:

  • msoShapeRoundedRectangle
  • msoShapeOval
  • msoShapeRectangle

If you want other shapes, probably best to use the macro recorder to find the name of the shape, or you could use the IntelliSense feature.  IntelliSense will list all the available options as shown in the screenshot below.

Intellisense - showing the shapes


Headshot Round

About the author

Hey, I’m Mark, and I run Excel Off The Grid.

My parents tell me that at the age of 7 I declared I was going to become a qualified accountant. I was either psychic or had no imagination, as that is exactly what happened. However, it wasn’t until I was 35 that my journey really began.

In 2015, I started a new job, for which I was regularly working after 10pm. As a result, I rarely saw my children during the week. So, I started searching for the secrets to automating Excel. I discovered that by building a small number of simple tools, I could combine them together in different ways to automate nearly all my regular tasks. This meant I could work less hours (and I got pay raises!). Today, I teach these techniques to other professionals in our training program so they too can spend less time at work (and more time with their children and doing the things they love).


Do you need help adapting this post to your needs?

I’m guessing the examples in this post don’t exactly match your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site), you should be able to adapt it to your needs.

But, if you’re still struggling you should:

  1. Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
  2. Ask the ‘Excel Ninja’ in your office. It’s amazing what things other people know.
  3. Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it’s clear and concise.  List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
  4. Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.

What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid.  Check out the latest posts:

Like this post? Please share to your friends:
  • Vba excel примеры это
  • Vba excel проверить число или нет
  • Vba excel примеры помощь
  • Vba excel проверить цвет ячейки
  • Vba excel примеры открыт файл