|
|||
muraveika
13.11.10 — 10:27 |
Как «вытащить» текст коммента, нашла уже здесь, а как установить? |
||
Tatitutu
1 — 13.11.10 — 10:31 |
а ??? можно вслух произнести то что ты хочешь ? и зачем ? |
||
Ткачев
2 — 13.11.10 — 10:31 |
http://www.sky1c.ru/node/88 |
||
muraveika
3 — 13.11.10 — 10:34 |
Я хочу комментарий к ячейке в Excel. Тот, который в Excel устанавливается правой кнопкой мышки: Вставить примечание. |
||
lxs
4 — 13.11.10 — 10:35 |
http://citforum.ru/programming/windows/excel_faq/ |
||
lxs
5 — 13.11.10 — 10:36 |
// Добавление примечания ASheet.Range[‘A2’, EmptyParam].NoteText(‘Note:’#10’Hello A2!’, EmptyParam, EmptyParam); |
||
lxs
6 — 13.11.10 — 10:36 |
delphi |
||
Tatitutu
7 — 13.11.10 — 10:42 |
(0) это не комментарий , а примечание называется проверку на наличие комментария ставить нужно будет, т.к. если уже есть , то при добавлении нового вылетит с ошибкой |
||
muraveika
8 — 13.11.10 — 10:42 |
Спасибо! На AddComment программа ругалась. |
||
smaharbA
9 — 13.11.10 — 10:49 |
Ексель=СоздатьОбъект("Excel.Application"); Книги=Ексель.Workbooks; Книга=Книги.Add(); Листы=Книга.Worksheets; Лист=листы.Item(1); Ячейки=лист.Cells; Ячейка=Ячейки.Item(3,3); Ячейка.NoteText("Вася Пупкин"); |
||
smaharbA
10 — 13.11.10 — 10:50 |
(7) это одно и тоже, что нотетекст, что коммент |
||
lxs 11 — 13.11.10 — 10:50 |
(9) ))) быстрый, однако |
Хитрости »
1 Май 2011 53759 просмотров
Запись изменений на листе в примечания
Иногда необходимо вести лог изменений в ячейках. Просто чтобы видеть как изменялась информация в ячейке. Например, это может пригодиться при ведении истории заказа, когда статус заказа записывается в одной ячейке. Сначала «В обработке», далее «Вывоз со склада», потом «Доставка» и т.п.
Приведенный ниже код создает примечание в ячейке, если её значение было изменено. В примечание заноситься информация о том, что было занесено в ячейку и когда это было занесено(т.е. дата и время изменения). Если примечание в ячейке уже есть, то в имеющееся примечание допишется информация об изменениях.
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) 'отслеживаем изменения только в диапазоне "E14:E50" - т.е. только статус '(изменить адрес, если надо отслеживать другие ячейки) If Intersect(Target, Me.Range("E14:E50")) Is Nothing Then Exit Sub Dim oComment As Comment On Error Resume Next Set oComment = Target.Comment If oComment Is Nothing Then Target.AddComment Target.Text & " " & Format(Now, "dd.mm.yy HH:MM") Else oComment.Text oComment.Text & Chr(10) & Target.Text & " " & Format(Now, "dd.mm.yy HH:MM") End If End Sub
Код необходимо поместить в модуль листа(щелкнуть правой кнопкой мыши по ярлычку листа —Исходный текст), изменения на котором необходимо отследить. Подробнее о модулях.
Следует учитывать, что код сработает только если данные были изменены вручную и для одной ячейки, а не для нескольких. Если скопировать в вставить несколько ячеек, примечание будет создано только для одной, а текст примечания может отличаться от ожидаемого. Если изменения производятся посредством вычисления формул — код не сработает вообще.
Изменения отслеживаются исключительно для ячеек A17:I30. Чтобы изменить ячейки, в которых необходимо отслеживать изменения, необходимо в строке:
If Intersect(Target, Me.Range(«E14:E50»)) Is Nothing Then Exit Sub
заменить адрес «E14:E50» на адрес нужных ячеек.
Если необходимо, чтобы в примечание заносилось предыдущее значение ячейки и вдобавок необходимо ограничить диапазон отслеживания изменений конкретными ячейками, то можно применить следующий код:
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim v, vv, sf, sa As String 'отслеживаем изменения только в диапазоне "A17:I30"(изменить адрес, если надо отслеживать другие ячейки) If Intersect(Target, Me.Range("A17:I30")) Is Nothing Then Exit Sub 'если изменено более одной ячейки - завершаем выполнение во избежание ошибок If Target.Count > 1 Then Exit Sub 'получаем новое значение v = Target.Value sf = Target.Formula 'запоминаем адрес текущей выделенной ячейки 'т.к. после Undo она изменится и надо будет вернуть sa = Selection.Address 'получаем старое значение With Application .EnableEvents = 0 .Undo vv = Target.Value 'старое значение 'возвращаем последнее записанное значение Target.Formula = sf Me.Range(sa).Select .EnableEvents = 1 End With 'сравниваем новое значение с прежним If CStr(vv) <> CStr(v) Then 'если значения различаются - создаем или дописываем примечание On Error Resume Next Dim oComment As Comment Set oComment = Target.Comment If oComment Is Nothing Then 'примечания еще нет - создаем и записываем информацию об изменениях Set oComment = Target.AddComment(CreateObject("wscript.network").UserName & ":" & Chr(10) & "было: " & vv & "; стало: " & v & "; Дата: " & Format(Now, "dd.mm.yy HH:MM")) Else 'уже есть примечание - дописываем информацию об изменениях oComment.Text oComment.Text & Chr(10) & CreateObject("wscript.network").UserName & ":" & Chr(10) & "было: " & vv & "; стало: " & v & "; Дата: " & Format(Now, "dd.mm.yy HH:MM") End If oComment.Shape.TextFrame.AutoSize = True End If End Sub
Код так же как и предыдущий размещается в модуле листа(правая кнопка мыши по ярлычку листа —Исходный текст), изменения в котором необходимо отслеживать.
Так же в данном коде помимо старого значения в примечание так же записываемся имя пользователя, изменившего значение, новое значение, дата/время изменения. Изменения отслеживаются исключительно для ячеек A17:I30. Чтобы изменить ячейки, в которых необходимо отслеживать изменения, необходимо в строке:
If Intersect(Target, Me.Range(«A17:I30»)) Is Nothing Then Exit Sub
заменить адрес «A17:I30» на адрес нужных ячеек.
Хочу обратить внимание, что при изменении нескольких ячеек сразу код не будет выполняться, т.к. ячеек может быть много и их значения могут просто не уместиться в примечания. Если нужны отслеживания множества ячеек сразу, то имеет смысл ознакомиться со статьей: Ведение журнала сделанных в книге изменений
Скачать пример
История изменений ячеек в примечаниях (72,5 KiB, 3 734 скачиваний)
Так же см.:
Ведение журнала сделанных в книге изменений
Выделение сделанных изменений
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
фонарик Пользователь Сообщений: 35 |
Интересует такой вот вопрос. Искал поиском по форуму, но он не ищет по названиям топиков Мне нужно сделать так, чтобы при наведении на ячейку вылезало к нему примечание. Но текст в ячейке может быть разный (как правило, ячейка это список наименований), соответственно и примечание должно быть всегда разным. Не подскажете какими способами можно такое сделать? Выбрал, например, в ячейке из списка модель мобильного телефона. К нему вылезает примечание с его характеристиками. Выбрал другую модель телефона — примечание с характеристиками, соответствующее данной модели. Можно такое сделать в принципе? |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
В разделе «Приемы» есть пример с отображением фото, в зависимости от выбранной модели. Может устроит такой вариант? Или переделать — вместо фото выводить текст. |
фонарик Пользователь Сообщений: 35 |
{quote}{login=Юрий М}{date=14.03.2011 08:32}{thema=}{post}В разделе «Приемы» есть пример с отображением фото, в зависимости от выбранной модели.{/post}{/quote}Там немножко не то, что требуется. Там для отображения дополнительной информации по указанной ячейки задействуется еще одна ячейка, соседняя. А мне нужно чтобы было примечание в той же ячейке, в которой что-то выбрали. Пробовал в примечании применять формулы, но они там не работают |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
|
{quote}{login=Юрий М}{date=14.03.2011 09:21}{thema=}{post}Вариант.{/post}{/quote}Да, именно то, что нужно. Но вы это сделали макросом, а подобное нельзя сотворить без оных? |
|
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Даже не представляю, как это сделать без макросов. |
{quote}{login=Юрий М}{date=14.03.2011 09:54}{thema=}{post}Даже не представляю, как это сделать без макросов.{/post}{/quote}Хорошо, очередное большое пребольшое вам спасибо Сохраню ваш вариант и подвергну его опытам |
|
vikttur Пользователь Сообщений: 47199 |
Нате Вам. Как вариант. Жестоко расправился с кодом Юры и на остатках файла водрузил автофигуру |
antal10 Пользователь Сообщений: 459 |
{quote}{login=Юрий М}{date=14.03.2011 09:21}{thema=}{post}Вариант.{/post}{/quote} Здравствуйте Юрий. Попытался приспособить Ваш код под свой файл, но почему-то не работает. Вроде бы и ссылки на ячейки поменял, а ничего не происходит. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Здравствуйте! Без Вашего файла трудно что-либо сказать… Макросы разрешены? |
antal10 Пользователь Сообщений: 459 |
{quote}{login=Юрий М}{date=17.12.2011 12:42}{thema=}{post}Здравствуйте! Без Вашего файла трудно что-либо сказать… Макросы разрешены?{/post}{/quote} Макросы разрешены. Их несколько, один работает второй нет. В чем причина непойму. Тестировал макрос на Вашем примере со своими данными — работает. Закинул в другой файл — не фурычит. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
И мой вариант: 19419 Я сам — дурнее всякого примера! … |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Файл. Я сам — дурнее всякого примера! … |
antal10 Пользователь Сообщений: 459 |
Столбец С почему-то в расчет не берется. Ну, а так впринципе, все замечательно. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
{quote}{login=antal10}{date=17.12.2011 03:43}{thema=}{post}Столбец С почему-то в расчет не берется.{/post}{/quote}А в Вашем примере он и не рассматривался |
antal10 Пользователь Сообщений: 459 |
{quote}{login=Юрий М}{date=17.12.2011 04:01}{thema=Re: }{post}{quote}{login=antal10}{date=17.12.2011 03:43}{thema=}{post}Столбец С почему-то в расчет не берется.{/post}{/quote}А в Вашем примере он и не рассматривался Так давайте рассмотрим.:-) |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
|
antal10 Пользователь Сообщений: 459 |
{quote}{login=Юрий М}{date=17.12.2011 04:57}{thema=}{post}Давайте.{/post}{/quote} Спасибо большое, работает. |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Знак переноса строки. Я сам — дурнее всякого примера! … |
antal10 Пользователь Сообщений: 459 |
Почему-то вдруг стало выдавать ошибку. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Где вот эта строка? |
antal10 Пользователь Сообщений: 459 |
{quote}{login=Юрий М}{date=17.12.2011 08:01}{thema=}{post}Где вот эта строка? |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Выполните этот макрос: |
antal10 Пользователь Сообщений: 459 |
{quote}{login=Юрий М}{date=17.12.2011 08:11}{thema=}{post}Выполните этот макрос: Пробовал запускать пишет: |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
|
antal10 Пользователь Сообщений: 459 |
{quote}{login=Юрий М}{date=17.12.2011 08:34}{thema=}{post}Вводили новое имя?{/post}{/quote} |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Если «мой» файл работает — ищите разницу в коде, в данных. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
{quote}{login=Юрий М}{date=17.12.2011 08:34}{thema=}{post}Вводили новое имя?{/post}{/quote}Это ведь был вопрос — Вы вводили новое имя или ошибка на существующих данных? |
antal10 Пользователь Сообщений: 459 |
#30 17.12.2011 20:48:40 {quote}{login=Юрий М}{date=17.12.2011 08:43}{thema=Re: }{post}{quote}{login=Юрий М}{date=17.12.2011 08:34}{thema=}{post}Вводили новое имя?{/post}{/quote}Это ведь был вопрос — Вы вводили новое имя или ошибка на существующих данных?{/post}{/quote} |
Вставить примечание с текстом в активную ячейку |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Автоматическая вставка примечаний в Excel
Иногда нам требуется быстро вставить примечания в определённом диапазоне, делать это с помощью вкладок программы или контекстного меню (правой кнопки мыши) неудобно да и долго. Напишем свой макрос для быстрой вставки примечаний в ячейки таблицы.
Иногда нам требуется быстро вставить примечания в определённом диапазоне, делать это с помощью вкладок программы или контекстного меню (правой кнопки мыши) неудобно да и долго. Напишем свой макрос для быстрой вставки примечаний в ячейки таблицы.
Текст макроса:
Sub CreateComments()
Dim cell As Range
‘ Производим поиск по всем ячейкам диапазона и добавляем примечания _
ко всем ячейкам, содержащим слово «Выручка»
For Each cell In Range(«E1:E100»)
If cell.Value Like «*Выручка*» Then
cell.ClearComments
cell.AddComment «Сдать в банк»
End If
Next
End Sub
Всем удачи!