Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / параметры функции / 11 сообщений из 11, страница 1 из 1
06.07.2004, 12:33:26
    #32591056
mift
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Можно ли в VBA в качестве параметра функции передавать другую функцию?
...
Рейтинг: 0 / 0
06.07.2004, 12:39:28
    #32591084
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
да
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
XTblAtr(MyCat, CStr(MyVar),  1 )
..
Public Function XTblAtr(MyCat As Object, tblName As String, NumPar As Long) As String
Select Case NumPar
Case  1 
XTblAtr = MyCat.Tables(tblName).Properties("Jet OLEDB:Link Datasource")
Case  2 
XTblAtr = MyCat.Tables(tblName).Properties("Jet OLEDB:Remote Table Name")
End Select
End Function
...
Рейтинг: 0 / 0
06.07.2004, 12:40:51
    #32591095
Shubnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Конечно можно
...
Рейтинг: 0 / 0
06.07.2004, 12:48:12
    #32591124
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Что нужно передать - результат обращения к функции или ссылку на адрес функции?
...
Рейтинг: 0 / 0
06.07.2004, 12:54:42
    #32591148
mift
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
2 Владимир Саныч
ссылку на адрес функции.

То есть такая проблема:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Function UserFunc() - имя и тело функции варьируется
     ...
End Function

Private Function LibraryFunc( здесь как-то передать имя (адрес) функции UserFunc)
     ...
    Call UserFunc
End Function
...
Рейтинг: 0 / 0
06.07.2004, 13:04:34
    #32591183
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Вот что-то похожее:
/topic/21001

Я сам никогда не пробовал.
...
Рейтинг: 0 / 0
06.07.2004, 14:55:25
    #32591514
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Mift2 Владимир Саныч
ссылку на адрес функции.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Function UserFunc() - имя и тело функции варьируется
     ...
End Function

Private Function LibraryFunc( здесь как-то передать имя (адрес) функции UserFunc)
     ...
    Call UserFunc
End Function


А имя не подойдет?
Можно передать имя и далее Eval - и все в шоколаде
...
Рейтинг: 0 / 0
06.07.2004, 15:18:46
    #32591584
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Таки да. Просто надо будет весь вызов вместе с параметрами составить как стринг.
...
Рейтинг: 0 / 0
06.07.2004, 19:39:36
    #32592234
mift
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
О, спасибо.
...
Рейтинг: 0 / 0
06.07.2004, 19:41:58
    #32592239
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Боюсь, там будет много ограничений. Например, я не знаю, будут ли распознаны имена переменных.
...
Рейтинг: 0 / 0
07.07.2004, 21:44:32
    #32594302
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
Можно и так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function UserFunc() 
     MsgBox "Public Function UserFunc()"
End Function

Private Function LibraryFunc( strUserFuncName as String)
    Application.Run strUserFuncName
End Function
 
Private Sub TestLibraryFunc()
    Call LibraryFunc("UserFunc")
End Sub

В метод Run можно передавать до 30 аргументов для исполняемой функции, типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function UserFunc(intNumer As Integer, dtmDate As Date)
     MsgBox "Public Function UserFunc()" & Str(intNumer) & " " & Format(dtmDate, "hh:nn")
End Function

Private Function LibraryFunc(strUserFuncName As String, Arg1 As Variant, Arg2 As Variant)
    Application.Run strUserFuncName, Arg1, Arg2
End Function
 
Private Sub TestLibraryFunc()
    Call LibraryFunc("UserFunc",  2 , # 7 : 15 : 00  PM#)
End Sub

Только исполняемая функция "UserFunc" должна быть объявлена как Public.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / параметры функции / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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