![]() |
Формула в примечание Excel
Здравствуйте,
Можно ли получить результат вычисления формулы в примечании к ячейке? Конкретизирую, - нужно разделить значение ячейки A1 на "N" (N - целое число) и результат вычисления отобразить в примечании к этой же ячейке. Синтаксис оператора, в частности для деления, есть здесь: http://msdn.microsoft.com/ru-ru/library/25bswc76.aspx На некоторых форумах предлагается осуществить вычисление в отдельной ячейке с последующим переносом результата в примечание, но если VBA сам осуществляет вычисления, зачем прибегать к помощи вспомогательной ячейки? |
Откуда будет браться значение N?
|
В модуль нужного листа
Код:
Private Sub Worksheet_Change(ByVal Target As Range) |
Что вводить вместо Target и Value?
|
Ничего - это переменные
|
Но у меня одна переменная - значение ячейки A1 (либо диапазона ячеек, либо любой ячейки листа). Дело в том, что при компиляции выскакивает ошибка, пытался вводить нужную ячейку в формате "A1" вместо "Target.Value", - прошло, но вот дальше, где "Target.Comment" - выдаёт ошибку.
Реализовал вот так (пока только для одной ячейки A1; N=10): Sub Name() Worksheets(1).Range("A1").Comment.Text Text:=CStr(Range("A1") / 10) End Sub Воспользовался приведённой Вами командой Cstr. Чем принципиально отличается Ваш код от моего? Теперь возник вопрос: при сохранениии документа (с макросом), просит внести какие-то изменения в настройках, кто знает, где? |
Цитата:
|
Теперь уже и не помню (закрыл без сохранения); видимо при следующем входе надо макросы подключать в настройках ("Параметры Excel"→"Центр управления безопасностью"→"Параметры центра управления безопасностью"→"Параметры макросов").
|
Michael Mikhail, начиная с Office 2007 книги с макросами нужно сохранять в формате "... с поддержкой макросов". В "Центре управления безопасности нужно разрешить выполнение макросов" (выбирайте на свой вкус). Теперь по коду.
Target - Определяем выделенную ячейку Цитата:
Код:
If Not IsEmpty(Target.Value) And Not Application.Intersect(Target, Range("A1:C10")) Is Nothing Then В данном примере комментарии будут добавляться, если будут меняться значения в ячейках диапазона "A1:C10". Дальше понятно? Цитата:
Отличие моего кода - в форматировании примечания и в некоторых командах, которые ускоряют работу, например, функции листа не пересчитываются (в коде же есть пояснения). |
Цитата:
|
Спасибо, но почему то функция отмены последнего действия (действий), - стрелочка влево (Ctrl+Z), перестала работать: что ж я теперь, предыдущее значение ячейки не могу вернуть (на случай некорректного ввода текущего)? Кое-что (http://www.excel-vba.ru/chto-umeet-e...tviya-makrosa/) почитал, теперь задумался, - насколько востребованным может быть использование макросов.
Кроме того, код заработал только после того, как я его поместил в сам лист (через: Кнопка "Разработчик", кнопка "Visual Basic," "Лист 1", "View code"), а не в модуль листа (в котором он отказывался работать). При этом код работает только в незанятых (пустых) ячейках, а мне бы хотелось, чтобы примечание появлялось к ячейке, значение которой вычисляется по формулам Excel, из данных других ячеек. Можно ли как-то задавать позицию комментария на листе (отличную от установленной по умолчанию)? И ещё, - периодически стало появляться сообщение: "Предупреждение о конфиденциальной информации: документ содержит макросы, элементы управления ActiveX, данные пакета расширения XML или веб-компоненты. Они могут включать личные сведения, которые нельзя удалить с помощью инспектора документов". Если нажать "Отмена", появляется следующее сообщение: "Возникла непредвиденная ошибка. В этом сеансе работы с Excel автовосстановление отключено". |
Цитата:
Цитата:
Цитата:
|
Спасибо, всё работает!
Теперь остаётся только эксперементировать с формулами в выбранном диапазоне. Насколько я понял отсюда: http://forum.developing.ru/showthrea...BD%D1%8B%D1%85 отменить действие макроса, в общем случае непросто (хотя на других форумах и приводятся различные варианты решения узких задач), но в любом случае, стандартной функцией отмены - стрелочкой влево, после выполнения макроса воспользоваться невозможно. Пробовал использовать скрипт отсюда: http://forum.ru-board.com/topic.cgi?...0903&start=360, на этапе отладки пишет "Compile error. Sub or function not defined" и выделяет команду "Is_sheet_exist". Таким образом, проблема решена, а далее буду думать как и многие, можно ли реализовать в общем виде алгоритм отката макроса. |
Цитата:
Но это совершенно другая тема. Удачи! P.S. Michael Mikhail, нашел, как изменить положение коммента по вертикали. В коде Код:
' положение комментария - изменение числового значения второго параметра мне отследить не удалось на Код:
.Shape.Top = c.Row * c.RowHeight - 5 |
Спасибо ещё раз - буду экспериментировать.
|
Время: 04:54. |
Время: 04:54.
© OSzone.net 2001-