에 의해 정의된 경우 .in .Range가 필요합니다.세포?
이것이 '베스트 프랙티스'가 아니라는 것은 거의 널리 받아들여지고 있습니다.
dim rng as range
with thisworkbook '<~~ possibly set an external workbook
with .worksheets("sheet1")
set rng = .range(cells(2, 1), cells(rows.count, 1).end(xlup))
end with
end with
2개의 범위.Range 객체의 범위를 정의하는 셀 속성은 ActiveSheet 속성으로 기본 설정됩니다.시트 1이 아닌 경우( 로 정의됨).상위 항목 사용... 문장으로 종료), 할당이 실패합니다.
Run-tim error '1004': Application-defined or object-defined error
솔루션: 사용.Cells것은 아니다.Cells사건 종결.
그렇지만.....
이것은.둘 다 범위일 때 이 범위 개체 정의에 필요합니다.셀 속성은 을 상속합니다.대상...에 정의된 상위 워크시트 속성 문으로 끝냅니까?
어떻게 이럴 수 있죠?
dim rng as range
with thisworkbook '<~~ possibly set an external workbook
with .worksheets("sheet1")
' define rng as Sheet1!A2 to the last populated cell in Sheet1!A:A
set rng = .range(.cells(2, 1), .cells(rows.count, 1).end(xlup)) '<~~ .range
end with
end with
debug.print rng.address(0, 0, external:=true)
이것과는 다릅니다.
dim rng as range
with thisworkbook '<~~ possibly set an external workbook
with .worksheets("sheet1")
' define rng as Sheet1!A2 to the last populated cell in Sheet1!A:A
set rng = range(.cells(2, 1), .cells(rows.count, 1).end(xlup)) '<~~ range not .range
end with
end with
debug.print rng.address(0, 0, external:=true)
우리는 사용합니다..range범위의 범위를 정의하는 매개변수가 모호할 경우(예:.range([A1])그A1셀은 워크시트에 있을 수 있으며 기본적으로 다음이 없는 ActiveSheet 속성으로 사용됩니다..하지만 범위를 정의하는 범위가 상위 워크시트를 제대로 참조했는데 범위 개체의 상위를 참조해야 하는 이유는 무엇입니까?
여기서 제 의견은 조금 다릅니다.
예, 필수 항목입니다.사용자가 코드를 실행할 수 있는 위치를 항상 제어할 수는 없습니다.
이 몇 가지 테스트 사례를 고려해 주십시오.
시나리오
워크북에는 두 개의 워크시트가 있습니다.시트 1 및 시트 2
테스트 1(모듈에서 실행)
두 코드 모두 동일한 결과를 제공합니다.
테스트 2 (시트 1의 시트 코드 영역에서 실행)
두 코드 모두 동일한 결과를 제공합니다.
테스트 3 (시트 2의 시트 코드 영역에서 실행)
'~~> This code fails
set rng = range(.cells(2, 1), .cells(rows.count, 1).end(xlup))
얻게 될 것입니다.Application Defined or Object defined오류
따라서 코드가 어디에서나 실행될 수 있도록 객체를 적절하게 검증하는 것이 항상 권장됩니다.
그가 아니다..코드가 다음에 있지 않는 한 괄호 안의 셀 참조가 적격한 경우에는 필요하지 않습니다.Worksheet모듈.그것은 달리는 것이 더 빠르다고 말했습니다.set rng = .range(.cells(...), .cells(...))달리는 것보다set rng = range(.cells(...), .cells(...))그래서 그를 포함해서..약간의 도움이 됩니다.
당분간Worksheet모듈, 더.필수 항목입니다.
답은 코드가 워크시트 개체에 있는 경우에만 가능합니다.워크시트 개체가 확장 가능하고 다음을 모두 갖는 유일한 개체이기 때문이라고 생각합니다.Range기능.언제Range워크시트에서 호출된 개체입니다.Range함수에 범위가 있습니다.코드가 이 워크북이나 사용자 모듈 또는 클래스에 있을 때,Range가 가장 사용가범가가장함전다니입역수는운입니다.Range가 없는 Range함수)를 선택합니다.저것은 그것에 묶여 있습니다.Application전달된 매개 변수를 기반으로 문제를 해결하고 올바른 워크시트로 호출을 전달해야 합니다.
언급URL : https://stackoverflow.com/questions/36368220/is-the-in-range-necessary-when-defined-by-cells
'programing' 카테고리의 다른 글
| 새로운 asp.net 차트 작성 컨트롤 - MVC와 함께 작동합니까(결국)? (0) | 2023.06.15 |
|---|---|
| vba 코드를 libreoffice와 호환되도록 하려면 어떻게 해야 합니까? (0) | 2023.06.15 |
| 루비 온 레일즈에서 "10월 5일 일요일"과 같이 "th" 접미사로 날짜 형식을 지정하려면 어떻게 해야 합니까? (0) | 2023.06.15 |
| Oracle에서 varchar를 별도의 열로 분할 (0) | 2023.06.15 |
| python-dev 설치 오류:가져오기 오류: 이름이 apt_pkg인 모듈이 없습니다. (0) | 2023.06.15 |
