Microsoft Visual Basic, ошибка времени выполнения 424: требуется объект - PullRequest
0 голосов
/ 29 сентября 2018

так что я знаю, что об этой ошибке снова и снова спрашивали, но я не смог найти ту, которая повторяла бы мою проблему.

В рабочей тетради PERSONAL.XLSB объявлено следующее, поэтому я легко могу использовать макрос в разных проектах.Ошибка начала появляться, когда я добавил второй блок If в цикле for, обратите внимание, что этот макрос работал как ожидалось до вышеупомянутого добавления.

Sub AddNote()
Dim Dict As New Scripting.Dictionary
Dict.Add "101-104", "Includes 101, 102, 103, 104"
Dict.Add "061, 071", "Includes 061, 071"
Dict.Add "076, 077, 081", "Includes 076, 077, 081"
Dict.Add "111, 112, 113, 221, 222", "Includes 111, 112, 113, 221, 222"
Dict.Add "111, 112, 221, 222", "Includes 111, 112, 221, 222"
Dict.Add "111-115, 221, 222", "Includes 111, 112, 113, 114, 115, 221, 222"
Dict.Add "101-104 Early", "Includes 101, 102, 103, 104"
Dict.Add "101-104 Late", "Includes 101, 102, 103, 104"
Dict.Add "101-104 Mid", "Includes 101, 102, 103, 104"
Dict.Add "111-115, 221, 222 Early", "Includes 111, 112, 113, 114, 115, 221, 222"
Dict.Add "111-115, 221, 222 Late", "Includes 111, 112, 113, 114, 115, 221, 222"
Dict.Add "161-164", "Includes 161, 162, 163, 164"
Dict.Add "161-164 Early", "Includes 161, 162, 163, 164"
Dict.Add "161-164 Late", "Includes 161, 162, 163, 164"
Dict.Add "131, 132", "Includes 131, 132"
Dict.Add "062, 064, 066-068", "Includes 062, 064, 066, 067, 068"
Dict.Add "078, 104, 105-107", "Includes 078, 104, 105, 106, 107"
Dict.Add "104, 108, 121", "Includes 104, 108, 121"
Dict.Add "231, 241, 242", "Includes 231, 241, 242"
Dict.Add "072, 074", "Includes 072, 074"
Dict.Add "231, 241, 242 Early", "Includes 231, 241, 242"
Dict.Add "231, 241, 242 Late", "Includes 231, 241, 242"
Dict.Add "114, 115", "Includes 114, 115"

Dim Rng As Range
Dim ws1 As Worksheet
Set ws1 = Sheets("BY HUNT")
Set Rng = ws1.Range("A2:A162")
For Each cell In Rng
    If Dict.Exists(VBA.Trim(cell)) Then
        ws1.Range("AA" & cell.Row).Value = Dict.Item(VBA.Trim(cell.Value))
    End If

    If VBA.Trim(cell.Value) Like "*Early*" Then
        wsl.Range("Z" & cell.Row).Value = "Early"
    ElseIf VBA.Trim(cell.Value) Like "*Late*" Then
        wsl.Range("Z" & cell.Row).Value = "Late"
    ElseIf VBA.Trim(cell.Value) Like "*Mid*" Then
        wsl.Range("Z" & cell.Row).Value = "Mid"
    Else
        wsl.Range("Z" & cell.Row).Value = "All"
    End If

Next cell

End Sub

Я не слишком опытен с VBA, но я прочитал другие вопросы, которые я нашел здесь, связанные с моим, и ни один из них не принес плодов.Я не понимаю, почему я мог бы возиться со значением в первом операторе if, но во втором я получаю ошибку, упомянутую в заголовке.Отладка указывает на строку в предложении else, если я удаляю эту, отладка просто указывает на другую строку в этом втором блоке if.Любое направление будет высоко ценится.



Редактировать: перемещение этого макроса в рабочую книгу не устранило ошибку

1 Ответ

0 голосов
/ 29 сентября 2018

Добавьте Option Explicit в начало вашего модуля и перекомпилируйте.У вас есть опечатки в именах переменных.ws1 против wsl

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