본문 바로가기

엑셀33

VBA Workbook, Sheet, Range와 Select 메서드 에러와 대책 Select를 굳이 왜 배울까 싶다가도 나는 코드 짤때 자주쓴다.  파일 불러오거나 객체를 제대로 불러온게 맞나 확인할겸 Select를 자주쓰는데 이때 에러가 자주나온다. 당연히 에러 나올때마다 검색해보는데 결과가 안뜬다.. Select 메서드에는 다들 관심이 없는것 같다. 심지어 stackoverflow에도 내가 궁금해했던 것들이 안나온다.  너무 간단한 메서드라 그런가?  문제점을 찾아보기 위해 직접 하나씩 실행해보면서 에러가 나는 구문과 안나는 구문을 나눠봤다.   이 코드는 실행하면 에러 안남Range("A3").Select 이것도 에러 안남Sheets(2).Select 근데 이렇게하면 에러가 남(빨간색 표시는 에러구문)Sheets(2).Range("A10").Select  또 에러가 나는 것들T.. 2024. 7. 13.
count, find 활용해서 find로 범위찾기 기본적인 find (찾을값, 어디서찾을지, 시작번호)   B열처럼 나오게 하고싶은 경우도 있다.E열은 동물리스트고, C열에는 저렇게 동물들이 한 셀에 있다. 강아지 코뿔소 멧돼지는 E열에서 강아지밖에 없으니 1치타 오소리 고양이는 E열에서 오소리, 고양이가 있으니2돌고래 금붕어 두꺼비는 E열에 하나도 없으니 0 함수는 이렇게 쓰면 된다.=COUNT(FIND($E$3:$E$7,C3))=COUNT(FIND($E$3:$E$7,C4))=COUNT(FIND($E$3:$E$7,C5))=COUNT(FIND($E$3:$E$7,C6))=COUNT(FIND($E$3:$E$7,C7)) 반대로 E열기준으로 C열에 데이터들을 찾고싶으면=COUNT(FIND(E3,$C$3:$C$7))=COUNT(FIND(E4,$C$3:$C$7)).. 2024. 6. 13.
Open했을때 열려있는 파일이면 그대로 실행하고 안열려있으면 열기 Workbook Open메서드 종종 실무에서 쓰는데, 안열려있는 파일을 열려고하면 문제가 없는데열려있는 파일을 열려고하면 엑셀에서 "꼭 해당파일은 열려있는데 ~~ " 이런 말을 한다. 보기 싫으면 어떻게해야 될까? 결론부터 말하면  그걸로 Open 하는 코드를 쓰기전에알람기능을 꺼버리면 된다. ============================== Application.DisplayAlerts = False 열고싶은파일.Open Application.DisplayAlerts = True ================================ 복잡하게 if문과 GoTo를 쓸 생각을 했는데, 그냥 파일제거하기 전 알람끄는 것처럼파일을 열기전에 알람을 꺼버리면 문제가 해결된다. 이렇게 코드를 짜면 파일이해.. 2024. 6. 1.
VBA Open 과 Application.Screenupdating = False 쓰면 버그,에러 VBA에서 코드짤때 Application.screenupdaing = False 이거는 워낙 자주쓰고파일열때 쓰는 Open 메서드도 자주쓰는데 이거 두개를 같이, 잘못쓰면 문제가 생긴다. 회사에서 매크로만들다가 생긴문제라 코드를 보여주진 못하지만============================Application.screenupdaing = False set 객체 =  객체.Open(생략) Application.screenupdaing = True=============================대충 이런 코드였고 for 순환문으로 계속 자료를 퍼나르는 형식임.A파일 자료 → B파일로 복붙하는 매크로였는데 F8을 눌러서 한줄씩 작동시키면 문제가없는데F5를 눌러서 한번에 실행시키면 A파일자료를 복사해서.. 2024. 5. 30.
VBA Like 연산자 활용 (추가) https://www.youtube.com/watch?v=OG7qR-9IsNA&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=20&ab_channel=%EC%97%91%EC%85%80%EB%94%94%EC%9E%90%EC%9D%B8 강의보고 필받아서 더 만듦. D + 숫자4자리인것만 가져오기          이거는 한 행에 2개인경우 2개다 가져오는 형식인데 맨 앞에줄에 띄어쓰기가 된다은근 거슬리는데 어떻게 빼는방법 없을까..? 2024. 5. 17.
숫자만 빼내기(추출하기) Like 연산자 활용, 함수, 자체함수 등등 1. VBA Like 연산자 활용 ? : 문자1칸# : 숫자1칸* : 0자 이상 모든것. 예) ABC는 *A*조건에서 TRUE  [A-C][A-Z][가-힣] if not 문자열 like "A*" then     A1-B가C나3다-100 → 가나다로 바꾸는 순환물 + Like 코드 참고)https://lst914.tistory.com/entry/Like%EB%A1%9C-%EC%A1%B0%EA%B1%B4%EC%97%90-%EB%A7%9E%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B6%94%EC%B6%9C%ED%95%98%EA%B8%B0 Like로 조건에 맞는 데이터 추출하기!『 회사 실무자들이 업무를 처리하다 보면 상품 혹은 거래처 코드가 123-a-11aa와 같은 형태로 부.. 2024. 5. 17.
파일 존재하는지, 열려있는지 함수 IsFileExist, IsFileOpen Function IsFileExist(파일 As Variant) As Boolean  IsFileExist = Dir(파일)  ""    End Function  Function IsFileOpen(파일 As Variant) As Boolean  Dim 열린파일 As Workbook     On Error Resume Next   Set 열린파일 = Workbooks(Dir(파일))   IsFileOpen = Err.Number = 0   End Function 2024. 5. 15.
엑셀파일 열기 GetOpenFilename Sub 파일선택()  Dim 선택파일 As Variant  Dim 파일형식 As String    파일형식 = "엑셀 파일 (*.xls*), *.xls*"    선택파일 = Application.GetOpenFilename(FileFilter:=파일형식, Title:="작업 파일 선택")    If 선택파일  False Then     Workbooks.Open Filename:=선택파일     Else     MsgBox "파일을 선택하지 않았습니다."     End If   End Sub 2024. 5. 15.