crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> VBA: как же правильно вызывать фнкции и подпрограммы?
Litkevich Yuriy
  опции профиля:
сообщение 27.5.2013, 20:57
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


С горем пополам состряпал свой класс (оказывается не нужно его описывать, а только то, что в него входит).
вот такой код в классе есть:
Public Sub setName(name As String)
    m_name = name
End Sub
Public Sub setDesignator(des As String)
    m_designator = des
End Sub
Public Sub addAssembly(asm As YAssembly)
    
End Sub
Public Sub addPart(part As YPart)
    
End Sub
и никак я не могу врубится, как методы (функции,...) правильно вызывать.
Сейчас у меня компилится только вот так:
assembly.setDesignator (m_sheet.Cells(m_line, COLUMN_DESIGNATOR)) ' со скобками !!!
rootAssembly.addAssembly assembly ' без (!!!) скобок
не понятно, когда скобки надо писать, а когда - нет.


Пока у меня была только одна намётка, если объявлена функция, которая ничего не возвращает, вот так:
Public Function currentLevel(id As String)
' ...
End Function
то вызывать её надо без скобок, вот так:
obj.currentLevel someString
иначе компилироваться не будет
А если функция объявлена, как возвращающая значение:
Public Function isSubItem(id As String) As Boolean
' ...
End Function
то нужно аргументы обязательно в скобки брать:
obj.isSubItem(someString)



Может кто-то прояснит?
П.П.С.
справку забанили (в ней вечно какие-то ошибки ЯваСкрипт)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.5.2013, 10:39
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


насколько я помню, указание аргументов без скобок - это лишь один из способов передать параметр. То есть, всегда можно как обычно, со скобками передать

нашёл :
http://www.askit.ru/custom/vba_office/m3/0..._parameters.htm

Цитата
Можно продемонстрировать компилятору VBA, что то, что возвращает функция, наш совершенно не интересует. Для этого достаточно не заключать ее параметры в круглые скобки. Например, в случае со встроенной функцией MsgBox это может выглядеть так:

MsgBox "Test"

а для нашей функции —

fSum 3, 2

Такой код будет работать совершенно нормально. Однако, если нам потребуется все-таки узнать, что возвращает MsgBox, то придется передаваемые ему параметры заключать в круглые скобки:

nTest = MsgBox("Test")

Для многих встроенных функций компилятор VBA в принципе не дает возможности игнорировать возвращаемое значение, заставляя помещать параметры в круглые скобки и принимать возвращаемое значение.


почему только интерпретатор компилятором там обозвали :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.5.2013, 12:22
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


в моём первом сообщении, второй блок кода компилируется только в указанном виде, если я уберу скобки в первой строке или добавлю во второй - всё приплыли ("Compile error")
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.5.2013, 12:25
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


ну какая-то хитрость ещё есть, значит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 4:22