在Function里不能改写窗体变量内容吗?

hisungao 2013-08-08 02:54:35
学着用Function来做,但怎么里面不能改变窗体变量内容吗?我在通用-->声明下定义了一个串口号,然后在Function里根据需要希望能改变使用的串口,但出了Function返回来后,Serport的内容又成了原来的值而不是在调用中被改变的值了,为什么在Function里不能改变窗体变量值呢?
Dim Serport As Integer
Function Serport_test(ByVal port As String)
Serport = Porttmp(i) '在这里能看到已经将希望的串口号给过去了.
End Function
...全文
143 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hisungao 2013-08-09
  • 打赏
  • 举报
回复
Serport我就只在那里面得到想用的串口号,但出来功能就为空,监视确又是我想要的串口号.我把它该成另外一个名字就可以用了,不知道究竟是怎么回事.而且不管声明为Dim还是Public结果都是一样的.
of123 2013-08-09
  • 打赏
  • 举报
回复
如果仅仅是同一窗体的通用段变量,没道理不能改:
Option Explicit

Dim i As Integer

Private Sub add()
    i = i + 1
End Sub

Private Sub Command1_Click()
add
End Sub

Private Sub Command2_Click()
MsgBox i
End Sub
如果是其他窗体的变量,则必须声明为 Public。 如果还牵扯到串口设置,就另当别论。看看你改变串口设置之前是否关闭了串口。
hisungao 2013-08-09
  • 打赏
  • 举报
回复
引用 6 楼 u010990791 的回复:
详细请看以下示例. 我是否在function 中重新申明了 Dim Serport As Integer 之类的.
Dim a As Single
Private Sub Command1_Click()
Serport_test
MsgBox a 'a=0
End Sub

Function Serport_test()
'Dim a As Single '取消这句,上面才上1
a = 1
End Function
还真的不知道啥时候自己在里面添了个,自己离得还好远啊...
  • 打赏
  • 举报
回复
详细请看以下示例. 我是否在function 中重新申明了 Dim Serport As Integer 之类的.
Dim a As Single
Private Sub Command1_Click()
Serport_test
MsgBox a 'a=0
End Sub

Function Serport_test()
'Dim a As Single '取消这句,上面才上1
a = 1
End Function
舉杯邀明月 2013-08-08
  • 打赏
  • 举报
回复
引用 1 楼 hisungao 的回复:
我用监视所有过程的时候显示Serport是被给了我希望了的号码,但只要出来Function功能后,虽然监视中是正确的值但实际上确是空的,不论是将它赋给别的变量还是将鼠标放到变量上给出的提示都是空的,请问这是为什么啊?将它改成Public也是一样的结果.
楼主没注意“作用域”的问题吧! 你的 Dim Serport As Integer 那么 Serport 只能在对应的 Form 中使用才有效的。 如果你在其它地方要用,要在标准模块中声明成全局变量。
贝隆 2013-08-08
  • 打赏
  • 举报
回复
比如,你的窗体是Form1,那么你应该这样写:Form1.xxx 这个xxx就是你的串口控件的名称
hisungao 2013-08-08
  • 打赏
  • 举报
回复
我用监视所有过程的时候显示Serport是被给了我希望了的号码,但只要出来Function功能后,虽然监视中是正确的值但实际上确是空的,不论是将它赋给别的变量还是将鼠标放到变量上给出的提示都是空的,请问这是为什么啊?将它改成Public也是一样的结果.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧