내 Excel 통합 문서 (.vba)의 명명 된 범위에서 일치하는 셀 값을 찾으려고합니다. 내가 찾고있는 값을 알고 범위의 이름도 알고 코드를 실행할 때 처음에는 문제없이 실행되지만 두 번째에는 새로운 범위 이름으로 실행하면 오류가 발생합니다.명명 된 범위에서 일치하는 셀 값 찾기
명명 된 범위를 검색하는 데 몇 가지 다른 방법을 시도했으며 두 방법 모두 같은 오류가 발생합니다. 오류 : "개체 '_Global'의 '범위'메서드가 실패했습니다." 내가 시도
내 초기 코드는 다음과 같습니다
'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
내가 잘못 여기서 뭐하는 거지 모르겠습니다. 도와주세요.
이 코드로 무엇을하려합니까? 나는 단지 그것을 훑어 보았지만 VBA가 필요조차 없다고 할 수 있습니까? 즉, 수식 ('vlookup','countifs' 등)이 적당 할 수 있습니까? – Marc
어디에서'Range (rngCardsName)'을 설정 했습니까?'rngCardsName'이 변수가 아닌 범위의 실제 이름이면'Range ("rngCardsName")'을 사용하고 싶을 수도 있습니다. – brettdj
'Sheets ("PLC IO ") .RangeCardsName = Trim (Sheets ("PLC IO "). 셀 (i, 2) .value &"Cards ")'는 다음을 반환합니다 :'RngCardsName = 유효한 범위 이름. –