VB 怎么 在自定义函数中,返回多个值?请举例说明
答案:2 悬赏:20 手机版
解决时间 2021-03-31 15:55
- 提问者网友:棒棒糖
- 2021-03-31 12:22
VB 怎么 在自定义函数中,返回多个值?请举例说明
最佳答案
- 五星知识达人网友:执傲
- 2021-03-31 12:40
不定义全局变量,根本不可能做到的你的要求。
你用Sub就必须要定义全局公有变量。
★:专业定制各种小软件,小型数据管理操作系统
★:包售后 1 年(不含新增功能),6×18小时服务。实时解决问题!追问是可以的啊
你看仔细看我题目。以前用过的,但就是想不起来。
不用定义变量,也不用像1楼那样的形貌返回的。追答我以6年的VB程序员经验告诉:
没有!
@评论者 自定义类型也是要全局定义的啊?不是吗?
我好像知道你的意思了。是这样吧
Private Type mytype
c As Double
s As Double
End Type
Private Function SubN(r As Double) As mytype
SubN.c = 2 * 3.14 * r
SubN.s = 3.14 * r ^ 2
End Function
Private Sub Command1_Click()
MsgBox SubN(6).s
End Sub追问哦,我知道了
你用Sub就必须要定义全局公有变量。
★:专业定制各种小软件,小型数据管理操作系统
★:包售后 1 年(不含新增功能),6×18小时服务。实时解决问题!追问是可以的啊
你看仔细看我题目。以前用过的,但就是想不起来。
不用定义变量,也不用像1楼那样的形貌返回的。追答我以6年的VB程序员经验告诉:
没有!
@评论者 自定义类型也是要全局定义的啊?不是吗?
我好像知道你的意思了。是这样吧
Private Type mytype
c As Double
s As Double
End Type
Private Function SubN(r As Double) As mytype
SubN.c = 2 * 3.14 * r
SubN.s = 3.14 * r ^ 2
End Function
Private Sub Command1_Click()
MsgBox SubN(6).s
End Sub追问哦,我知道了
全部回答
- 1楼网友:痴妹与他
- 2021-03-31 13:41
Sub 按钮1_Click()
Dim 周长 As Double, 面积 As Double, 半径 As Double
周长 = 0
面积 = 0
半径 = 15#
Call SubN(周长, 面积, 半径)
MsgBox 周长 & " " & 面积
End Sub
Sub SubN(ByRef 周长参数, ByRef 面积参数, ByVal 半径参数)
If 半径参数 < 0 Then
周长参数 = 0
面积参数 = 0
Else
周长参数 = 2 * 3.14 * 半径参数
面积参数 = 3.14 * 半径参数 * 半径参数
End If
End Sub
以上代码是在Excel的VBA中调试的,可以满足的要求。追问可以不带参数吗后面两个参数吗?只传递过去一个半径值
引用时,
msgbox subN(r) 就能得到结果追答
如果只是要msgbox subN(r)就能得到结果:Sub 按钮1_Click()
Dim 半径 As Double
半径 = 15#
MsgBox SubN(半径)
End Sub
Function SubN(ByVal 半径参数) As String
Dim 周长参数 As Double, 面积参数 As Double
周长参数 = 0
面积参数 = 0
If 半径参数 < 0 Then
周长参数 = 0
面积参数 = 0
Else
周长参数 = 2 * 3.14 * 半径参数
面积参数 = 3.14 * 半径参数 * 半径参数
End If
SubN = "周长=" & 周长参数 & " " & "面积=" & 面积参数
End Function追问返回值不要自己分割,要返回来就是两个值,两个变量追答
1、Function返回数组Private Sub Command1_Click()
Dim 半径 As Double
半径 = 15#
Dim 结果
结果 = SubN(半径)
MsgBox 结果(0) & " " & 结果(1)
End Sub
Function SubN(ByVal 半径参数 As Double) As Double()
Dim 周长参数 As Double, 面积参数 As Double
Dim 结果参数(1) As Double
周长参数 = 0
面积参数 = 0
If 半径参数 < 0 Then
周长参数 = 0
面积参数 = 0
Else
周长参数 = 2 * 3.14 * 半径参数
面积参数 = 3.14 * 半径参数 * 半径参数
End If
结果参数(0) = 面积参数
结果参数(1) = 周长参数
SubN = 结果参数
End Function
2、Sub中传入一个参数,在Sub内修改全局变量Public 周长 As Double
Public 面积 As Double
Private Sub Command1_Click()
Dim 半径 As Double
半径 = 15#
Call SubN(半径)
MsgBox 周长 & " " & 面积
End Sub
Sub SubN(ByVal 半径参数)
If 半径参数 < 0 Then
周长 = 0
面积 = 0
Else
周长 = 2 * 3.14 * 半径参数
面积 = 3.14 * 半径参数 * 半径参数
End If
End Sub
Dim 周长 As Double, 面积 As Double, 半径 As Double
周长 = 0
面积 = 0
半径 = 15#
Call SubN(周长, 面积, 半径)
MsgBox 周长 & " " & 面积
End Sub
Sub SubN(ByRef 周长参数, ByRef 面积参数, ByVal 半径参数)
If 半径参数 < 0 Then
周长参数 = 0
面积参数 = 0
Else
周长参数 = 2 * 3.14 * 半径参数
面积参数 = 3.14 * 半径参数 * 半径参数
End If
End Sub
以上代码是在Excel的VBA中调试的,可以满足的要求。追问可以不带参数吗后面两个参数吗?只传递过去一个半径值
引用时,
msgbox subN(r) 就能得到结果追答
如果只是要msgbox subN(r)就能得到结果:Sub 按钮1_Click()
Dim 半径 As Double
半径 = 15#
MsgBox SubN(半径)
End Sub
Function SubN(ByVal 半径参数) As String
Dim 周长参数 As Double, 面积参数 As Double
周长参数 = 0
面积参数 = 0
If 半径参数 < 0 Then
周长参数 = 0
面积参数 = 0
Else
周长参数 = 2 * 3.14 * 半径参数
面积参数 = 3.14 * 半径参数 * 半径参数
End If
SubN = "周长=" & 周长参数 & " " & "面积=" & 面积参数
End Function追问返回值不要自己分割,要返回来就是两个值,两个变量追答
1、Function返回数组Private Sub Command1_Click()
Dim 半径 As Double
半径 = 15#
Dim 结果
结果 = SubN(半径)
MsgBox 结果(0) & " " & 结果(1)
End Sub
Function SubN(ByVal 半径参数 As Double) As Double()
Dim 周长参数 As Double, 面积参数 As Double
Dim 结果参数(1) As Double
周长参数 = 0
面积参数 = 0
If 半径参数 < 0 Then
周长参数 = 0
面积参数 = 0
Else
周长参数 = 2 * 3.14 * 半径参数
面积参数 = 3.14 * 半径参数 * 半径参数
End If
结果参数(0) = 面积参数
结果参数(1) = 周长参数
SubN = 结果参数
End Function
2、Sub中传入一个参数,在Sub内修改全局变量Public 周长 As Double
Public 面积 As Double
Private Sub Command1_Click()
Dim 半径 As Double
半径 = 15#
Call SubN(半径)
MsgBox 周长 & " " & 面积
End Sub
Sub SubN(ByVal 半径参数)
If 半径参数 < 0 Then
周长 = 0
面积 = 0
Else
周长 = 2 * 3.14 * 半径参数
面积 = 3.14 * 半径参数 * 半径参数
End If
End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯