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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 20:27   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию Возвращаемое функцией значение = находившемуся в ячейке значению

Как сделать, чтобы функция возвращала значение, находившееся в ячейке до ввода формулы?
motorway вне форума Ответить с цитированием
Старый 12.07.2009, 21:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

??? это как?!! o_0

Допустим, есть ячейка, там написано "КУКУ"
Вы заходите и пишете там =100*2
в ячейке находится формула, которая возращает значение 200 (что мы и видим)... И что нужно получить? "КУКУ" ? Тогда это невозможно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2009, 21:08   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

В ячейке будет пользовательская функция. Так что она может возвращать любое значение. Да, нужно получить, например, "МУМУ", если оно там было. Ведь реально его запомнить куда-то, а потом возвратить.
Или можно так сделать. Возвращать она будет значение аргументов, которое будет перемещаться в примечание, но потом будет вызываться код, который возвратит старое значение. Это реально?
В общем, суть моего вопроса в том, что в ячейках нужно писать формулы и передавать аргументы в качестве параметра в примечание. При этом значение, которое было в ячейке, должно восстанавливаться.

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

Цитата:
В ячейке будет пользовательская функция. Так что она может возвращать любое значение. Да, нужно получить, например, "МУМУ", если оно там было.
Как Вам уже сказал Serge_Bliznykov, это невозможно.

Цитата:
суть моего вопроса в том, что в ячейках нужно писать формулы и передавать аргументы в качестве параметра в примечание. При этом значение, которое было в ячейке, должно восстанавливаться.
Вы сами-то понимаете, что пытаетесь сделать?
Что должно получиться в итоге?

Ваши требования не укладываются в рамки объектной модели Excel.
Недавно Вам уже советовали написать свою версию электронной таблицы наподобие Excel, и уже в своей программе реализовывать свои задумки.
Похоже, пора прислушаться к этому совету...

Цитата:
Или можно так сделать. Возвращать она будет значение аргументов, которое будет перемещаться в примечание, но потом будет вызываться код, который возвратит старое значение. Это реально?
Да всё реально. Только сомневаюсь, что кто-то будет писать для Вас такой код. Больше чем уверен, что Вашу задачу можно решить намного проще, не прибегая к подобным извращениям.
EducatedFool вне форума Ответить с цитированием
Старый 12.07.2009, 22:26   #5
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Может что-нибудь подобное из этого наковыряете:
Вложения
Тип файла: rar Книга1.rar (6.8 Кб, 17 просмотров)
pivas вне форума Ответить с цитированием
Старый 12.07.2009, 22:42   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Цитата:
Вы сами-то понимаете, что пытаетесь сделать?
Что должно получиться в итоге?
Да, понимаю. Суть в том, что у меня в приложении формулы для данной ячейки сохраняются в примечаниях к ячейке. А значения (числа) хранятся в самих ячейках. Допустим, нужно ввести формулу для ячейки A1.
Чтобы убыстрить ввод, это делается с помощью пользовательской функции, позволяющей нажимать мышкой на нужные ячейки, напр. формула будет такой: =Ф(B1+C1). (Можно писать и в самом примечании, но тогда не будет этой возможности нажимать на нужные ячейки).
И вот когда мы пишем формулу, перелетающую потом в примечание, может быть ситуация, что ячейка уже занята некоторым значением.
Нам нужно его сохранить, чтобы после ввода формулы и перелета ее в примечание число для ячейки осталось. Вот и все.
Цитата:
Ваши требования не укладываются в рамки объектной модели Excel.
Недавно Вам уже советовали написать свою версию электронной таблицы наподобие Excel, и уже в своей программе реализовывать свои задумки.
Похоже, пора прислушаться к этому совету...
Я, конечно, понимаю, что у кого-то хорошее чувство юмора, но боюсь, такие таблицы будут делаться лет 20 в одиночку.
Цитата:
Может что-нибудь подобное из этого наковыряете:
Да, принцип мне нужен примерно такой. Ладно, думаю, может помочь сохранение значений в какой-то временной переменной, а далее по событию изм. листа эти значения будут возвращаться на положенное место.

Последний раз редактировалось motorway; 12.07.2009 в 22:45.
motorway вне форума Ответить с цитированием
Старый 14.07.2009, 07:52   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если я правильно понимаю вопрос, то посмотрите пример во вложении.
В ячейку "A1" введена формула. При вводе в эту ячейку какого-либо значения, введенный текст помещается в примечание, а формула в ячейке восстанавливается.
Вложения
Тип файла: rar Книга1.rar (7.1 Кб, 13 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 14.07.2009, 08:42   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

p.s. хотя, хоть убейте меня, не понимаю, ЗАЧЕМ нужны формулы в примечаниях! Они же там явно не рассчитываются...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.07.2009, 08:53   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
я не смотрел приведённый Вами пример... (хотя, догадываюсь, сделано через Worksheet_Change, так? )... хоть убейте меня, не понимаю, ЗАЧЕМ нужны формулы в примечаниях! Они же там явно не рассчитываются...
Вот код, размещенный в модуле требуемого листа:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Address <> [A1].Address Then Exit Sub
        Application.EnableEvents = False
        .ClearComments
        .AddComment
        .Comment.Visible = False
        .Comment.Text Text:=.Value
        .Formula = xxx
        Application.EnableEvents = False
    End With
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = [A1].Address Then xxx = Target.Formula
End Sub
При этом переменная xxx Объявлена в общем программном модуле, как Public xxx As String.
По поводу того, зачем это нужно автору темы, я вообще не задумывался. К тому же, может быть ему нужно совсем не то, что я попытался реализовать.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить максимальное по абсолютному значению число VeseloffS Помощь студентам 17 09.06.2009 23:39
Как прочитать значение, которое отображается в ячейке? viter.alex Microsoft Office Excel 4 22.01.2009 17:13
Выборка строк из таблицы по значению TDBLookupComboBox Gringo БД в Delphi 4 28.10.2008 05:45
Поиск в базе по значению в Edit Arteom БД в Delphi 2 19.10.2007 22:23
как присвоить значение ячейки R1C1 из 1.xls, допустим какой-нибудь любой ячейке из 2.xls ? diabloskrk Microsoft Office Excel 3 08.10.2007 12:27