Отладка списка фильтров - PullRequest
0 голосов
/ 28 января 2020

У меня проблемы с отладкой созданной мной процедуры. У меня более 2 тысяч рабочих книг, которые я пытаюсь отфильтровать.

Я передаю этой функции словарь, ключом которого является путь к файлу и имя, а элементом является номер детали 9 di git и номер редакции. Основываясь на пути к папке и номеру детали, я пытаюсь отфильтровать старые номера ревизий.

Я получаю сообщение об ошибке:

Ошибка времени выполнения '10':

Этот массив исправлен или временно заблокирован

Отладчик останавливается на линии: For Each VKey02 In DUnsorted.Keys. Переменные подсчета отладки k1 и k2 заканчиваются значениями 39 и 1 соответственно на cra sh.

Любые предложения о том, как решить эту проблему, будут оценены.

Примечание: Я включил ссылку " Microsoft Scripting Runtime " для этого кода для работы по назначению.

Option Explicit

Function HighestRev(ByVal DUnsorted As Scripting.Dictionary) As Scripting.Dictionary
    Dim DSorted As Scripting.Dictionary
    'Keys
    Dim VKey01 As Variant
    Dim VKey02 As Variant
    Dim SKey01 As String
    Dim SKey02 As String
    'Items
    Dim SItem01 As String
    Dim SItem02 As String
    'SKUs
    Dim LSKU01 As Long
    Dim LSKU02 As Long
    'Revs
    Dim IRev01 As Long
    Dim IRev02 As Long
    'File Name
    Dim SName01 As String
    Dim SName02 As String
    'File Path
    Dim SPath01 As String
    Dim SPath02 As String

    'Debug Variables
    Dim k1 As Integer
    Dim k2 As Integer

    'Initializing
    Set DSorted = DUnsorted

    'Looping Through
    k1 = 0
    For Each VKey01 In DUnsorted.Keys

    k1 = k1 + 1: k2 = 1 '<-- Debug
    If VKey01 = "[A Particular File]" Then
        Debug.Print "1 - " & VKey01
        Debug.Print k1 & " - " & k2
    End If

    SKey01 = VKey01
    If Not DSorted.Exists(SKey01) Then GoTo SkipKey01
    SItem01 = DUnsorted(SKey01)
    LSKU01 = Split(SItem01, "-")(0)
    IRev01 = Split(SItem01, "-")(1)
    SName01 = Split(SKey01, "\")(UBound(Split(SKey01, "\")))
    SPath01 = Left(SKey01, Len(SKey01) - Len(SName01))
        For Each VKey02 In DUnsorted.Keys

        k2 = k2 + 1 '<-- Debug
        If VKey02 = "[A Particular File]" Then
            Debug.Print "2 - " & VKey02
            Debug.Print k1 & " - " & k2
        End If

        SKey02 = VKey02
        If Not DSorted.Exists(SKey02) Then GoTo SkipKey02
        SItem02 = DUnsorted(SKey02)
        LSKU02 = Split(SItem02, "-")(0)
        IRev02 = Split(SItem02, "-")(1)
        SName02 = Split(SKey02, "\")(UBound(Split(SKey02, "\")))
        SPath02 = Left(SKey02, Len(SKey02) - Len(SName02))

            'Identifying Match
            If SKey01 <> SKey02 Then
            If LSKU01 = LSKU02 Then
            If UBound(Split(SPath01, SPath02)) > 0 Or UBound(Split(SPath02, SPath01)) > 0 Then

                'Eliminating Older Revision
                If IRev01 > IRev02 Then
                    DSorted.Remove (SKey02)
                ElseIf IRev01 < IRev02 Then
                    DSorted.Remove (SKey01)
                Else    '<-- Last Modified Priority
                    DSorted.Remove (OlderDate(SKey01, SKey02))
                End If
                If Not DSorted.Exists(SKey01) Then GoTo SkipKey01
            End If
            End If
            End If
SkipKey02:
        Next VKey02
SkipKey01:
    Next VKey01
End Function

1 Ответ

0 голосов
/ 28 января 2020

Ну, на самом деле ошибка последовала за одной из рабочих книг. Я все еще озадачен тем, где в пути к книге и имени файла это вызывает у меня проблему, но сам код теперь работает.

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