Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2009, 18:19   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
Восклицание О формулах и примечаниях

Уважаемые профи,
возможно ли сделать следующее:
при нажатии на некоторую комбинацию клавиш в данной ячейке для формулы появляется текст из примечания (сначала идет знак =, как для всех формул) , дальше его можно редактировать, а затем по нажатию еще одной комбинации введенная формула появляется в примечании без проверки на правильность ввода согласно синтаксису Эксела? После этого сама ячейка остается пустой, либо если там было какое-то значение или текст, сохраняется.
motorway вне форума Ответить с цитированием
Старый 01.07.2009, 23:51   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Конечно, возможно.

Назначьте этому макросу нужное сочетание клавиш:
Код:
Sub test()
    On Error Resume Next
    txt = InputBox("Введите формулу для примечания", "Странный макрос :)", "=")
    ActiveCell.Comment.Delete
    If txt <> "" Then
        'ActiveCell.AddComment "Моя формула:" & vbLf & txt
        ActiveCell.AddComment("Моя формула:" & vbLf & txt).Shape.Fill.ForeColor.SchemeColor = 3
    End If
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 02.07.2009, 00:01   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Спасибо, но немного не так нужно:
допустим, в примечании у нас был текст "A1+3" (именно это я имел в виду здесь под формулами в примечании, т.е. названия ячеек). Нужно при нажатии на клавишу, чтобы становилась активной сама ячейка, как при вводе формулы, т.е. как будто сейчас пишешь эту формулу - и появляется "=A1+3". Далее после завершения ввода по нажатию комбинации проверка правильности формулы не проводится, а введенный текст попадает в примечание вместо старого. Можете так сделать?
Можно по какой-то незанятой комбинации сделать активной ячейку и по другой незанятой комбинации записать измененную формулу.

Последний раз редактировалось motorway; 02.07.2009 в 00:10.
motorway вне форума Ответить с цитированием
Старый 02.07.2009, 00:28   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Можно по Ctrl+1 сделать активной ячейку
Смотря что под этим понимать.
Что активно на момент запуска макроса? Примечание?
Или надо поставить перевести ячейку в режим редактирования? (как при вводе любого символа в ячейку, или нажатии F2)
Сделать-то это можно, но в Вашем случае это не поможет.

Цитата:
Далее после завершения ввода по нажатию комбинации проверка правильности формулы не проводится, а введенный текст попадает в примечание вместо старого.
Не знаю, возможно ли вообще отключить проверку корректности введённой формулы.
Пробовал, но не получилось.
В любом случае (даже если это получится), формула затрёт старое значение в ячейке.
Его, конечно, можно запомнить перед запуском макроса, но, как мне кажется, надо искать другой способ решения проблемы.

Дело в том, что когда ячейка находится в режиме редактирования, Excel перестаёт реагировать на внешние раздражители (макросы, и т.п.)
А проверка формул встроена в Excel, и она в любом случае запустится (перехватить нажатие Enter по завершению ввода формулы в ячейку не получится, а это необходимо, чтобы не допустить попадание неправильной формулы в ячейку)

Проверку отдельных ошибок в формулах отключить можно - для этого используется свойство Application.ErrorCheckingOptions
Но, тем не менее, это не позволит ввести в ячейку абсолютно любой текст вместо формулы. (например, не получится без лишних вопросов ввести в ячейку символы =" )

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

Есть и другой вариант - при запуске макроса рисовать поверх ячейки текстовое поле (под размер выделенной ячейки)
С виду это будет выглядеть примерно так, будто бы редактирование осуществляется непосредственно в самой ячейке.

Зачем Вам вообще всё это нужно?
EducatedFool вне форума Ответить с цитированием
Старый 02.07.2009, 00:44   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Я имел в виду все это делать для активной ячейки.
Нужно для того, что мне нужно хранить для каждой ячейки формулы, которые могут быть отличны от синтаксиса Эксела или их м.б. несколько. Но при этом нужно иметь возможность быстрого изменения формулы, в том числе изменения названий ячеек в формуле с возможностями Эксела (ввод названия при нажатии мышкой).
Если просто их писать в формуле, будет ошибка.
Т.е. нельзя программно сделать, чтобы Эксел запомнил введенную в строку формулу, а далее как будто пользователь нажал Отмена, но при этом формула переместилась в примечание?

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

Последний раз редактировалось motorway; 02.07.2009 в 01:29.
motorway вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
адресация в формулах andrewx Microsoft Office Excel 2 29.06.2009 17:44
корректное отображение импортированных данных в формулах Excel petrov_ja Помощь студентам 1 03.03.2009 00:27
Логические подстановки в формулах/функциях vprima Microsoft Office Excel 5 16.02.2009 16:42
Автозамена в формулах debilder Microsoft Office Excel 1 10.02.2008 02:57