Vba 在命名范围中查找匹配的单元格值

Vba 在命名范围中查找匹配的单元格值,vba,excel,Vba,Excel,我试图在excel工作簿.vba中的命名区域中找到匹配的单元格值。我知道我要查找的值,也知道范围的名称,当我第一次运行代码时,代码运行没有问题,但在第二次使用新的范围名称运行时,我得到一个错误 我尝试了两种不同的方法来搜索命名范围,两种方法的结果都是相同的错误。错误是:对象“\u Global”的方法“Range”失败 我尝试的初始代码是: 我不确定我在这里做错了什么。请帮助。我认为问题在于.Find的After:=参数。尝试更改参数后的值:=.Cells1.谢谢大家!我发现了这个问题。这是修剪

我试图在excel工作簿.vba中的命名区域中找到匹配的单元格值。我知道我要查找的值,也知道范围的名称,当我第一次运行代码时,代码运行没有问题,但在第二次使用新的范围名称运行时,我得到一个错误

我尝试了两种不同的方法来搜索命名范围,两种方法的结果都是相同的错误。错误是:对象“\u Global”的方法“Range”失败

我尝试的初始代码是:


我不确定我在这里做错了什么。请帮助。

我认为问题在于.Find的After:=参数。尝试更改参数后的值:=.Cells1.

谢谢大家!我发现了这个问题。这是修剪说明。由于SheetsPLC I-O.Cellsi,2.value中有多个空格,我需要使用一个自定义函数来确保删除所有空格。

这段代码的目的是什么?我只是略读了一下,但有可能你甚至不需要VBA吗?例如,内置公式vlookup、countifs等可能足够了?您在哪里设置了RangerngCardsName?如果rngCardsName是范围的实际名称,而不是可变的表SPLC I-O.RangerngCardsName,而不仅仅是RangerngCardsName,您可能希望使用RangerngCardsName=TrimSheetsPLC I-O.Cellsi,2.value&Cards返回有效的范围名称。
'march through the list of racks
For i = iFirstRackRow To iLastRackRow
    iCurrRackSize = Sheets("PLC I-O").Cells(i, 6).value
    iHardwareIndexEnd = iHardwareIndex + iCurrRackSize - 1
    rngCardsName = Trim(Sheets("PLC I-O").Cells(i, 2).value & "Cards")
    'march through the rack hardware
    For j = iHardwareIndex To iHardwareIndexEnd
        modCardSize = 0

        'march through each card in the rack
        For Each zCell In Range(rngCardsName)
            If zCell = Sheets("PLC I-O").Cells(j, 2) Then
                modCardSize = Sheets("Links").Cells(zCell.Row, zCell.Column + 1).value
                Exit For
            End If
        Next zCell

        If modCardSize <> 0 Then
            'io module matched
            NumRows = NumRows + modCardSize
        Else
            'processor or adapter module found
            NumRows = NumRows + 1
        End If
    Next
    iHardwareIndex = iHardwareIndex + iCurrRackSize
Next
Dim rngFoundCell As Range
    With Range(rngCardsName)
        Set rngFoundCell = .Find(What:=Sheets("PLC I-O").Cells(j, 2).value, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
        If Not rngFoundCell Is Nothing Then
            'cell match was found
            rngrow = rngFoundCell.Row
            rngcol = rngFoundCell.Column
            modCardSize = Sheets("Links").Cells(rngrow, rngcol + 1).value
        Else
            'cell match was not found
        End If
    End With