VBA中方法傳參

2022-07-17 19:45:12 字數 3453 閱讀 6204

將變數做為引數傳遞給方法

1

subtest()

2dim a as

integer

3 a = 1

4add a

5 debug.print a '引用傳遞,a的值發生了變化,

輸出101

6end sub78

function add(a as

integer

)9 a = a + 100

10end function

結論:vb傳參時預設是引用傳遞byref。

使用byval關鍵字強制形參為值傳遞

1

subtest()

2dim a as

integer

3 a = 1

4add a

5 debug.print a '值傳遞,a的值沒有變化,

輸出16

end sub78

function add(byval a as

integer

)9 a = a + 100

10end function

呼叫乙個有返回值函式

1

subtest()

2dim a as

integer

3 a = 1

4dim sum as

integer

5 sum =add(a)

6 debug.print sum '引用傳遞,

輸出101

7end sub89

function add(a as

integer) as

integer

10 add = a + 100

11end function

認識「()」

1

subtest()

2dim a as

integer

3 a = 1

4add (a)

5 debug.print a 'a的值沒有變化,

輸出16

end sub78

function add(byref a as

integer) as

integer

9 a = a + 100

10end function

解釋:

1、add只有乙個引數,並且是「過程式呼叫」方式的時候,vbe「偷偷」把**自動改為了add   (a)。注意,add和(a)之間有個「空格」

2、()在此有完全不同的意義,可以理解它是乙個運算子。(a)生成了乙個臨時變數,a的乙個副本,然後將這個臨時變數(a)傳遞給add

3、a本身並沒有傳遞給add方法,所以a的值並不會有任何變化。

將乙個陣列做為引數傳遞給方法:

1

subtest()

2dim arr(2) as

integer

3 arr(0) = 1

4 arr(1) = 2

5 arr(2) = 367

showarray arr

8dim i as

integer

9for i = 0to2

10 debug.print arr(i) '

輸出101,102,103

11nexti12

end sub

1314

function showarray(arr() as

integer)15

dim i as

integer

16for i = 0to2

17 arr(i) = arr(i) + 100

18nexti19

end function

和()有關的乙個常見錯誤和保留問題:

1

subtest()

2dim arr(2) as

integer

3 arr(0) = 1

4 arr(1) = 2

5 arr(2) = 3

67 showarray (arr) '

編譯時報錯:缺少陣列或使用者定義型別

8dim i as

integer

9for i = 0to2

10debug.print arr(i)

11nexti12

end sub

1314

function showarray(arr() as

integer)15

dim i as

integer

16for i = 0to2

17 arr(i) = arr(i) + 100

18nexti19

end function

編譯報錯:缺少陣列或使用者定義型別,除了()生成了乙個臨時變數之外,與此有關的原因暫不明。。

如果形參是arr而不是arr()

1

subtest()

2dim arr(2) as

integer

3 arr(0) = 1

4 arr(1) = 2

5 arr(2) = 367

showarray (arr)

8dim i as

integer

9for i = 0to2

10 debug.print arr(i) '

輸出1,2,3

11nexti12

end sub

1314

function

showarray(arr)

15dim sum as

integer, i as

integer

16for i = 0to2

17 arr(i) = arr(i) + 100

18nexti19

end function

《簡單搞懂Java中方法傳參的方式》

三句話簡單總結 1 傳物件 傳引用 2 傳基本資料型別 傳值 3 像string integer 等 immutable 不可變 型別因為沒有提供自身修改的函式,每次修改都是新生成乙個物件,所以要特殊對待,此時可以認為是傳值。ps 不可變類 所謂的不可變類是指這個類的例項一旦建立完成後,就不能改變其...

jQuery click 方法傳參

今天寫東西,要在jquery 的.click方法裡傳參,查閱了一下jquery的官方文件,做了下實驗和總結 原諒我的前端 是用一點學一點!1.click handler 版本的.click,handler function 型別 只要事件被觸發,就會執行該function 2.click event...

React todolist例子 傳參傳方法

分三個元件 父元件 index.jsx 和兩個子元件 addlist.jsx,todolist.jsx 父元件傳子元件的方法有兩個 第一種 props方式 傳值如 data是父類constructor 傳方法如 子類開始呼叫 傳值 this.props.fffsss就能獲取值 傳方法 this.pr...