注册 登录
编程论坛 VB6论坛

报错“子程序或函数不存在”

一池子墨水 发布于 2017-03-13 20:48, 951 次点击
Private Sub ns(arr As Variant)
  Dim l As Long, i As Long, j As Long
  For i = 0 To UBound(arr)
   For j = i + 1 To UBound(arr)
    If a(i) < a(j) Then
     Call nc(a(i), a(j))
     End If
    Next j
  Next i
  
For l = 0 To UBound(arr)
 Debug.Print arr(l)
 Next l
End Sub


Private Sub nc(a, b)
 Dim num As Integer
 num = a
 a = b
 b = num
End Sub


Private Sub Command1_Click()
Dim myarr As Variant
 myarr = Array(45, 68, 120, 31)
 Call ns(myarr)
End Sub
3 回复
#2
风吹过b2017-03-13 22:02
   If a(i) < a(j) Then
     Call nc(a(i), a(j))

这个a是从哪里冒出来的?
#3
wds12017-03-15 09:06
Private Sub ns(arr As Variant)
  Dim l As Long, i As Long, j As Long
  For i = 0 To UBound(arr)
   For j = i + 1 To UBound(arr)
    If arr(i) < arr(j) Then
     Call nc(arr(i), arr(j))
     End If
    Next j
  Next i
  
For l = 0 To UBound(arr)
 Debug.Print arr(l)
 Next l
End Sub


Private Sub nc(a, b)
 Dim num As Integer
 num = a
 a = b
 b = num
End Sub


Private Sub Command1_Click()
Dim myarr As Variant
 myarr = Array(45, 68, 120, 31)
 Call ns(myarr)
End Sub
#4
ZHRXJR2017-03-15 11:23
程序代码:
Dim myarr As Integer    '定义为整型数据更加合理,并且只能在通用部分定义

Private Sub ns(arr As Integer)
  Dim l As Long, i As Long, j As Long
  For i = 0 To UBound(myarr) - 1     'For i = 0 To UBound(arr)  数组 myarr 在其他过程调用,不能使用过程变量 arr
   For j = i + 1 To UBound(myarr)    'For j = i + 1 To UBound(arr)   同上
    If myarr(i) < myarr(j) Then      'If a(i) < a(j) Then    a(i) 与 a(j) 数组没有定义,不能使用
     Call nc(myarr(i), myarr(j))     'Call nc(a(i), a(j))    同上   '
     End If
    Next j
  Next i
  Me.Show
For l = 0 To UBound(arr)

 Debug.Print arr(l)

 Next l
End Sub

Private Sub nc(a, b)   '这个过程实际就是排序,将 myarr(i) 与 myarr(j) 分别传递给 a 与 b
Dim num As Integer

 num = a

 a = b

 b = num
End Sub

Private Sub Command1_Click()

 myarr = Array(45, 68, 120, 31)   '为 myarr 数组赋值
Call ns(myarr)    '调用 ns 过程
End Sub

1