This section provides a tutorial example on how to pass arguments by reference to swap values passed through procedure arguments.
To see how passing arguments by reference works, I wrote the following example, function_swap_by_ref.html:
<html>
<body>
<!-- function_swap_by_ref.html
- Copyright (c) 2015, HerongYang.com, All Rights Reserved.
-->
<pre>
<script language="vbscript">
document.writeln("")
document.writeln("Test 1: Swapping two literals by reference")
document.writeln(" Before Sub: " & "Apple" & " | " & "Orange")
Call SwapByRef("Apple", "Orange")
document.writeln(" After Sub: " & "Apple" & " | " & "Orange")
vFirst = "Dog"
vSecond = "Cat"
document.writeln("")
document.writeln("Test 2: Swapping two variables by reference")
document.writeln(" Before Sub: " & vFirst & " | " & vSecond)
Call SwapByRef(vFirst, vSecond)
document.writeln(" After Sub: " & vFirst & " | " & vSecond)
Sub SwapByRef(ByRef vLeft, ByRef vRight)
vTemp = vLeft
vLeft = vRight
vRight = vTemp
document.writeln(" In Sub: " & vLeft & " | " & vRight)
End Sub
</script>
</pre>
</body>
</html>
Here is the output:
Test 1: Swapping two literals by reference
Before Sub: Apple | Orange
In Sub: Orange | Apple
After Sub: Apple | Orange
Test 2: Swapping two variables by reference
Before Sub: Dog | Cat
In Sub: Cat | Dog
After Sub: Cat | Dog
Here are my notes about this example:
Test 1 shows that data literal can be used for a "ByRef" argument.
By you will not be able to receive the change done by the subroutine.
Test 2 shows that using variable for a "ByRef" argument let us receive the change
done by the subroutine. After the subroutine call, values in vFirst and vSecond have been swapped.