目录
1 VBA里sub和function的3种调用方式
1.1 调用函数的多种写法
- function()
- call function()
1.2 执行过程的多种写法
- sub 1个参数
- sub 参数1 参数2(错误)
- call sub (1个参数)
- call sub (参数1,参数2)
- appcaiton.run sub
1.3 application.run
1.4 还有一种调用方法
- 就是用函数名=结果,这样给函数设定返回值
- VBA里没有return,可以这样返回值
- 并且如果多层套用
- 这样不同于call 的调用,call只是运行了函数,并不会把自身返回值返回给上层调用他的函数,如果希望上层调用他的函数也有返回值,就需要再上层函数也写返回值,类return
- 如下面的例子
function testf1(a,b)
test1=a+b
end function
function testf2(a,b)
tets2= testf1(a,b)
end function
1.5 还有一种调用方法
- 无意义的套一层是可以的
- 本质和1.4是一样的
function testf1()
end function
function testf2()
call testf1()
end function
function testf1(a,b)
test1=a+b
end function
function testf2(a,b)
tets2= testf1(a,b)
end function
2 代码实测各种调用方式
- sub / function
- call sub /function
- application.run
Sub test1001()
Debug.Print func1001(100, 99)
test1002 11
Call test1002(11)
Call test1003(1000, 999)
Debug.Print Application.Run("test1002", 111)
End Sub
Sub test1002(m)
Debug.Print m * m
End Sub
Sub test1003(x, y)
Debug.Print x + y
End Sub
Function func1001(a, b)
func1001 = a + b
End Function
2 VBA过程,函数的返回,对比python等
- python的函数一定会返回,函数带return 不带默认会返回 return none
- VBA的function也是一定有返回值把,至少是none
- VBA的sub 没有返回值
- 返回的方式不同
- python 的function 可以使用 return返回
- VBA的function 直接让 function_name = xxxx 这样返回
- 并且VBA的sub不能返回值,sub_name=xxxx 会报错