powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / (Excel) передать контекст в пользовательскую функцию
9 сообщений из 9, страница 1 из 1
(Excel) передать контекст в пользовательскую функцию
    #33421836
Leon.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Excel 2002, пытаюсь написать свою функцию, для пересчета данных в ячейке на листе.
Код: plaintext
1.
Public Function MyFunc(ByVal val As Variant) As Boolean
End Function
Как среди аргументов этой функции передавать не только само значение ячейки, но и положение ее на листе? Номер или имя листа?

т.е. использовать не ActiveCell и ActiveSheet, которые могут потом неправильно пересчитаться при вызове CalculateFull? Что посоветуете?
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33421920
Leon.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подумал, что можно объявлять свою функцию по-другому:
Код: plaintext
1.
2.
Public Function MyFunc(ByVal rng As Excel.Range) As Boolean
End Function
т.е. передавать не значение, а выделенную область. А для получения значения ячейки использовать rng.Text
Правильным ли будет такой подход? Вроде все работает?
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33422699
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имя листа можно так получить
Код: plaintext
1.
2.
Public Function MyFunc(ByVal rng As Excel.Range) As Boolean
  MsgBox rng.Worksheet.Name
End Function
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33422778
Leon.Правильным ли будет такой подход?
А почему бы и нет. По-моему это как раз то, что тебе нужно.
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33426018
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leon.т.е. передавать не значение, а выделенную область. А для получения значения ячейки использовать rng.Text
Правильным ли будет такой подход? Вроде все работает?
Самым правильным. Только для получения значения ячейки лучше все-таки использовать rng.Value
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33426130
spectre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl
Только для получения значения ячейки лучше все-таки использовать rng.Value

Полностью согласен! Из некоторого опыта работы могу сказать, что свойство Value использовать более надежно, т.к. это гарантирует, что вы будете анализировать именно значение, а не то, что у вас в данный момент записано в поле Text, а там, как показывает все тот же некоторый опыт, может находиться вообще все что угодно.
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33426948
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаете, свойство "Text" просто так придумано?



Иногда нужен именно текст... дата/время, например...
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33429716
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с этим свойством (text) действительно осторожнее, например, если колонка заужена, то вместо даты время можно получить "####"
...
Рейтинг: 0 / 0
(Excel) передать контекст в пользовательскую функцию
    #33429972
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это уже обсуждалось на форуме. Недавно, с моей подачи. :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / (Excel) передать контекст в пользовательскую функцию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]