MyFunction
- класс, определенный в Module1
библиотеке; вы можете найти его в обозревателе объектов (F2):
Публика Function
в стандартном модуле - это просто функция, которая может быть вызвана из ячейки листа (при условии, что она не имеет побочных эффектов ), так же, как и из любого места в проекте VBA книги: вы не можете написать код VBA что «становится членом» класса, определенного в библиотеке, на которую вы ссылаетесь.
Поэтому, если у вас есть функция, вызываемая в вызываемом модуле , вы можете вызвать ее следующим образом:foo = MyFunction(args)
foo = Module1.MyFunction(args)
t = t_value(theta)
Или вот так:
Sub
Итак, в этом случае:
ByRef
Было бы проще просто поместить формулу в Sub t_value ( theta как вариант , ByRef t как Variant ) Dim theta_1 As Integer , theta_2 As Integer Dim A As Variant , B As Variant , s As Variant theta_1 = Application . Рабочий лист . Этаж ( тета , 5 ) theta_2 = Приложение . Рабочий лист . Потолок ( тета , 5 ) = тета - theta_1 B = theta_2 - theta_1 S = / B T = S «## Присвоить значение к ByRef 'т' переменная и она должна сохранять свое значение в вызывающей процедуре End Sub ?
Нет, потому что a Sub
не вернет значение (однако вы можете передавать переменные Public
):
sub
Если вы решите поместить эту функцию в модуль ( Public
) или в модуль формы пользователя, это дизайнерское решение, зависящее от того, хотите ли вы, чтобы функция была вообще доступна вне экземпляра формы. Если вы решите сделать эту функцию a sub
немного другой - я бы, вероятно, рекомендовал против нее следовать общей рекомендации, что функции должны возвращать значения, а подпрограммы должны просто выполнять действия и / или манипулировать объектами.