Select를 굳이 왜 배울까 싶다가도 나는 코드 짤때 자주쓴다.
파일 불러오거나 객체를 제대로 불러온게 맞나 확인할겸 Select를 자주쓰는데 이때 에러가 자주나온다.
당연히 에러 나올때마다 검색해보는데 결과가 안뜬다.. Select 메서드에는 다들 관심이 없는것 같다.
심지어 stackoverflow에도 내가 궁금해했던 것들이 안나온다.
너무 간단한 메서드라 그런가?
문제점을 찾아보기 위해 직접 하나씩 실행해보면서 에러가 나는 구문과 안나는 구문을 나눠봤다.
이 코드는 실행하면 에러 안남
Range("A3").Select
이것도 에러 안남
Sheets(2).Select
근데 이렇게하면 에러가 남(빨간색 표시는 에러구문)
Sheets(2).Range("A10").Select
또 에러가 나는 것들
ThisWorkbook.Select
ㄴ에러가 나는 이유는 그냥 Workbook 객체에는 Select를 못쓴다고한다. 이해할 필요가 없다 그냥 안되는 것
이것도 에러남
ThisWorkbook.Sheets(1).Range("A1").Select
※ ThisWorkbook.Sheets(1).Select 이건 에러안남
추가로 골때리는 점 :
코드가있는 ThisWorkbook을 A라하고 다른 파일을 B라고하자,
A파일에서 B파일을 Open하고 Activate시킨 상황에서
ThisWorkbook.Sheets(1).Select하면 에러가 난다.
즉! B파일에서 A파일(혹은 A파일에 있는 시트)을 Select하는것은 안된다.
참고로 A파일에서 A파일에 있는 시트를 Select하는건 잘 됨.
Select가 안되는거지 Copy나 다른 메서드는 잘됨. ThisWorkbook이 A에서 B로 바뀌었다거나 그런게아님.
ㄴ 이거는 직접실행창 켜서 ?ThisWorkbook.name 입력해보면 알 수 있음
대책은 그냥 Select와 유사한 Activate 쓰면된다.
방금 위에서 본 예시에 있는 것처럼 B파일을 키고있는 상황에서 A파일을 Select하고싶으면
A파일.Sheets(1).Activate 하고 셀까지 특정하고 싶으면
Range("A1:A10").Select
Select와 Activate 차이는 다른 사이트에서 읽어보기도하고 직접 실행해봤는데 뭐 큰 차이는 모르겠다.
Range("A1:A10").Activate
Selection.Clearcontents
코드를 입력하면 A1:A10을 지워버린다. 이걸보면 Activate는 기본적으로 Select 기능을 내포하고 있는 것 같기도하다
'엑셀 > 엑셀 VBA' 카테고리의 다른 글
VBA 속도 빠르게 하는법 (0) | 2024.07.19 |
---|---|
VBA피벗 관련 에러 (정렬코드) (0) | 2024.07.18 |
Open했을때 열려있는 파일이면 그대로 실행하고 안열려있으면 열기 (0) | 2024.06.01 |
VBA Open 과 Application.Screenupdating = False 쓰면 버그,에러 (0) | 2024.05.30 |
VBA Like 연산자 활용 (추가) (0) | 2024.05.17 |