반응형

전체 글 112

[엑셀vba ] Option Explicit 역할

엑셀vba에서는 변수 선언을 하지 않아도 바로바로 쓸 수 있어서 편리했다. 하지만 코드가 길어지고 많은 변수를 사용 할 때 조금 헷갈리는 경우 발생하기도 한다. 그래서 언제부터인지 Option Explicit를 선언하여 변수 선언을 강제하고 있다. 변수선언을 하지 않고도 위 그림처럼 사용해도 아무런 문제는 없다. 짧은 코드에서는 이게 더 편함 위 코드를 실행하면 A=3, B = 7, C = 10이라는 값이 들어가게된다. 아무런 문제가 없지만 장기적으로 계속 프로그래밍을 하려면 변수 선언을 강제화하는게 좋은 습관일거라 판단하였고 편리한 부분도 있어서 Option Explicit 선언을 사용하고 있다. Option Explicit 선언을 하면 사용하는 모든 변수에 대해 선언해야만 한다. 각기 다른 데이터 타..

[엑셀vba] debug.print 사용하기

vba 사용중 코드의 결과가 어떻게 나오는지 궁금할 때 사용하면 유용하다. 암산으로도 가능한 코드를 작성하고 실행해본다. 결과는 어디서 확인???? 직적 실행 창에서 할 수 있다. 'ctrl + g'를 누르거나 '메뉴>편집>직접 실행 창'으로 열 수 있다. 확인 해보면 4라는 숫자가 적혀있음을 볼 수 있다. 정말 쉽군 그리고 직접 실행창은 아무거나 입력할 수 있다. 굳이 쓸일은 별로 없겠지만 ...

[엑셀vba] 열려있는 인터넷 익스플로러를 컨트롤 해보자

이미 열려있는 익스플로러를 컨트롤하고 싶다. 그래서 구글링을 통해 배워봤다. 1. 준비 VB편집기에서 Microsoft Internet Controls를 참조 추가하면 준비 끝 2. 코드 1234567891011121314151617 Dim IE As SHDocVw.ShellWindows Dim wanna_IE As SHDocVw.InternetExplorer Set IE = New SHDocVw.ShellWindows For Each wanna_IE In IE If wanna_IE.LocationName = "Naver" Then MsgBox "네이벼 열려있음", vbInformation, "확인" Exit Sub End If Next wanna_IE End SubColored by Color Scri..

[엑셀vba] 시트를 완전히 숨겨보자(숨기기 취소에도 안보임)

시트를 숨기면 숨기는거지 완전히 숨기는건 또 뭐여 vba를 이용해 한 번 숨겨놓으면 숨기기 취소에서 보이지 않는다 ㅎㅎ 일반적으로 시트 숨기기 하면 시트 우클릭하여 숨기기 버튼만 누르면 되는데 문제는 '숨기기'해도 '숨기기 취소'에 떡 하니 나타나 있다는 것이다. 이럴거면 왜 숨기는겨... 그래서 만들어 놓은건진 몰겠지만 완전히 숨기기 취소 목록에 나타나지 않도록 만들 수 있다 어떤건지 살펴보자 123Sub Sheet_Hidden() Sheets(1).Visible = xlSheetVeryHiddenEnd SubColored by Color Scriptercs 시트 표시여부를 설정하는 visible 속성의 xlsheetveryHidden 옵션을 선택하면 완전히 숨길 수 있다. Visible 속성에는 3가..

[엑셀] 엑셀 2016으로 저장된 xlsx 파일을 엑셀 2007 에서 열어보자

xlsx 확장자는 모든 엑셀 버전에서 잘 열릴줄 알았다. 내 생각은 경기도 오산이었다... 엑셀 2016으로 저장한 TEST.xlsx 파일을 엑셀 2007이 깔린 컴퓨터에서 열었더니 엑셀은 켜졌지만 내용은 없은 회색 빈 창만 보였다.. 말그대로 엑셀만 켜진 상태 이 때만해도 왜 안열리는지 알 수 없는 상태였다. 구글에 엑셀 빈화면, 엑셀 회색 창 이런거 검색해도 나에겐 도움이 되지 않았다. .ㅜㅜ 혹시나 엑셀 버전이 달라서 그런건 아닌가 생각해서 엑셀 2016이 설치된 컴퓨터에서 저장할 때 엑셀 97 - 2003 통합문서 (.xls)로 저장하고 이 파일을 엑셀 2007이 설치된 컴퓨터에서 열었더니 아주 잘 되었다. 원인은 버전 문제였다. 문제 해결. 요약. 문제. 엑셀 2016으로 저장한 xlsx 파일이..

[낚시] 통영 해간도 방파제 낚시

9월 19일 토요일 오후에 통영 해간도에서 원투낚시를 했다. 해간도 낚시 기록. 1. 9월 19일 해간도 물때 간조: 오후 03시 53분 / 오전 03시 31분 만조: 오후 10시 19분 / 오전 10시 05분 10물, 날씨 맑음 풍속 3 ~6 m/s 실제로 바람은 거의 안느껴짐(한 번씩 불때 시원함이 있었음.) 2. 해간도 방파제 위쪽 짧은 방파제에는 등대가 있고, 아래쪽 긴 방파제에는 사람이 많다. 빨간 원 안에 주차를 하고 낚시 준비를 했다. 긴 방파제에서 많은 사람들이 원투 낚시를 하고 있었고 우리도 얼른 준비하여 참전하였다. 빨간 원에서 캐스팅을 하고, 초록색 구역은 여성팀원들이 빨간 큰 구역은 남성팀원들이 던진 곳을 표시하였다. 희한하게 방파제 앞쪽(초록색 구역)에 캐스팅을 하면 조류가 위쪽으..

[엑셀vba] 셀에 엑셀 함수 입력해서 사용하기

엑셀 vba를 이용해 셀에 함수 수식을 넣어보자. 1. 예시 B3 ~ E3의 합을 A3 셀에 입력하는 vba 코드를 작성하고 실행하면 10이 입력된다. 하지만 C3 값이 변경된다면 A3도 변할까??? ㄴㄴ 변하지 않는다. A3에는 값이 들어갔기때문... 그래서 값대신 엑셀 함수 =SUM(range)를 입력해보자. 2. 사용법 Sub SUM() Cells(3, "A") = "=SUM(B3:E3)" End Sub ;; 그냥 문자열 입력하듯이 하면 끝 넘 쉽군.. 근데 범위가 변경되거나 변수를 사용해야 된다면??? Sub SUM() Dim x As Integer Dim y As Integer x = 3 y = 3 Cells(3, "A") = "=SUM(B" & x & ":E" & y & ")" End Sub ..

[엑셀vba] .SaveAS 메서드

엑셀vba에서 통합문서를 저장하는 방법에는 두 가지가 있다. ThisWorkbook.Save - 현재 문서에 저장 ThisWorkbook.SaveAs - 다른이름으로 저장 ThisWorkbook 자리에는 ActiveWorkbook, Workbooks("파일이름") 등 통합문서와 관련된 다양한 놈들이 들어 갈 수 있다. .Save는 그대로 사용하면 되는 반면에 .SaveAs에는 설정 할 수 있는 파라미터가 12개나 존재한다. 살펴보자 1. .SaveAs 메소드 원형 SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, Te..

[엑셀vba] 모듈이 아니라 변수나 프로시저가 필요합니다.

모듈 이름과 함수 이름이 같을 때 나타나는 오류이다. (이외에도 다른 경우도 있음) 모듈이나 함수 이름 둘 중 하나를 바꿔주면 해결 ! 위 같은 상황일 때 '컴파일 오류입니다. 모듈이 아니라 변수나 프로시저가 필요합니다.' 오류 창이 나타나게된다. 모듈이나 함수 이름만 변경해주면 오류는 사라진다. 모듈 이름 안바꾸고 쓴다면 보기 힘든 오류인 듯 하다. 이런 오류가 발생하는 이유는 간단하다. 오류메세지 그대로 변수나 프로시저 이름을 넣어야하는데 모듈이름이 들어가 있으면 나타난다.

[엑셀vba] Module 이름을 바꿔보자

엑셀vba를 사용하다가 모듈을 추가했는데 그 수가 많을 때 module1, module2, .... . module14 이렇게 표현된다면 뭐가 뭔지 헷갈린다. 모듈을 우클릭하면 이름바꾸기 옵션이 보이지 않는다. 그러나 VBA의 속성 창으로 모듈의 이름을 변경할 수 있다. 보기 메뉴에서 속성 창을 클릭하면 속성창이 나타난다. (VBA 화면에서 F4 키를 눌러도 나타남) 속성 창에는 이름 항목만 존재하고 요걸 바꾸면 모듈의 이름이 변경된다. ※ 주의점: 모듈 이름과 프로시저 이름은 다르게 설정해야함. 같을 경우 런타임 '13오류를 발생시킨다

[엑셀vba] 사용자 정의 폼에서 키 입력 받고 이벤트 실행하기

사용자 정의 폼에서 키보드 입력을 받고 이벤트를 실행해보자! 1. 키 입력받는 코드 입력받은 키 값을 표시할 용도로 레이블 하나를 생성하고 키를 입력했을 때 폼 화면에 나타나도록 만들어봤다. 키 입력이 있을 때만 표시하고 입력이 없으면 표시되지 않는다. Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim Key As String Key = Chr(KeyAscii) Label1.Caption = Key End Sub 사용자 정의 폼에서 아무 키를 누르면 아스키코드의 10진수로 UserForm_KeyPress에 전달된다. ex) A = 65, a = 97 소문자 a를 입력하면 여기에 해당하는 아스키코드값인 97이 전달되고 ch..

[엑셀vba] 사용자 정의 폼 실행 중에 컨트롤 추가하기

사용자 정의 폼이 실행 중일 때 각종 컨트롤(텍스트박스, 레이블, 체크박스 등)을 추가해보자 1. CommandButton 추가 저 버튼을 누르면 커맨드버튼이 생성된다. Private Sub CommandButton1_Click() Dim Add_Ctrl As Control Set Add_Ctrl = Controls.Add("Forms.CommandButton.1") End Sub 기본적인 커맨드버튼 생성 코드이다. 이것만 실행하면 가장 기본적인 크기의 버튼이 생성되고 위치, 크기, 이름 등은 생성 후에 조정해주면 된다. Private Sub CommandButton1_Click() Dim Add_Ctrl As Control Set Add_Ctrl = Controls.Add("Forms.CommandBu..

[엑셀vba] 엑셀없이 사용자 정의 폼을 실행해보자

엑셀vba를 다루면서 왜 항상 엑셀이 실행되야 할까란 의문을 품었다. (너무 당연한 소리아닌가.. 엑셀vba니까 엑셀이 실행돼야지?) 그래서 vba를 쓸 수 있는 Visual Studio 2019 community 프로그램을 설치했는데 어떻게 써야할지 몰라서 안쓰고 있다... 혹시 엑셀로 어떻게 안될까 싶어서 구글링하고 연구해본 결과 엑셀없이 엑셀 사용자 정의폼을 실행 시키는건 불가능 한 듯 보였다.. 하지만... 뚜둔 엑셀없이 사용자 정의폼 실행! 와우 엑셀없이 사용자 정의폼이 실행되네??? 개쩌는걸 발견한듯?? ㅋㅋ 그러나 .. . . 엑셀없이 실행될 수 없는 운명인듯... 이거슨 눈속임에 지나지 않았다 . .. .. 그래도 엑셀없이 실행된거 같은 느낌을 준다. 엑셀을 실행시키면 열린 엑셀파일은 재빨..

[엑셀vba] 파워포인트 제어하기

MS Office의 가장 큰 장점은 VBA를 지원하는 것이라 생각된다. VBA 하나로 MS Office의 모든 프로그램들을 제어 할 수 있기 때문이다. 허허ㅏ하핳하 사용법이 조금씩 다른건 어쩔 수 없는 부분..? ㅇㅈ? ㅇㅇㅈ 엑셀vba에서 파워포인트를 제어하기 위해선 편집기에서 참조 하나만 해주면 된다. 참조를 추가하게 되면 파워포인트vba에서 사용할 수 있는 함수들을 엑셀vba에서도 써먹을 수 있게 된다. 엑셀과 파워포인트 차이점이라면 변수 형태가 달라진다. (다른 프로그램도 마찬가지) 엑셀은 sheet, workbook 으로 문서 변수를 선언한다면 파워포인트는 presentation, 워드는 document로 한다는 것을 알게되었다. (아직 알아가는 단계라 많은것을 알지 못함) vba로 파워포인트를..

반응형