2014-06-18 2 views
0

"MyRange"라는 명명 된 범위가 있습니다. 그것은 ='Sheet1'!$A:$A으로 정의됩니다. VBA에서는 수식이 LastRow= Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row입니다. 명명 된 범위의 데이터가있는 마지막 행을 반환해야합니다. 그러나 현재 시트에있는 A 열의 마지막 행을 반환합니다. 명명 된 범위에서 시트 참조를 삭제하는 이유는 무엇입니까?VBA 명명 된 범위 삭제 시트 참조

답변

1

시도 :

LastRow = range("MyRange").Worksheet.Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row 

편집은 다른 답변 : 같은 동일한 방법으로 답을 완료하는 데 시간이 너무 오래 걸렸!

실패한 이유는 CELLS가 ​​현재 활성 시트를 기본적으로 참조하기 때문입니다. 범위 추가 ("MyRange") : CELLS가 ​​"MyRange"가 포함 된 워크 시트에서 작동하도록하기 전에 워크 시트.

0

당신은 항상 시도 할 수 있습니다 :

With Sheet1 
    LastRow = Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row 
End With 

또 다른 생각하십시오 ""주위 MyRange없이 당신이 무엇을하려고

LastRow= Cells(Rows.Count, Range(MyRange).Column).End(xlUp).Row 
+0

첫 번째 제안은 작동하지만 엄밀히 말하면 이름이 지정된 범위에 대한 수천 개의 참조가 있으므로 확장 방법이 아닙니다. 그러면 약 5,000 줄의 코드가 추가됩니다. 두 번째 옵션이 작동하지 않습니다. – user2242044

+1

@ tannman357, 답은 좋지만 일부 구두점을 잊어 버린 점을 제외하면 셀과 행 앞에 각각 하나씩 있습니다. 그래서 그것은 다음과 같이 수정됩니다 : LastRow = .Cells (.Rows.Count, .Range ("MyRange"). Column) .End (xlUp) .Row', 아니면 다시 activesheet로 간다. 시트 ("Sheet1")가있는 것 같아요. –

+1

@ user2242044 - OP에 _scalable_ 같은 것을 넣으세요. 그렇지 않으면 움직이는 표적을 치고 너에게 _good_ 답변을 주려고한다. – ryyker

2
코드의 구문은입니다

그 세포 인수 모두, 및 행 인수를 사용하면 명명 된 범위의 시트가 아니라 활성 시트를 참조합니다.

구문 시트 참조 될 수있는 유지 :

With Range("myrange").Worksheet 
    LastRow = .Cells(.Rows.Count, [myrange].Column).End(xlUp).Row 
End With 

주 세포 앞의 "점"및 행 (및 열). 이 사용

관련 문제