Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/163: Рейтинг темы: голосов - 163, средняя оценка - 4.92
15 / 4 / 0
Регистрация: 11.08.2012
Сообщений: 157

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

14.07.2015, 16:08. Показов 30685. Ответов 9
Метки нет (Все метки)

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

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

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

Прошу вас помочь, по ходу скорее всего появятся еще вопросы... заранее большое спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2015, 16:08
Ответы с готовыми решениями:

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

Работа с БД Access через VBA Excel
Добрый день! Суть проекта: необходим макрос в Excel, который бы добавлял/изменял строки в таблице Access. Пока что получается только...

Изменения формата ячейки Excel средствами VBA в зависимости от значения другой ячейки
Здравствуйте. Столкнулся с проблемой. Необходимо на листе Excel Залить, предположим, ячейку "C4" Зелёным цветом, при условии,...

9
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38157 / 21093 / 4305
Регистрация: 12.02.2012
Сообщений: 34,677
Записей в блоге: 14
14.07.2015, 16:58
Проверка наличия примечания:

Visual Basic
1
2
3
4
5
   If ActiveCell.Comment Is Nothing Then
      MsgBox "Нет"
   Else
      MsgBox "Есть"
   End If
Добавлено через 1 минуту
Удаление примечания:

Visual Basic
1
   If Not (ActiveCell.Comment Is Nothing) Then ActiveCell.Comment.Delete
Добавлено через 1 минуту
Новый комментарий взамен имеющегося я записываю, удалив имеющийся.
3
15 / 4 / 0
Регистрация: 11.08.2012
Сообщений: 157
15.07.2015, 17:10  [ТС]
Спасибо за ответ!

Подскажите, а как можно сделать следующее: я хочу защитить книгу от изменений, но при этом хочу, чтобы изменения, вносимые макросами, применялись. Можно так? заранее спасибо.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38157 / 21093 / 4305
Регистрация: 12.02.2012
Сообщений: 34,677
Записей в блоге: 14
15.07.2015, 18:28
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

iskan13, правила Форума: "один вопрос - одна тема". А ответ звучит так:

1) устанавливается защита нужных листов (предположим, с паролем 123123)
2) В коде пишется:

Visual Basic
1
2
3
4
5
Sub AAA()
    ActiveSheet.Unprotect Password:="123123"
    Range("A1").Value = 888
    ActiveSheet.Protect
End Sub
3) Проект защищается от просмотра
3
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.07.2015, 14:24
Цитата Сообщение от iskan13 Посмотреть сообщение
3. Можно ли вносить правку в существующий комментарий средствами VBA?
Можно.

Visual Basic
1
2
3
4
5
with ActiveCell
  If Not (.Comment Is Nothing) Then
    .Comment.Text .Comment.Text & " Дописываем текст к существующему комментарию."
  end if
end with
2
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
19.06.2016, 22:56
Цитата Сообщение от Dragokas Посмотреть сообщение
If Not (.Comment Is Nothing) Then
Здравствуйте. поясните пожалуйста данную часть кода. Не могу понять детально.
Общая суть понятна, Если есть комментарий то добавляем к нему еще запись.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.06.2016, 23:08
Здравствуйте, Евгений_Пермь !

.Comment.Text

чтобы воспользоваться свойством объекта Comment, он должен существовать.
.Comment Is Nothing - это и есть проверка. На псевдоязыке: "Объект - ничто ?"
Оли объект "Комментарий" существует, то мы просто изменяем ему значение свойства Text.

Если объект "Комментарий" не существует, нам нужно его добавить (создать). Это делается другой командой:
Метод AddComment объекта Cell / Range.

Visual Basic
1
ActiveCell.AddComment.Text
При этом, если Вы дважды воспользуетесь этим методом, то вылетит ошибка, т.к. такой объект уже сущеуствует (у одной ячейки не может быть 2 объекта Comment).

Т.е. в итоге, если Вы хотите в активную ячейку просто записать комментарий (не имея представления, есть ли там в данный момент уже комментарий, или его еще нет), то безопасной конструкцией будет следующая:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
dim MyCommentText as String
 
MyCommentText = "Текст нового комментария"
 
with ActiveCell
  If (.Comment Is Nothing) Then
    .AddComment.Text MyCommentText 
  else
    .Comment.Text MyCommentText 
  end if
end with
1
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
19.06.2016, 23:25
Не менее безопасная конструкция

Visual Basic
1
2
3
4
Dim MyCommentText$
MyCommentText = "Текст нового комментария"
 
ActiveCell.NoteText MyCommentText
4
14 / 14 / 0
Регистрация: 24.09.2015
Сообщений: 209
19.06.2016, 23:27
Dragokas, благодарю! Вроде пока всё понятно)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.06.2016, 23:43
pashulka, спасибо. Не знал о ней.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2016, 23:43
Помогаю со студенческими работами здесь

Импорт таблицы Excel в БД Access через VBA через кнопку в Excel
Форумчане, помогите, пожалуйста с кодом макроса в excel. Задача состоит в следующем:в файле обработчик через кнопку импортировать данные...

VBA excel - значение ячейки
Добрый день, Подскажите, пожалуйста, Мой макрос пишет в ячейке Cells(nrow1 - 8, ncol + 3) формулу. Мне нужно в ячейке...

Ячейки - События (VBA for Excel)
Знаю, что строка Worksheets('Листик').OnSheetActivate = 'Zap' запускает процедуру 'Zap', как только активизируется лист 'Листик'. Как...

Определение последней ячейки в excel VBA
Добрый день, есть вот такая табличка Мне нужно находить последнюю заполненную строчку столбца "А", а потом записать в...

VBA Excel Изменение цвета ячейки
Есть ячейка G3 в которой выводится значение либо "промах" либо "попадание" в зависимости от расчетов (задача на моделирование), нужен...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru