Удалить примечание excel vba
Есть ли возможность писать лог в примечаниях этим кодом или модифицированным ?
Private s$
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oComment As Comment, un$
On Error Resume Next
Set oComment = Target.Comment
un = WorksheetFunction.VLookup(GetUserName_3(2), Лист4.[A2:B999], 2, False)
If oComment Is Nothing Then
Set oComment = Target.AddComment(un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text)
oComment.Shape.TextFrame.AutoSize = True
Else
oComment.Text oComment.Text & Chr(10) & un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text
oComment.Shape.TextFrame.AutoSize = True
End If
Intersect(Columns("i"), Target(1)).Offset(, 1) = Now
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
s = Target.Cells(1, 1)
End Sub
только что-бы индикаторы не отображались или были белого цвета ?
в файле пароль пользователь 444 админ 555
Есть ли возможность писать лог в примечаниях этим кодом или модифицированным ?
Private s$
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oComment As Comment, un$
On Error Resume Next
Set oComment = Target.Comment
un = WorksheetFunction.VLookup(GetUserName_3(2), Лист4.[A2:B999], 2, False)
If oComment Is Nothing Then
Set oComment = Target.AddComment(un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text)
oComment.Shape.TextFrame.AutoSize = True
Else
oComment.Text oComment.Text & Chr(10) & un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text
oComment.Shape.TextFrame.AutoSize = True
End If
Intersect(Columns("i"), Target(1)).Offset(, 1) = Now
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
s = Target.Cells(1, 1)
End Sub
только что-бы индикаторы не отображались или были белого цвета ?
в файле пароль пользователь 444 админ 555 koyaanisqatsi
Есть ли возможность писать лог в примечаниях этим кодом или модифицированным ?
Private s$
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oComment As Comment, un$
On Error Resume Next
Set oComment = Target.Comment
un = WorksheetFunction.VLookup(GetUserName_3(2), Лист4.[A2:B999], 2, False)
If oComment Is Nothing Then
Set oComment = Target.AddComment(un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text)
oComment.Shape.TextFrame.AutoSize = True
Else
oComment.Text oComment.Text & Chr(10) & un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text
oComment.Shape.TextFrame.AutoSize = True
End If
Intersect(Columns("i"), Target(1)).Offset(, 1) = Now
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
s = Target.Cells(1, 1)
End Sub
только что-бы индикаторы не отображались или были белого цвета ?
в файле пароль пользователь 444 админ 555 Автор - koyaanisqatsi
Дата добавления - 16.05.2016 в 21:00
Sub скрыть_ярлычки_примечаний()
Application.DisplayCommentIndicator = xlNoIndicator
'xlCommentAndIndicator - показать комментарии и ярлычки
'xlCommentIndicatorOnly - показать только ярлычки.
'xlNoIndicator - скрыть комментарии и ярлычки
End Sub
*но лучше хранить историю изменений на другом, скрытом листе, если действительно скрытность требуется.
Sub скрыть_ярлычки_примечаний()
Application.DisplayCommentIndicator = xlNoIndicator
'xlCommentAndIndicator - показать комментарии и ярлычки
'xlCommentIndicatorOnly - показать только ярлычки.
'xlNoIndicator - скрыть комментарии и ярлычки
End Sub
*но лучше хранить историю изменений на другом, скрытом листе, если действительно скрытность требуется. al-Ex
Sub скрыть_ярлычки_примечаний()
Application.DisplayCommentIndicator = xlNoIndicator
'xlCommentAndIndicator - показать комментарии и ярлычки
'xlCommentIndicatorOnly - показать только ярлычки.
'xlNoIndicator - скрыть комментарии и ярлычки
End Sub
*но лучше хранить историю изменений на другом, скрытом листе, если действительно скрытность требуется. Автор - al-Ex
Дата добавления - 17.05.2016 в 00:28
ИМХО, не самая удачная мысль хранить лог в примечаниях.
Ведь каждое примечание - это объект Comment, член коллекции Shape. Короче - рисунок.
У вас очень быстро файл так распухнет от множества этих рисунков…
Да ещё и объекты Comment обладают гнусной привычкой самопроизвольно "оттягиваться" на стрелке-указке от своих ячеек далеко за границы экрана после проведения операций с ячейками (у меня даже в Personal есть специальный макрос, исправляющий положение примечаний).
В общем, реализуете свою идею, поработаете немного, замучаетесь и придётся переделывать.
Как вариант я бы, действительно, предложил хранить логи ячеек нужного листа на скрытом (или шибко скрытом ) листе.
Файл почти не "разжиреет". При этом можно достаточно легко реализовать повтор на скрытом листе операций с ячейками/столбцами/строками, проводимых на отслеживаемом листе. А именно такие операции чаще всего вызывают "разбегание" примечаний.
ИМХО, не самая удачная мысль хранить лог в примечаниях.
Ведь каждое примечание - это объект Comment, член коллекции Shape. Короче - рисунок.
У вас очень быстро файл так распухнет от множества этих рисунков…
Да ещё и объекты Comment обладают гнусной привычкой самопроизвольно "оттягиваться" на стрелке-указке от своих ячеек далеко за границы экрана после проведения операций с ячейками (у меня даже в Personal есть специальный макрос, исправляющий положение примечаний).
В общем, реализуете свою идею, поработаете немного, замучаетесь и придётся переделывать.
Как вариант я бы, действительно, предложил хранить логи ячеек нужного листа на скрытом (или шибко скрытом ) листе.
Файл почти не "разжиреет". При этом можно достаточно легко реализовать повтор на скрытом листе операций с ячейками/столбцами/строками, проводимых на отслеживаемом листе. А именно такие операции чаще всего вызывают "разбегание" примечаний. Alex_ST
Как вариант я бы, действительно, предложил хранить логи ячеек нужного листа на скрытом (или шибко скрытом ) листе.
Файл почти не "разжиреет". При этом можно достаточно легко реализовать повтор на скрытом листе операций с ячейками/столбцами/строками, проводимых на отслеживаемом листе. А именно такие операции чаще всего вызывают "разбегание" примечаний. Автор - Alex_ST
Дата добавления - 17.05.2016 в 08:54
al-Ex, История не требует скрытности наоборот хочется прозрачности чтобы все могли видить но никто не мог изменить. Пока что эту историю можно менять. Это не правильно (((
al-Ex, История не требует скрытности наоборот хочется прозрачности чтобы все могли видить но никто не мог изменить. Пока что эту историю можно менять. Это не правильно ((( koyaanisqatsi
Alex_ST, На отдельном листе хорошая идея. Но я не знаю как это все реализовывается как смотреть историю чтобы было удобно. Пока попробую таким методом. А там видно будет.
Alex_ST, На отдельном листе хорошая идея. Но я не знаю как это все реализовывается как смотреть историю чтобы было удобно. Пока попробую таким методом. А там видно будет. koyaanisqatsi
Ну, пробуйте пока так.
А для борьбы со "съехавшими" примечаниями вот Вам презент из моей заначки:
[vba]
Sub Починить_примечания() 'FixComm()
'---------------------------------------------------------------------------------------
' Procedure : Починить_примечания() ' в оригинале - FixComm()
' Author :
' Topic_HEADER : "Как настроить примечания ? "
' Topic_URL : http://www.planetaexcel.ru/forum.php?thread_id=11528&page_forum=3&allnum_forum=66
' Post_Author : Юрий М
' Post_URL :
' DateTime : 21.06.2010, 01:31
' Purpose : восстановить нормальное положение "съехавших" примечаний на листе
' Notes :
'---------------------------------------------------------------------------------------
Dim iComment As Comment, A_Size As Boolean
Select Case MsgBox("Включить у всех примечаний автоподбор размера?", vbYesNoCancel + vbQuestion, "Как настроить примечания?")
Case vbCancel: Exit Sub
Case vbYes: A_Size = True
Case vbNo
End Select
For Each iComment In ActiveSheet.Comments
With iComment.Parent
iComment.Shape.Placement = xlMove
If A_Size Then iComment.Shape.TextFrame.AutoSize = True
iComment.Shape.Top = .Top - 10
iComment.Shape.Left = .Left + .Width + 10
End With
Next
MsgBox "Положения окон комментариев исправлены!", vbInformation, ""
End Sub
Ну, пробуйте пока так.
А для борьбы со "съехавшими" примечаниями вот Вам презент из моей заначки:
[vba]
Sub Починить_примечания() 'FixComm()
'---------------------------------------------------------------------------------------
' Procedure : Починить_примечания() ' в оригинале - FixComm()
' Author :
' Topic_HEADER : "Как настроить примечания ? "
' Topic_URL : http://www.planetaexcel.ru/forum.php?thread_id=11528&page_forum=3&allnum_forum=66
' Post_Author : Юрий М
' Post_URL :
' DateTime : 21.06.2010, 01:31
' Purpose : восстановить нормальное положение "съехавших" примечаний на листе
' Notes :
'---------------------------------------------------------------------------------------
Dim iComment As Comment, A_Size As Boolean
Select Case MsgBox("Включить у всех примечаний автоподбор размера?", vbYesNoCancel + vbQuestion, "Как настроить примечания?")
Case vbCancel: Exit Sub
Case vbYes: A_Size = True
Case vbNo
End Select
For Each iComment In ActiveSheet.Comments
With iComment.Parent
iComment.Shape.Placement = xlMove
If A_Size Then iComment.Shape.TextFrame.AutoSize = True
iComment.Shape.Top = .Top - 10
iComment.Shape.Left = .Left + .Width + 10
End With
Next
MsgBox "Положения окон комментариев исправлены!", vbInformation, ""
End Sub
Как удалить все комментарии на листе / книге?
В целом, большинство пользователей знают, как удалить один комментарий в Excel, но если у вас есть рабочий лист или книга с несколькими комментариями, знаете ли вы, как массово удалить все комментарии? Теперь я расскажу вам несколько быстрых способов удалить все комментарии с листа или всей книги.
Удалите все комментарии на листе с помощью Удалить в Excel
Вы можете использовать ярлык, чтобы выбрать все комментарии на листе, а затем удалить их.
1. Откройте лист, из которого вы хотите удалить все комментарии, и нажмите Ctrl + чтобы выделить весь лист.
2. Затем нажмите Обзор > Удалить, то все комментарии в текущем листе удаляются. Смотрите скриншот:
Удалите все комментарии на листе с помощью функции Перейти в Excel
В Excel, если вы хотите удалить все комментарии на листе, вы можете сделать следующее:
1. Нажмите F5 Показать Перейти к диалоговое окно и щелкните Специальный… , чтобы открыть Перейти к Специальный диалог, затем отметьте Комментарии и нажмите OK чтобы закрыть диалог. Смотрите скриншоты:
2. Затем щелкните правой кнопкой мыши, чтобы открыть контекстное меню, и щелкните Удалить комментарий, и теперь все комментарии в текущем листе удалены.
Удалить все комментарии на листе или в книге с помощью VBA
Существует также VBA, который может помочь вам удалить комментарии с рабочего листа или всей книги.
1. Нажмите Alt + F11 для отображения Microsoft Visual Basic для приложений окно.
2. В окне нажмите Вставить > Модули чтобы отобразить новое окно модуля, затем скопируйте следующий код VBA в окно модуля.
VBA: удаление комментариев с листа.
VBA: удалить все комментарии из всей книги
3. Нажмите Run кнопку, чтобы запустить код, и вы увидите, что все комментарии удалены из текущего рабочего листа или всей книги.
Сбросить все местоположения комментариев с помощью Kutools for Excel
Если вы вставили несколько комментариев в книгу, и вы, вероятно, можете перетащить комментарии, как показано ниже. И теперь вы хотите сбросить расположение комментариев обратно, вы можете использовать Kutools for ExcelАвтора Сбросить позицию комментария чтобы быстро их сбросить.
После бесплатная установка Kutools for Excel, сделайте следующее:
Нажмите Кутулс > Еще > Сбросить позицию комментария. Смотрите скриншот:
Затем выберите Активный лист для сброса позиции комментариев на активном листе, или Все листы чтобы сбросить положение всех комментариев во всей книге.
Как удалить все комментарии к документу в Word?
Возможность комментирования - одна из самых полезных функций Word. Комментарии содержат заметки для пользователей, и это более удобно, когда два или более человека редактируют документ.
Примечание: Комментарии могут быть показаны или скрыты с помощью Показать отметку вариант на Обзор Вкладка Отслеживание группа, см. снимок экрана:
Из этого туториала Вы узнаете, как сразу избавиться от комментариев в документе, когда они вам не нужны.
Рекомендуемые инструменты повышения производительности для Word
Удаление комментариев с помощью функции удаления, предоставляемой Word
С помощью следующих шагов вы можете удалить отдельный комментарий или все комментарии к документам:
1. Выберите комментарий, который хотите удалить (пропустите, если хотите удалить все комментарии).
2. Щелкните Обзор > Удалить > Удалить or Удалить все комментарии в документе. Смотрите скриншот:
Внимание: Когда вы помещаете курсор в комментарий, опция Удалить будет доступна на скриншоте выше. В противном случае доступно только Удалить все комментарии в Word.
Удалите все комментарии с кодом VBA
Есть еще один простой способ удалить все комментарии из документа с помощью VBA. Сделайте следующее:
1. Нажмите «Alt-F11”, Чтобы открыть Microsoft Visual Basic для приложений окно.
2. щелчок Модули из Вставить вкладку, скопируйте и вставьте следующий код VBA в окно модуля;
Код VBA для удаления всех комментариев в Word:
3. Нажмите Run кнопку, чтобы применить VBA, или нажмите F5.
Один щелчок, чтобы удалить все комментарии с помощью Kutools for Word
Kutools for WordАвтора Удалить комментарии Утилита может быстро удалить все комментарии во всем документе, но если вы сначала выбрали часть документа, она удалит только все комментарии из выделенного документа.
Kutools for Word, удобная надстройка, включает группы инструментов, облегчающих вашу работу и расширяющих ваши возможности обработки текстовых документов. Бесплатная пробная версия на 45 дней! Get It Now!
1. Пожалуйста, примените эту утилиту, нажав Кутулс > Еще > Удалить комментарии. Смотрите скриншот:
2. После нажатия Удалить комментарии, вы увидите результат, как показано на скриншотах ниже:
Эта утилита также может удалить все комментарии из части документа. Для получения дополнительной информации о том, как удалить все комментарии из части документа, посетите здесь.
Изменение размера примечаний
Создал код который изменяет размер примечания во всех ячейках в диапозоне: Sub kl() With.
Изменение скрытых примечаний (Comments)
Надо создать макрос, который бы в том числе удалял бы скрытые примечания, которые вставляютя с.
Работа с листами, а также копирование примечаний
Здравствуйте, замучился уже, толи тип у переменной неправильно выбрал толи еще чего Вообщем так.
Word. Ошибка получения текста примечаний
Добрый день. Помогите с проблемой не очень опытному VBA-кодеру. Пишу макрос, который перебирает.
Подходит для поиска с заменой в ограниченном прямоугольном диапазоне (номера начальных и конечных строк и столбцов указаны в условии If). Не знаю пока как сделать для произвольного диапазона.
Busine2009,
В условии написано, что не на всем листе, а в заданном диапазоне. Может подскажешь, как определить принадлежность ячейки заданному диапазону в общем случае? Было бы здорово!
Busine2009
Этот код конечно сработает и задачу можно считать решенной. Мне кажется, красибо бы смотрелось, если бы какой-то функцией получать пересечение двух диапазонов (Range) как новый диапазон (Range) или Nothing. Есть такое в объектной модели Excel, интересно?
Уокенбах - шикарно! Жалко мне имею у себя этой библии VBA в подлиннике (эл. кн. не в счёт).
Добавлено через 41 секунду
Мне кажется, красибо бы смотрелось, если бы какой-то функцией получать пересечение двух диапазонов (Range) как новый диапазон (Range) или Nothing. Есть такое в объектной модели Excel, интересно?
Есть электронная версия книги (pdf, djv), но она как всегда на с собой, когда-то скачана и куда-то сохранена, причем не помню куда. Ну меня будем считать спасает встроенная справка и форумы спасают.
Я хотел решить задачу пересечением диапазонов (если это возможно в принципе), чтобы обход и замена выполнялись быстро, за минимальное количество операций и в минимальное время. Тогда бы перечисление элементов коллекции примечаний на листе проходилось только по ячейкам с примечаниями и мы бы делали замену тольуо там, где ячейка попадает в заданый диапазон. Тогда не надо "холостой" проверки ячеек без примечаний. Выиграть я хотел бы по времени выполнения.
ну и зря: периодически нужно заглядывать в самоучители. Особенно полезно в них заглядывать после определённого времени программирования.
Вот такое ещё решение нашёл с помощью Find:
Я не спорю, я согласен с тобой про самоучители. Польза есть даже матерому программисту, чтобы не зацикливаться на горстке наработанных костылей на все случаи. У меня целая библиотека по языку ассемблера х86 :P
Код с Find по мне так очень хорош! Молодец! Как раз по произвольному диапазону и без холостых оборотов.
Нашел универсальное элегантное решение вопроса в том виде, в котором я его хотел увидеть изначатьно. =)
Всех приветствую!
нужна помощь в обуздании примечаний excel.
в ячейке имеется данные в формате дата (19.04.2015)
используя этот код:
в примечание ячейки автоматом заносится информация которая была до редактирования
все хорошо, но есть одна проблема в которой по незнанию не могу разобраться.
а именно: у меня в ячейках записаны даты, а при использовании этого кода в примечание заносится значение не в формате даты.
помогите пожалуйста сделать так чтоб в примечание ячейки заносилась информация в формате даты
Добрый вечер! Может кто знает как быстро из кода VBA удалить все комментарии, а то у меня комментарии размером почти как сам код, очень утяжеляет рабочий код.
Удаление комментариев в коде
Как записать в коде, чтобы удалял последовательно символы начиная со знака " ' " и до знака абзаца.
Удаление комментариев в программном коде Си
Удаление комментариев В языке Си комментарии к исходному коду начинаются с двух символов /* и.
Использование русских комментариев в коде
как сделать так чтобы в Паскале можно было писать русскими буквами. у мя пишет чисто английскими.
Решение
Он действительно не работает,
Во-первых написан для Excel, мне нужно для Word (моя вина, не уточнил) попытался переписать для word, не нашел фразу аналог в word
P.S. Обратите внимание на то, что здесь также не удаляются комментарии, созданные с помощью инструкции REM
Пардон, полное название утилиты Excel VBA Code Cleaner, так что можете не обращать внимание на мой пост
Решение
Весьма любопытная задача. Набросал свой дилетантский (наверное), зато кроссплатформенный (в том смысле, что он работает в любых приложениях, использующих VBA) вариант макроса удаления комментариев. Может быть, он вас заинтересует.
Все четко! Спасибо. На работу дилетанта не похоже, как минимум нужно знание структуры VBA.
А комментариев нет, удалились УдаляторомКомментариев?
Решение
Если я правильно понял, что вас интересуют также пояснения к программе, то предлагаю вашему вниманию.
Комментарии к коду программы "УдаляторКомментариев".
Назначение программы "УдаляторКомментариев" - удаление комментариев из кода VBA. Для ускорения работы и повышения надежности (неизвестно, как поведет себя программа при модификации самой себя) она не содержит комментариев. Этот пробел восполняется далее.
Программа не идеальна, и наверняка можно было бы сделать ее лучше. В частности, вполне вероятно, что при более близком знакомстве с объектной моделью VBIDE окажется, что существует более простой (при сохранении кроссплатфоменности) метод получения имени содержащего проект документа. Также следует признать, что не исчерпаны все возможности по оптимизации быстродействия программы. Но даже в таком виде программа вполне работоспособна и способна более-менее эффективно выполнять свою основную задачу.
Припомнив тему dimonser’а Подсветка синтаксиса в word 2007 — попробовал использовать зелёный цвет этих самых комментариев.
Но так глубоко не забурился, однако нашёл шаблон поиска* прямо в коде:
_________________
* не считая упомянутых Апострофф’ом многострочных комментов
После многих проб и ошибок сумел реализовать вариант программы, учитывающий ценные замечания от Апостроффа. В этом мне очень помогла теория конечных автоматов.
Была также мысль реализовать поиск комментариев через регулярные выражения, но производительность недетерминированных конечных автоматов (на которые отображаются регулярные выражения) ниже, чем производительность детерминированных конечных автоматов, что для больших объемов текста весьма существенно. Текущий вариант сочетает надежность с высокой производительностью.
Читайте также: