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