数组作为函数参数的问题
现在一BYTE数组A(25) ,要求写一函数SUM(), 通过此函数 将A数组中连续的某几个元素传入函数,而后将这几个元素的部分连续单元求和 并将结果通过参数F返回
SUMA的实现方式分两种,调用形式分别如下
1、call SUMA(A(),D,E,F) D为求和元素中的第一个元素的索引号,E为求和元素的个数 ,F存放求和结果
1、call SUMA(A(3),8,F) 从A(3)开始的8个单元求和,F存放求和结果 这是调用形式,当然第一个参数也可能是A(5) A(6)等,第二个参数不一定是8,当然也可以是9,10等其他值 。
[解决办法]
Option ExplicitDim A(0 To 19) As IntegerPrivate Sub Command1_Click() Me.Caption = CStr(funSum(A, 3, 10))End SubPrivate Sub Form_Load() Dim intP As Integer For intP = 0 To 19 A(intP) = CInt(Rnd * 100) Next intPEnd Sub'***********************************************************************************************************'过程功能:求和'参数说明:B():源数组' :intA:求和起点' :intB:求和个数'返回说明:返回求和值'***********************************************************************************************************Private Function funSum(ByRef B() As Integer, ByVal intA As Integer, ByVal intB As Integer) As Long Dim intP As IntegerOn Error GoTo errFun funSum = 0 If UBound(B) - LBound(B) = 0 Then Exit Function '数组是空数组,退出函数 If intA < LBound(B) Then Exit Function '求和起点小于数组的下限,不符合要求,退出函数 If (intA + intB + 1) > (UBound(B) - LBound(B) + 1) Then Exit Function '起点+长度超过数组范围,不符合要求,退出函数 For intP = intA To intA + intB - 1 funSum = funSum + B(intP) Next intP Exit FunctionerrFun: funSum = 0End Function
[解决办法]