【发布时间】:2019-10-22 12:43:18
【问题描述】:
我有一个数组形式:
["1/1/2019", "1/2/2019", "1/2/2019"]
我遍历数组中的每个元素并将结果添加到集合中,目的是在打印之前删除重复项。
VBA 仅将第一个元素添加到我的集合中。
例如我目前的输出是:
"1/1/2019"
代替:
"1/1/2019","1/2/2019"
这是我的相关代码:
Dim a_date() As Variant
Dim date_duplicates_removed As New Collection
Dim j As Long
j = 0
ReDim a_date(Range(date_range).Cells.Count)
For Each r In ThisWorkbook.Worksheets("Name").Range(date_range)
a_date(j) = r.Value
j = j + 1
Next r
On Error Resume Next
For x = 0 To UBound(a_date)
date_duplicates_removed.Add a_date(x), CStr(a_date(x))
MsgBox (date_duplicates_removed(x))
Next x
其中 date 是包含重复项的日期范围。
这很奇怪,因为:
- 我检查了 UBound(date),结果是 12
- 我访问了 MsgBox date_duplicates_removed(3) 并获得了一个值。
- x 确实会增加到正确的结果。
我无法让 MsgBox 打印所有唯一日期,只有第一个日期。
【问题讨论】:
-
你能做到
Dim date() as Variant吗?据我所知,Date()是 VBA 中的保留字...另外,您是否缺少一些代码,您在哪里输入数组? -
对不起,我更改了我的实际变量名称以简化代码。我实际上并没有使用“日期”。我还更新了我的问题以包含我输入数组的代码。