Как передать значения даты в массиве в коллекцию? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть массив в виде:

["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

Где дата будет диапазоном дат с включенными дубликатами.

Это странно, потому что:

  • Я проверил UBound (дата) и результат был 12
  • Я получил доступ к MsgBox date_duplicates_removed (3) и получил значение.
  • x делает приращение к правильному результату.

Я не могу получитьMsgBox для печати всех уникальных дат и только первой.

1 Ответ

0 голосов
/ 21 октября 2019

Я думаю, это то, как вы используете массив, и / или Date():

Sub t()
Dim myDates() As Variant
Dim date_duplicates_removed As New Collection
myDates = Array("1/1/2019", "1/2/2019", "1/2/2019")
Dim x As Long

On Error Resume Next
For x = 0 To UBound(myDates)
    date_duplicates_removed.Add myDates(x), CStr(myDates(x))
Next x
End Sub

Возвращает правильно для меня:
enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...