返回Visual Basic中具有空值的数组中的最小数字

时间:2013-06-18 16:11:26

标签: vba reporting-services reportingservices-2005

我写了一个函数,它返回通过SSRS输入的8个数值的最小值。

问题是不总是有8个值,当没有时我在SSRS中收到错误。我认为这是因为我正在提供函数空值

我从未使用过VB,是否有人可以向我展示一个解决方案?

使用的代码如下 在这里输入代码

Function minimumReading(reading0 as String
                        ,reading1 as String 
                        ,reading2 as String
                         ...    7 as String)

Dim     a(7) as String
        a(0) = reading0
        a(1) = reading1
        ...
        a(7) = reading7
Dim max as string
    Dim min as string

max = a(3)
min = a(3)

Dim i as integer

for i = Lbound(a) to Ubound(a)
    if a(i) < min Then min = a(i)
next i

minimumReading =  min

End Function` 

提前致谢

1 个答案:

答案 0 :(得分:2)

您是否需要将8个值作为单独的参数传递?创建一个找到数组最小值的函数(可能已经存在)将是更好的形式(也更容易维护长期运行)

如果你必须按照设置的方式使用它,你可以使用这个

Dim a() As String
ReDim a(0 To 0)
Dim i As Long
If reading0 <> vbNullString Then
    a(UBound(a)) = reading0
End If
If reading1 <> vbNullString Then
    ReDim Preserve a(LBound(a) To (UBound(a) + 1))
    a(UBound(a)) = reading1
End If
If reading2 <> vbNullString Then
    ReDim Preserve a(LBound(a) To (UBound(a) + 1))
    a(UBound(a)) = reading2
End If
...

我的建议是重构您的代码。