| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:这里怎么和 ByRef 一样
只看楼主 加入收藏
gdc111
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-10-7
收藏
 问题点数:0 回复次数:5 
这里怎么和 ByRef 一样
Private Sub Command1_Click()
Dim a As Long, m As Long
m = 100
a = 10
mysub1 m, 3   '有参数
mysub1 a     '没有参数
End Sub

Private Sub mysub1(ByVal n As Long, Optional val)   '这里怎么把 ByVal n As Long 改成 ByRef n As Long 效果一样?
n = n + 9
Dim s As String
If IsMissing(val) Then
s = "not pass 没有参数"
Else
s = "ok 有参数"
End If
MsgBox n & "," & s
End Sub
搜索更多相关主题的帖子: ByRef 
2009-10-07 11:41
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
Private Sub mysub1(n As Long, Optional val)     '这里怎么把 ByVal n As Long 改成 ByRef n As Long 效果一样?
2009-10-07 12:30
msgj
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:190
专家分:914
注 册:2009-10-3
收藏
得分:0 
ByVal是传递值,源数据不会被修改,你可以把这个值当作自己的局部变量来使用,ByRef是传递地址,源数据可能被修改,你对这个变量的操作将对你传入的那个变量产生影响,就像指针的感觉。  
看看下面的例子:
Private Sub Command3_Click()
 
A = 1
B = 2

Call AAA(A, B)
Print A, B  '得到的结果是2    3  (形参的改变影响到了实参)
Call BBB(A, B)
Print A, B '得到的结果跟上面的一样,2    3(形参的改变并没有影响到这个实参)
 
End Sub

Sub BBB(ByVal I As Integer, ByVal J As Integer)
I = I + 1
J = J + 1
End Sub
Sub AAA(I As Integer, J As Integer) '默认,则按址传递
I = I + 1
J = J + 1
End Sub
2009-10-07 15:11
superking555
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2006-5-9
收藏
得分:0 
解释的很清楚~!
2009-10-10 16:41
hellowql
Rank: 2
来 自:安徽 合肥
等 级:论坛游民
帖 子:40
专家分:12
注 册:2009-4-25
收藏
得分:0 
支持一下,
2009-10-10 17:52
gdc111
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-10-7
收藏
得分:0 
谢谢。
2009-11-23 16:07
快速回复:这里怎么和 ByRef 一样
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026046 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved