VB 一个函数传回多个值

'●用Function当成子程序的一个好处,就是Function本身可以传回一个值到上一层呼叫的子程序里,但问题来了,若为了工作上的需要,想一次传回一个以上的值,那该怎么办?
Private Sub Command1_Click()
MyReturn 5, 6
End Sub
Private Function MyReturn(X, Y) As Long
A = X + Y
B = X - Y
C = X * Y
D = X / Y
'想传回A、B、C、D四个数值回去,怎么写?
End Function
'●这是一个基本的观念问题,子程序与子程序间的传值有ByVal与ByRef两种,ByVal是两个子程序间的传值放在不同的内存位置,而预设的ByRef则是将传值放在同一个内存位置上,故这一点可以拿来利用,可将上式改写成:
Private Sub Command1_Click()
MyReturn 5, 6, Ans1, Ans2, Ans3, Ans4
MsgBox "答案分别是" & Ans1 & "," & Ans2 & "," & Ans3 & "," & Ans4
End Sub
Private Function MyReturn(X, Y, A, B, C, D) As Long
A = X + Y
B = X - Y
C = X * Y
D = X / Y
End Function
'●或是把资料作成Variant型态数组传回:
Private Sub Command1_Click()
Ans = MyReturn(5, 6)
MsgBox "答案分别是" & Ans(0) & "," & Ans(1) & "," & Ans(2) & "," & Ans(3)
End Sub
Private Function MyReturn(X, Y) As Variant
MyReturn = Array(X + Y, X - Y, X * Y, X / Y)
End Function

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您提供一个示例:Sub LeftShiftArray(ByRef arr() As Long, ByVal n As Long) Dim i As Long For i = 0 To UBound(arr) arr(i) = arr((i + n) Mod (UBound(arr) + 1)) Next i End Sub ### 回答2: 可以使用VB语言来编写一个循环左移函数。循环左移是将一个字符串或数组的元素按照指定的位数向左移动,并将超过边界的元素放到数组的末尾。 以下是一个示例的VB代码来实现循环左移函数: ``` Public Function LeftRotate(ByVal input As String, ByVal shift As Integer) As String Dim length As Integer = input.Length shift = shift Mod length '确保位移在有效范围内 Dim rotatedArray(length - 1) As Char '将位移后的元素放入新数组 For i As Integer = 0 To length - 1 '计算新位置 Dim newIndex As Integer = (i + shift) Mod length rotatedArray(i) = input(newIndex) Next Return New String(rotatedArray) End Function ``` 此循环左移函数接受一个字符串input和一个位移shift作为参数,并返回位移后的字符串。函数先计算出实际的位移(对字符串长度取模),然后创建一个新的字符数组rotatedArray用于存储位移后的元素。然后通过循环,将原字符串中的每个元素根据新的位置放入新数组中。最后,将新数组转化为字符串返回。 使用该函数,可以将一个字符串进行循环左移操作: ``` Dim rotatedString As String = LeftRotate("HelloWorld", 2) Console.WriteLine(rotatedString) '输出:lloWorldHe ``` 以上就是一个使用VB语言编写的循环左移函数的示例。 ### 回答3: 要用VB一个循环左移函数,可以使用以下代码实现: ```vb Function LeftShift(inputString As String, shiftCount As Integer) As String Dim resultString As String = "" ' 如果 shiftCount 大于输入字符串的长度,则取 shiftCount 对字符串长度的余数 shiftCount = shiftCount Mod inputString.Length ' 将左移后的结果拼接到结果字符串中 resultString = inputString.Substring(shiftCount) & inputString.Substring(0, shiftCount) ' 返回结果字符串 Return resultString End Function ``` 这个函数接收两个参数:输入字符串 `inputString` 和左移的位数 `shiftCount`。首先,我们将 `shiftCount` 对输入字符串的长度取余,以避免 shiftCount 大于字符串长度的情况。然后,我们将左移后的结果拼接到结果字符串 `resultString` 中,这是通过使用 `Substring` 函数来截取字符串的一部分,并将其重新排列。最后,我们将结果字符串返回给调用者。 例如,如果调用 `LeftShift("abcdef", 2)`,那么函数会将输入字符串 "abcdef" 左移两位,得到 "cdefab",并将其作为结果返回

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值