Поиск последнего элемента Object / ArrayList в Excel VBA - PullRequest
1 голос
/ 10 апреля 2020

Я пытаюсь выяснить, как найти последний элемент в Object / ArrayList. Я получаю либо ошибку несоответствия типов, либо ошибку «Ожидается массив».

Sub GetDates()
    Dim validToDates_ArrayList As Object
    Set validToDates_ArrayList = CreateObject("System.Collections.ArrayList")
    .
    .
    .

    Dim date_key As Variant
    For Each date_key In validToDate_dict.Keys
        validToDates_ArrayList.Add validToDate_dict(date_key)
    Next date_key

    validToDates_ArrayList.Sort

    Dim arraylength As Integer

    arraylength = ArrayLen(validToDates_ArrayList) '<--- Results in type mismatch error

    Dim last_ValidToDate As Date
    last_ValidToDate = validToDates_ArrayList(arraylength)


End sub

Public Function ArrayLen(arr As Variant) As Integer
    ArrayLen = UBound(arr) - LBound(arr) + 1
End Function 

Конечная цель - получить последнюю дату из validToDates_ArrayList, который имеет тип Object / ArrayList. Я предполагаю, что Object / ArrayList не совместим с Ubound, но я не уверен, как это исправить. Любая помощь приветствуется.

1 Ответ

2 голосов
/ 10 апреля 2020

Использование предложения .Count сработало отлично. Фиксированный код ниже:

Sub GetDates()
    Dim validToDates_ArrayList As Object
    Set validToDates_ArrayList = CreateObject("System.Collections.ArrayList")
    .
    .
    .

    Dim date_key As Variant
    For Each date_key In validToDate_dict.Keys
        validToDates_ArrayList.Add validToDate_dict(date_key)
    Next date_key

    validToDates_ArrayList.Sort

    Dim arraylength As Integer

    arraylength = validToDates_ArrayList.Count

    Dim last_ValidToDate As Date
    last_ValidToDate = validToDates_ArrayList(arraylength - 1)


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