Visual Basic 3.0 Does Not Pass Parameters by Reference
Article ID: 106642
Article Last Modified on 8/16/2005
APPLIES TO
- Microsoft Word 6.0 Standard Edition
- Microsoft Word 6.0a
- Microsoft Word 6.0c
- Microsoft Word 95 Standard Edition
This article was previously published under Q106642
SUMMARY
Using a Microsoft Visual Basic 3.0 application, you cannot pass parameters
"by reference." Visual Basic passes all parameters "by value."
Note: This is not a limitation of OLE Automation but of Visual Basic
version 3.0. Visual Basic version 4.0 supports passing parameters by
reference.
WORKAROUND
The quickest way to workaround this limitation is to surround the
parameter being passed with parantheses, "()". For example:
Word.FileOpen A$
passes the parameter by reference (default). Changing the command to:
Word.FileOpen (A$)
forces the parameter to be passed by value. This will return the evaluated
value.
MORE INFORMATION
When a value is passed as an argument to a subroutine by value, a copy
of the data is passed to the subroutine. If the subroutine should
alter the data, the variable in the calling subroutine will go
untouched since it is working with copy of the data.
If a variable is passed as an argument to a subroutine by reference,
the subroutine and the calling subroutine actually share the same
variable. If the subroutine should alter the variable, the variable in
the calling subroutine will also be altered. This is the default
mechanism Word uses for parameter passing.
Additional query words: 6.0 ole automation word object word6 7.0 word95 winword container position visual basic vb word7
Keywords: KB106642