vba:循环用户定义的数据类型

时间:2018-05-04 08:36:46

标签: vba excel-vba excel

我有这些元素:

Type Posizione
    Name As String
    Position As Byte
End Type
Public Location() as Posizioni

我想在最小的posizione()。valore和最大的一个之间循环。

我尝试过:

For i = LBound(Location().position) To UBound(Location().position)

但我在这个位置收到“无效资格赛”。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您的数组是变量Location,因此您必须将其用作lboundubound的参数

For i = LBound(Location) To UBound(Location)
    Location(i).position = i
    Location(i).Name = "Hello " & i
Next i

答案 1 :(得分:1)

在迭代它们之前,您必须找到最小值和最大值。这样的事情会做到这一点:

Dim PosMin As Byte
Dim PosMax As Byte

PosMin = 255
PosMax = 0
For i = LBound(Location) To UBound(Location)
    If Location(i).Position > PosMax Then
        PosMax = Location(i).Position
    End If
    If Location(i).Position < PosMin Then
        PosMin = Location(i).Position
    End If
Next
For i = PosMin To PosMax
    Debug.Print i
Next i