Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Использование своей функции в ячейках Excel / 10 сообщений из 10, страница 1 из 1
28.08.2007, 12:07:22
    #34757473
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
написал в вба екселя такую функцию:
Код: plaintext
1.
2.
3.
4.
5.
Public Function NameForNomber()
Dim NomStr As Long, NomRoom As Long
NomRoom = ActiveCell.Row
NomStr = Worksheets("Лист3").Cells.Find(What:=ActiveCell.Offset( 0 , - 2 ).Value, LookIn:=xlValues).Row
ActiveCell.Value = Worksheets("Лист3").Cells(NomRoom,  2 ).Value
End Function
если ее из вба вызывать - работает. а я ее в ячейки хочу пихать.
в виде формулы: =NameForNomber

не выходит. пишет: #ИМЯ?
Как это можно сделать?
...
Рейтинг: 0 / 0
28.08.2007, 12:10:40
    #34757491
Rampage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
Compositumнаписал в вба екселя такую функцию:
Код: plaintext
1.
2.
3.
4.
5.
Public Function NameForNomber()
Dim NomStr As Long, NomRoom As Long
NomRoom = ActiveCell.Row
NomStr = Worksheets("Лист3").Cells.Find(What:=ActiveCell.Offset( 0 , - 2 ).Value, LookIn:=xlValues).Row
ActiveCell.Value = Worksheets("Лист3").Cells(NomRoom,  2 ).Value
End Function
если ее из вба вызывать - работает. а я ее в ячейки хочу пихать.
в виде формулы: =NameForNomber

не выходит. пишет: #ИМЯ?
Как это можно сделать?
у себя попытался ... мб у тебя скобок не хватает
=NameForNomber()

а так, у меня тоже выдает #Name .. ток у меня эксел, англ.
...
Рейтинг: 0 / 0
28.08.2007, 12:11:52
    #34757502
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
Код: plaintext
1.
2.
3.
4.
5.
6.
Public Function NameForNomber() As String
Dim NomStr As Long, NomRoom As Long
NomRoom = ActiveCell.Row
NomStr = Worksheets("Лист3").Cells.Find(What:=ActiveCell.Offset( 0 , - 2 ).Value, LookIn:=xlValues).Row
'ActiveCell.Value = Worksheets("Лист3").Cells(NomRoom, 2).Value
NameForNomber = Worksheets("Лист3").Cells(NomRoom,  2 ).Value
End Function
вызов:
=NameForNomber()
все. заработало.
____________________________________________________________
З.Ы. Юзаю Аксесс 2003СП2.
...
Рейтинг: 0 / 0
20.11.2007, 14:01:27
    #34951879
tolikt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
Функция не работает.
Завожу правильно: =NameForNomber()
В ActiveCell.Offset(0, -2) значение есть, реальное.
Лист Worksheets("Лист3") тоже есть.
Выдаётся #ЗНАЧ!. При пошаговом прохождении вылетает на строке с Find.

Или это всё из-за Excel 97?
...
Рейтинг: 0 / 0
20.11.2007, 14:05:50
    #34951906
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
toliktФункция не работает.
Завожу правильно: =NameForNomber()
В ActiveCell.Offset(0, -2) значение есть, реальное.
Лист Worksheets("Лист3") тоже есть.
Выдаётся #ЗНАЧ!. При пошаговом прохождении вылетает на строке с Find.
Или это всё из-за Excel 97?
не знаю. у меня 2003 и 2007. все работало.
...
Рейтинг: 0 / 0
20.11.2007, 15:26:28
    #34952335
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
Код: plaintext
1.
2.
3.
4.
5.
Public Function NameForNomber(ByVal Target As Range)
    clm = Target.Column
    trw = Target.Row
    tvl = Target.Value
    ' и так далее
End Function
а в ячейках так
ABCDE123=NameForNomber(A1)4

попробуй
...
Рейтинг: 0 / 0
21.11.2007, 09:09:14
    #34953994
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
Дело в том, что ты пытаешься изменить ActiveCell.Value. В пользовательских функциях многие операции ограничены, в том числе изменение ячеек на листе, в том числе их форматирования.
...
Рейтинг: 0 / 0
21.11.2007, 15:27:21
    #34955665
tolikt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
В коде от Compositum никаких изменений ActiveCell.Value не происходит.
Дело всё в методе Find. Например, не работает более простая формула типа
Код: plaintext
1.
2.
Public Function MyFunction()
MyFunction = Worksheets("Лист1").Cells.Find(What:="MyString", LookIn:=xlValues).Row
End Function
Естественно, Лист "Лист1" и на нём строка "MyString" существуют.

Кроме того, в Function не работают некоторые другие методы. Например SpecialCells(xlLastCell) не работает (но и ошибки не выдаёт), а типа ActiveSheet.UsedRange.Rows.Count работает.

По совету Compositum попробовал код с Find на другом Excel, а именно Excel 2003. И (О, ужас!), код заработал.
Теперь меня терзают смутные сомнения. То ли дело на самом деле в Excel 97, то ли в каких-то его конкретных настройках.
...
Рейтинг: 0 / 0
21.11.2007, 15:33:59
    #34955685
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
toliktО, ужас!
ну что же тут ужасного? =))))) давно пора переходить на более новую версию софта. мне пришлось перейти на 2007 по ряду причин. одна из них - ячейка в екселе 2003 не смогла вместить в себе всю формулу.... в то время как в 2007-м все влезло и заработало... вот так вот... =)
...
Рейтинг: 0 / 0
25.01.2008, 16:47:03
    #35088439
LETME
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование своей функции в ячейках Excel
Compositum toliktО, ужас!
одна из них - ячейка в екселе 2003 не смогла вместить в себе всю формулу.... в то время как в 2007-м все влезло и заработало...

...мегопипец! Даеш бесграничные формулы в новых версиях Иксель! ))
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Использование своей функции в ячейках Excel / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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