Sub NoParamsCallback(myString as String, [COLOR=blue]gooD [/COLOR]as Boolean)
If myString="OK" Then [COLOR=blue]gooD=True[/COLOR]
End Sub
В чем разница: подпрограмма, процедура, функция
Если не трудно, можно ли пояснить, в чем принципиальная разница между "подпрограммой", "процедурой" и "функцией"? :o
насколько помню.... процедура не возвращает значений, а фукция - возвращает... вроде так...
Код:
Процедура не возвращает значения, но в предыдущем примере это все-таки можно делать ;)
[COLOR=green]Функция:[/COLOR]
Код:
Function [COLOR=blue]IHaveAnswer[/COLOR](TheX as Integer, TheY as Integer) as String
[COLOR=blue]IHaveAnswer[/COLOR]=Str(TheX*TheY)
End Function
[COLOR=blue]IHaveAnswer[/COLOR]=Str(TheX*TheY)
End Function
Функция может возвращать данные.
Подпрограмма:
Код:
.....
If myVar="myVal" Then Gosub 5000
.....
Exit (Sub|Function|Property...)
5000:
MsgBox "Hello from Subroutine!"
.....
return
If myVar="myVal" Then Gosub 5000
.....
Exit (Sub|Function|Property...)
5000:
MsgBox "Hello from Subroutine!"
.....
return
Подпрограмма (Subroutine) - устаревшее... это у меня только вызывает ностальгию.. QBasic на ZX80...По команде GOSUB xxx -выполняется переход управления на строку с меткой ххх. Возврат назад на оператор, следующий после GOSUB (go subroutine)- осуществляется командой RETURN (возврат). Не рекомендуется использовать. Да и зачем, если есть процедуры и функции?. Кстати, если юзать функцию без скобок, то она работает, [COLOR=gray]почти[/COLOR] как процедура :)
То есть можно юзать:
Код:
a=MsgBox("What R U Doin?",vbYesNo)
тогда выдастся сообщение на экран и результат нажатия на кнопку (vbYes/vbNo)-запишется в переменную а.
Но если сделать так:
Код:
MsgBox "I'm Sleepin",vbOkOnly+vbInformation, "Info"
то просто выдастся сообщение, а данные от данной функции здесь даже и нет необходимости записывать, так как ответ будет один и тот же - кнопка-то одна.
P.S. Все мои познания в VB пока ограничиваются VBA'ом, т.е. только в Ворде применяю и совсем немножко в Екселе.
по сути процедура от функции ничем не отличается, а подпрограмма - это устаревшее название которое объединяет и функцию и процедуру. Вобщем разница между ними только в том, что имени функции можно присвоить какое - то значение которое будет возвращено в вызывающий участок кода. А параметры у них могут быть как по ссылке, так и по значению. Хотя в литературе говорится, что параметры функций должны передаваться только по значениям - чтобы функция не могла их изменять а возвращала единственный результат - тоесть через своё имя.
Цитата:
Т.е. из-под Ворда нельзя использовать функции (что, мягко говоря, странно)? В чем тут может быть закавыка?
В том, что MS Word при помощи "экранных кнопок" и "горячих клавиш" вызывает макросы, которые представлены в виде фрагмента кода без параметров и результата
Код:
Sub Macros1
///
End sub
///
End sub
Действия макроса производятся над глобальными объектами типа ActiveDocument (понятно без перевода), Selection (выделенный фрагмент текста) и т.д.
Цитата: Dmitry2064
Т.е. из-под Ворда нельзя использовать функции :eek: (что, мягко говоря, странно)? В чем тут может быть закавыка?
Конечно что можно! В том и сила VBA! В экселе например, они очень аппликабельны. Да и не только