Arrays 查找一维数组的大小

Arrays 查找一维数组的大小,arrays,vba,excel,excel-2010,Arrays,Vba,Excel,Excel 2010,sub调用一个函数,该函数依次执行填充并返回一个数组。问题是我需要知道我的潜艇中该阵列的大小。是否有一条快速线来查找该阵列的大小?我知道我可以用一点钱来做,但这似乎是不必要的。 事情是这样的: Sub innout(lastupdate As Long, lrcr As Long) Dim numclosed As Long, numnew As Long Dim lblvar As Variant Dim tblcr As Range Dim finishdates As Range Dim

sub调用一个函数,该函数依次执行填充并返回一个数组。问题是我需要知道我的潜艇中该阵列的大小。是否有一条快速线来查找该阵列的大小?我知道我可以用一点钱来做,但这似乎是不必要的。 事情是这样的:

Sub innout(lastupdate As Long, lrcr As Long)

Dim numclosed As Long, numnew As Long
Dim lblvar As Variant
Dim tblcr As Range
Dim finishdates As Range
Dim msg As Long
Dim resp As String, ops() As Long, cps() As Long
Dim i As Long

    listallsupv

'do stuff...
end sub



Function listallsupv() As String()

Dim las() As String

Dim lrs As Long
Dim i As Long, j As Long, r As Long
Dim supervsheet As Worksheet

Set supervsheet = Sheets("Superviseurs")

lrs = supervsheet.Range("A1").Offset(supervsheet.Rows.count - 1, 0).End(xlUp).Row

ReDim las(1 To lrs) As String

i = 1

For r = 2 To lrs
    For j = 1 To i
        If supervsheet.Range("B" & r).Value = las(j) Then
            GoTo nextj
    End If
    Next
    las(i) = supervsheet.Range("B" & r).Value
    i = i + 1
nextj:
Next

ReDim Preserve las(1 To i)

End Function

谢谢

啊,我找到了。我只是在我的原始sub中创建了这个数组,并调用另一个sub来通过引用填充它,adnn还返回长度。谢谢你,蒂姆,一开始我都没注意到

Sub innout(lastupdate As Long, lrcr As Long)

Dim i As Long
Dim las() As String

Call populate_las(las(), i)

'bla bla

End Sub


Sub populate_las(ByRef las() As String, ByRef i As Long)

Dim lrs As Long
Dim j As Long, r As Long
Dim supervsheet As Worksheet

Set supervsheet = Sheets("Superviseurs")

lrs = supervsheet.Range("A1").Offset(supervsheet.Rows.count - 1, 0).End(xlUp).Row

ReDim las(1 To lrs) As String

i = 1

For r = 2 To lrs
    For j = 1 To i
        If supervsheet.Range("B" & r).Value = las(j) Then
            GoTo nextj
    End If
    Next
    las(i) = supervsheet.Range("B" & r).Value
    i = i + 1
nextj:
Next

ReDim Preserve las(1 To (i - 1))

End Sub

再次感谢

你说的尺寸可能是指长度?如中所示,项目数量。尝试UBoundlas。和LBound..,您需要确保。las在sub中不存在。我需要在sub中执行此操作。因此,假设i=uboundListalSuperv?lowerbound始终为1。但是Ubound行的syntak是多少?size=uboundarr lboundarr+1,您需要从函数listalsupv=las返回数组