| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:新手请教,有关变量作用域的问题
只看楼主 加入收藏
kgvc3421515
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-1
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
新手请教,有关变量作用域的问题
我的问题是关于变量作用域的。
下面程序是华氏温度于摄氏温度的相互转化程序,已经运行成功。
原先是在两个按钮事件里分别定义变量,由于好奇想看一下若用同一变量会是什么结果,但是居然没有出错。如下,f是我所定义的过程级变量,为何command1和command2两个不同的过程中都可用到f呢,不是和它是过程级变量的作用域相矛盾么?希望解答一下我的疑惑。
Private Sub Command1_Click()
Dim f As Double
f = Trim(Text1.Text)
c = (f - 32) * 5 / 9
Text2.Text = c
End Sub

Private Sub Command2_Click()
Dim c As Double
f = Trim(Text2.Text)
c = f * 9 / 5 + 32
Text1.Text = c
End Sub

Private Sub Text1_Click()
Text2.Text = ""
End Sub

Private Sub Text2_Click()
Text1.Text = ""
End Sub


搜索更多相关主题的帖子: 变量 
2010-04-01 22:14
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:6 
Private Sub Command1_Click()
Dim f As Double
Dim c As Double
f = Trim(Text1.Text)
c = (f - 32) * 5 / 9
Text2.Text = c
End Sub

Private Sub Command2_Click()
Dim f As Double
Dim c As Double
f = Trim(Text2.Text)
c = f * 9 / 5 + 32
Text1.Text = c
End Sub

无知
2010-04-02 11:55
kgvc3421515
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-1
收藏
得分:0 
以下是引用Artless在2010-4-2 11:55:06的发言:

Private Sub Command1_Click()
Dim f As Double
Dim c As Double
f = Trim(Text1.Text)
c = (f - 32) * 5 / 9
Text2.Text = c
End Sub
 
Private Sub Command2_Click()
Dim f As Double
Dim c As Double
f = Trim(Text2.Text)
c = f * 9 / 5 + 32
Text1.Text = c
End Sub
对,我原先就是这么编的,后来改成我那样,结果运行也同样成功了。很奇怪啊。
2010-04-02 11:58
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
Private Sub Command1_Click()
f = Trim(Text1.Text)
c = (f - 32) * 5 / 9
Text2.Text = c
End Sub

Private Sub Command2_Click()
f = Trim(Text2.Text)
c = f * 9 / 5 + 32
Text1.Text = c
End Sub

那这样也行了。

无知
2010-04-02 11:59
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:6 
你把这一句加到 所有代码之前第一行去试试

Option Explicit

-------------------------------
VB规定,没有上面这行命令时,变量不要求强制定义.
当你使用 f 时,但 f 没有定义,那么在这种情况下,
f 被默认定义为
dim f as Variant

所以你的程序也可以运行.



授人于鱼,不如授人于渔
早已停用QQ了
2010-04-02 12:01
kgvc3421515
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-1
收藏
得分:0 
以下是引用Artless在2010-4-2 11:59:39的发言:

Private Sub Command1_Click()
f = Trim(Text1.Text)
c = (f - 32) * 5 / 9
Text2.Text = c
End Sub
 
Private Sub Command2_Click()
f = Trim(Text2.Text)
c = f * 9 / 5 + 32
Text1.Text = c
End Sub
 
那这样也行了。
问题是我的f是在command1中定义的,command2中用的是command1定义的f
2010-04-02 12:06
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
command2中的f不是command1定义的f

无知
2010-04-02 12:08
kgvc3421515
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-1
收藏
得分:0 
以下是引用风吹过b在2010-4-2 12:01:16的发言:

你把这一句加到 所有代码之前第一行去试试

Option Explicit

-------------------------------
VB规定,没有上面这行命令时,变量不要求强制定义.
当你使用 f 时,但 f 没有定义,那么在这种情况下,
f 被默认定义为
dim f as Variant

所以你的程序也可以运行.
我明白了,谢谢啊。
2010-04-02 12:47
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:6 
vb里如果不在设置里选上强制定义,或者不在首行写上Option Explicit。
变量不需要声明就可以使用,默认类型是Variant 。
2010-04-03 21:11
快速回复:新手请教,有关变量作用域的问题
数据加载中...
 
   



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

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