Vba Microsoft Visual Basic,运行时错误424:需要对象

Vba Microsoft Visual Basic,运行时错误424:需要对象,vba,excel,Vba,Excel,所以我知道这个错误已经被问了一次又一次,但我找不到一个复制我的问题 PERSONAL.XLSB工作簿中声明了以下内容,因此我可以轻松地在不同的项目上使用宏。当我在for循环中添加第二个If块时,错误开始弹出,请注意,在前面提到的添加之前,该宏按预期工作 Sub AddNote() Dim Dict As New Scripting.Dictionary Dict.Add "101-104", "Includes 101, 102, 103, 104" Dict.Add "061, 071", "

所以我知道这个错误已经被问了一次又一次,但我找不到一个复制我的问题

PERSONAL.XLSB工作簿中声明了以下内容,因此我可以轻松地在不同的项目上使用宏。当我在for循环中添加第二个If块时,错误开始弹出,请注意,在前面提到的添加之前,该宏按预期工作

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语句中处理这个值,但是在第二个语句中我得到了标题中提到的错误。Debug指向else子句中的行,如果删除该行,则Debug只指向第二个if块中的另一行。任何方向都将不胜感激。


编辑:将此宏移动到实际工作簿并不能修复错误

选项Explicit
添加到模块顶部并重新编译。变量名中有输入错误
ws1
vs
wsl

Option Explicit
添加到模块顶部并重新编译。变量名中有输入错误
ws1
vs
wsl

这是有效的,还必须明确地将单元格声明为范围。我可以发誓我复制了第一个方法,只是编辑了范围内的值,啊,好的,很好。非常感谢你!这是可行的,还必须显式地将单元格声明为范围。我可以发誓我复制了第一个方法,只是编辑了范围内的值,啊,好的,很好。非常感谢你!我建议不要使用
单元格
作为变量。它太靠近对象
单元格
,很容易造成混淆。也许是myCell或者别的什么。这是一个很好的观点。谢谢你的提醒!我建议不要使用
单元格
作为变量。它太靠近对象
单元格
,很容易造成混淆。也许是myCell或者别的什么。这是一个很好的观点。谢谢你的提醒!