Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2007 - Формула в примечание Excel

Ответить
Настройки темы
2007 - Формула в примечание Excel

Аватара для Michael Mikhail

Старожил


Сообщения: 287
Благодарности: 6

Профиль | Отправить PM | Цитировать


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

Можно ли получить результат вычисления формулы в примечании к ячейке?
Конкретизирую, - нужно разделить значение ячейки A1 на "N" (N - целое число) и результат вычисления отобразить в примечании к этой же ячейке. Синтаксис оператора, в частности для деления, есть здесь: http://msdn.microsoft.com/ru-ru/library/25bswc76.aspx
На некоторых форумах предлагается осуществить вычисление в отдельной ячейке с последующим переносом результата в примечание, но если VBA сам осуществляет вычисления, зачем прибегать к помощи вспомогательной ячейки?

Отправлено: 17:11, 21-11-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Откуда будет браться значение N?

Отправлено: 18:11, 21-11-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Модератор


Moderator


Сообщения: 16844
Благодарности: 3247

Профиль | Сайт | Отправить PM | Цитировать


В модуль нужного листа
Код: Выделить весь код
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With
    If Not IsEmpty(Target.Value) Then
        With Target
                If Target.Comment Is Nothing Then .AddComment
' получение значения "comtext" в ваших руках - формула в скобках любая.
'-----------------------------------------
            comtext = CStr(.Value / 2)
'-----------------------------------------
            .Comment.Text Text:=comtext
' чтобы коммент был виден, раскомментируйте строчку ниже
'            .Comment.Visible = True
        End With

' форматирование комментария
'--------------------------------------------
        With Target.Comment.Shape.TextFrame
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .ReadingOrder = xlContext
            .AutoSize = True
            .Characters.Font.FontStyle = "полужирный"
            .Characters.Font.Size = 9
        End With
'--------------------------------------------
    End If
With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub
Формулу для comtext придумайте сами.

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Последний раз редактировалось okshef, 22-11-2012 в 08:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:15, 21-11-2012 | #3


Аватара для Michael Mikhail

Старожил


Сообщения: 287
Благодарности: 6

Профиль | Отправить PM | Цитировать


Что вводить вместо Target и Value?

-------
Чем "больше" компьютер "висит", тем он умнее!


Отправлено: 12:15, 22-11-2012 | #4


Модератор


Moderator


Сообщения: 16844
Благодарности: 3247

Профиль | Сайт | Отправить PM | Цитировать


Ничего - это переменные

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Отправлено: 12:16, 22-11-2012 | #5


Аватара для Michael Mikhail

Старожил


Сообщения: 287
Благодарности: 6

Профиль | Отправить PM | Цитировать


Но у меня одна переменная - значение ячейки 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. Чем принципиально отличается Ваш код от моего?

Теперь возник вопрос: при сохранениии документа (с макросом), просит внести какие-то изменения в настройках, кто знает, где?

-------
Чем "больше" компьютер "висит", тем он умнее!


Последний раз редактировалось okshef, 22-11-2012 в 18:05.


Отправлено: 14:25, 22-11-2012 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Michael Mikhail:
просит внести какие-то изменения в настройках, »
Приведите точное сообщение.

Отправлено: 15:11, 22-11-2012 | #7


Аватара для Michael Mikhail

Старожил


Сообщения: 287
Благодарности: 6

Профиль | Отправить PM | Цитировать


Теперь уже и не помню (закрыл без сохранения); видимо при следующем входе надо макросы подключать в настройках ("Параметры Excel"→"Центр управления безопасностью"→"Параметры центра управления безопасностью"→"Параметры макросов").

-------
Чем "больше" компьютер "висит", тем он умнее!


Отправлено: 16:16, 22-11-2012 | #8


Модератор


Moderator


Сообщения: 16844
Благодарности: 3247

Профиль | Сайт | Отправить PM | Цитировать


Michael Mikhail, начиная с Office 2007 книги с макросами нужно сохранять в формате "... с поддержкой макросов". В "Центре управления безопасности нужно разрешить выполнение макросов" (выбирайте на свой вкус). Теперь по коду.
Target - Определяем выделенную ячейку
Цитата Michael Mikhail:
значение ячейки A1 (либо диапазона ячеек, либо любой ячейки листа) »
если для любой ячейки листа, то код менять не нужно. Если нужно выбрать диапазон ячеек, в котором после введения числа будут добавляться комментарии, измените восьмую строчку кода на такую
Код: Выделить весь код
If Not IsEmpty(Target.Value) And Not Application.Intersect(Target, Range("A1:C10")) Is Nothing Then
и меняйте значение диапазона в функции Application.Intersect(Target, Range("A1:C10"))
В данном примере комментарии будут добавляться, если будут меняться значения в ячейках диапазона "A1:C10".
Дальше понятно?
Цитата Michael Mikhail:
Воспользовался приведённой Вами командой Cstr. Чем принципиально отличается Ваш код от моего? »
Функция Cstr преобразует переменную в текстовую. Можете попробовать без нее...
Отличие моего кода - в форматировании примечания и в некоторых командах, которые ускоряют работу, например, функции листа не пересчитываются (в коде же есть пояснения).

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Последний раз редактировалось okshef, 22-11-2012 в 23:07.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:19, 22-11-2012 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата okshef:
Код: Выделить весь код
…Not Application.Intersect(Target, Range("A1:C10")) Is Nothing
»
Интересная конструкция, надо запомнить.

Отправлено: 19:43, 22-11-2012 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2007 - Формула в примечание Excel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - формула в шаблоне Excel Busla Microsoft Office (Word, Excel, Outlook и т.д.) 2 14-09-2011 12:33
Java - Вычислительная формула Opium___ Программирование и базы данных 0 07-12-2010 11:10
Разное - [решено] Одна и та же формула считает по разному в Excel и PHP Artem-Samsung Программирование и базы данных 1 21-10-2010 18:39




 
Переход