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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2009, 02:28   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
Смех Функция наподобие Т()

Реально ли сделать функцию наподобие Т() в Экселе, которой можно передавать несколько аргументов через точку с запятой (чтобы в них при вводе адреса ячеек воспринимались как адреса, а не просто текст), которая просто будет возвращать введенную строку?

=Ф(A1+3+b; B2=3+A; C3<4) -> выводит A1+3+b; B2=3+A; C3<4 в ячейку.
motorway вне форума Ответить с цитированием
Старый 08.07.2009, 12:21   #2
mc-black
Пользователь
 
Аватар для mc-black
 
Регистрация: 03.06.2009
Сообщений: 26
По умолчанию

Укажите параметр функции As Range. Пример пользовательской функции с диапазоном:
Код:
Public Function Т9(diapazon As Range) As String
    Т9 = diapazon.Address
End Function
mc-black вне форума Ответить с цитированием
Старый 08.07.2009, 12:43   #3
mc-black
Пользователь
 
Аватар для mc-black
 
Регистрация: 03.06.2009
Сообщений: 26
По умолчанию

P.S. Важное уточнение! Название функции Т9 с кириллической буквой Т, чтобы не было ошибки.
mc-black вне форума Ответить с цитированием
Старый 08.07.2009, 16:52   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Спасибо, а не могли бы Вы сделать файл с этой функцией? Что-то не пойму, как ее сделать
motorway вне форума Ответить с цитированием
Старый 08.07.2009, 17:02   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Что-то не пойму, как ее сделать
А что именно не получается?
Или Вы опять ждёте готовое решение?

Код:
Function T9(ParamArray Ячейки())
    For i = LBound(Ячейки) To UBound(Ячейки)
        T9 = T9 & Ячейки(i).Address & " "
    Next i
End Function

Sub test9()
    MsgBox T9([a2], [s3], [d5:g7])
End Sub
Код:
Function T10(ParamArray Параметры())
    T10 = Join(Параметры, "; ")
End Function

Sub test10()
    MsgBox T10("A1+3+b", "B2=3+A", "C3<4")
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 08.07.2009, 18:31   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Не понятно, куда это вставлять, и как потом вызывать функцию? Просто test9()?
motorway вне форума Ответить с цитированием
Старый 08.07.2009, 18:36   #7
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Может быть, я неправильно объяснил, но нужна пользовательская функция, т.е. такая, которую можно писать в формуле в ячейках Эксела. Напр., =Т9(A1+3; AC25=100; b+5<3) выводит весь этот текст в ячейку после ввода формулы. При этом нужно распознавание названий ячеек, чтобы они не воспринимались просто как текст
motorway вне форума Ответить с цитированием
Старый 08.07.2009, 18:39   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Может быть, я неправильно объяснил, но нужна пользовательская функци
А это что, по-Вашему?

Если бы Вы потратили хоть пару минут на изучение пользовательских функций, то не спрашивали бы, куда это вставляется...

А вставлять надо в стандартный модуль.
EducatedFool вне форума Ответить с цитированием
Старый 08.07.2009, 18:42   #9
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

А потом можно будет вызывать из ячеек? Мне нужно использовать обе Ваши функции? Или они одинаковые по смыслу?
motorway вне форума Ответить с цитированием
Старый 08.07.2009, 18:45   #10
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Проблема в том, что нужно именно вызывать из ячеек, и чтобы аргументы были именно в таком стиле: =Т9(A1+3; AC25=100; b+5<3) - через точку с запятой и переменные типа b (не назв. ячеек) не вызывали ошибок
Либо можно использовать функцию Т(), но как-то сделать возможность автозаполнения, и чтобы при изм. адреса ячеек в формуле они автоматически изменялись

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание интерпретатора формул наподобие Excel-я x8i Microsoft Office Access 0 13.05.2009 15:49
Посоветуйте бесплатную программу наподобие Robosoft-а. G&R Софт 0 28.01.2009 14:03
Функция ZiLi Microsoft Office Excel 1 05.09.2008 18:37
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50