数组循环,内部比较和条件删除数组中的项目

时间:2014-05-01 08:35:08

标签: vba loops ms-access access-vba nested-loops

我在VBA中遇到过我自己用户定义类型的元素数组。

类型如下:

Type CommentInfoStruct
REF As String ' a reference for an item, usually a single letter
NB As Long ' number of items
COMMENT As String ' comment on item, eg "This item needs special paint colour"
End Type

基本上我需要做的是循环遍历数组,并检查是否有两个项目COMMENT匹配的项目。如果他们匹配,我需要将这两个项目合并为一个:

项目A: REF="A" NB=2 COMMENT="Special colour"

项目B: REF="B" NB=3 COMMENT="Special colour"

新项目(存储在项目A的先前索引中,项目B现已从数组中删除): REF="A/2,B/3" NB=5 COMMENT="Special colour"

最干净的方法是什么?我已经搜索过,似乎找不到删除数组元素的简单方法,觉得我必须遗漏一些东西。同时跟踪我尝试编写的循环的限制似乎很棘手(因为数组在循环中变红)。

1 个答案:

答案 0 :(得分:0)

保持一个以数组ubound开头的计数器 遍历每个条目。如果找到要组合的两个,请执行此操作,然后将最后一个数组条目移动到刚刚与另一个组合的位置。
现在从总计数器中减去一个。阵列仍然有更多的条目,但你的计数器在这里是重要的 最后一步是将数组重新标注为比之前更少的数量。

AR(1)= A
AR(2)= B
AR(3)= C
AR(4)= B
AR(5)= d

结合4和2,将5移动到4左侧的位置 现在可以通过redim preserve ar(4)

删除Spot 5