에 의해 정의된 경우 .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 |