반응형

분류 전체보기 28

Excel VBA - Select Case

Select Case, End Select If문 처럼 여러 조건에 대해 다른 계산을 할 때 Select Case를 사용할 수도 있다. If와 End If를 항상 같이 사용하는 것처럼 Select Case는 End Select와 같이 사용한다. Sub Button_Click() Dim score As Integer score = [A1] Select Case score Case Is >= 90 [B1] = "참 잘했어요" Case Is >= 80 [B1] = "잘했네요" Case 70 To 80 [B1] = "노력했군요" Case 60 To 70 [B1] = "노력하세요" Case 50 To 60 [B1] = "아이쿠" Case 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 [B1] = "낙제" ..

Excel VBA 기초 2023.12.03

Excel VBA - If

If, Then, ElseIf, Else, End If If 문은 조건에 따라 계산을 다르게 할 때 사용한다. If를 입력하면 반드시 End If는 따라와야 한다. If에서 입력했던 조건과 다른 조건이 있으면 ElseIf를 입력하면 되고 특정 조건 외에 모든 경우에 대해서는 Else를 입력하면 된다. Sub Button_Click() Dim i As Integer For i = 1 To 10 If i < 3 Then Cells(i, 1) = 1 ElseIf i < 6 Then Cells(i, 1) = 2 Else Cells(i, 1) = 3 End If Next i End Sub 위 코드는 i를 1부터 10까지 1씩 증가시키면서 i가 3보다 작을 때는 i번째 행, 첫번째 열에 1을 입력하고 i가 6보다 ..

Excel VBA 기초 2023.12.03

Excel VBA - For, Next

For, Next 사용하기 For, Next 문은 정해놓은 횟수동안 동일한 작업을 반복하는 것이다. For와 Next는 세트로 사용한다. Sub Button_Click() Dim i as Integer For i = 1 To 10 Range("A" & i) = i + 1 Next i End Sub 위 코드는 i를 1에서 1까지 1씩 증가시키는 동안 A 컬럼의 i 번째 셀에 i + 1 을 계산해서 출력하라는 것이다. 실행하면 다음 결과를 얻게 된다. 위에서 Range("A" & i) 대신 Cells(i, 1) 을 써도 같은 결과를 얻게 된다. For, Next 문 안에 For, Next 문이 들어갈 수도 있다. 2가지 변수의 조건을 변경하면서 반복 계산하게 된다. Sub Button_Click() Dim ..

Excel VBA 기초 2023.12.02

Plot Digitizer

Plot Digitizer 논문이나 책에서 다른 사람이 만든 그래프를 따라 그리거나 값을 추출하고 싶을 때 사용하는 프로그램을 Plot Digitizer 라고 한다. 이를 전문적으로 하는 프로그램이 있긴 하지만 엑셀 VBA를 이용해서 비슷하게 따라할 수 있다. 우선 시트에 다음과 같이 입력하고 검은색 버튼의 이름은 Plot_Digitizer 우측에는 직선 및 표식이 있는 분산형 차트를 넣고 차트의 이름은 Chart1 이라고 정했다. 그리고 E4 와 E7 Cell 에는 [데이터] 탭 - [데이터 도구] 그룹 - [데이터 유효성 검사] 의 [데이터 유효성 검사] 메뉴에서 [설정] 탭의 [유효성 조건] - [제한 대상] 에서 목록 을 선택하고 원본에 No,Yes 를 입력한 후 확인을 누른다. 그러면 다음과 같..

Excel VBA 응용 2023.12.02

Excel VBA - VBA Editor 살펴보기 (2)

VBA Editor 메뉴 구성 재설정 버튼 우선 VBA 실행 시 에러가 나면 ('1004' 런타임 오류가 발생하였습니다.... 어쩌고...) 에러창을 끈 후에도 아무것도 실행이 되지 않는다. 그럴 때 버튼을 눌러야 하는데 이렇게 하면 VBA를 재설정할 수 있다. 이제 코드를 편집한 후 다시 실행하면 된다. 편집 위치 VBA 코드 편집할 때 커서가 있는 위치를 표시한다. 평소에 이걸 확인할 일은 거의 없긴 한데 나중에 복잡한 코드를 작성할 때, 행 수가 크면 내가 이만한 수준의 코드를 작성했구나... 하는 뿌듯함을 느낄 수 있다. VBAProject 속성 다른 사람이 작성한 Excel 파일의 코드를 보려고 하면 암호를 입력하라는 창이 나올 때가 있다. 암호는 다음 메뉴에서 설정할 수 있다. 읽기 전용으로 ..

Excel VBA 기초 2023.11.30

Excel VBA - 변수 (2)

변수 선언 변수를 선언할 때 주의해야 할 것은 변수를 각각 따로 선언해야 한다는 것이다. 예를 들어 다음과 같이 3개의 변수를 한꺼번에 Long으로 선언하면 Dim x, y, z As Long z 만 Long으로 선언하고, 나머지는 Long이 아닌 Variant로 선언하게 된다. 제대로 하려면 Dim x As Long, y As Long, z As Long 또는 Dim x As Long Dim y As Long Dim z As Long 이렇게 선언해야 된다. 참고로 dim x as long 으로 입력해도 자동으로 Dim x As Long 으로 바뀌게 되니 편하게 소문자로 입력하자. 변수의 다른 표시 방법 몇가지 변수 형식은 다른 방법으로 표시할 수 있는데 Integer는 % Long은 & Single은 ..

Excel VBA 기초 2023.11.30

Excel VBA - 변수 (1)

변수(Variable) VBA에서 변수를 선언하면 이 변수를 범위에서 사용할지를 설정하고 변수가 사용할 수 있는 값의 범위도 설정할 수 있다. 우선 변수 사용 범위에 대해 알아보면 지역변수 (Dim) 변수 사용범위는 프로시저(Procedure) 수준으로 선언된 프로시저에서만 사용 가능하고 실행할 때마다 재생성되므로 초기값이 0이나 공백, Null이 된다. 모듈변수 (Dim or Private) 변수 사용범위는 모듈(Module) 수준으로 선언한 해당 모듈에서만 사용 가능하고 프로그램이 종료될 때까지 값을 유지한다. 전역변수 (Public) 변수 사용범위는 프로젝트(Project) 수준으로 프로젝트의 어디에서나 사용 가능하고 프로그램이 종료될 때까지 값을 유지하며 모듈 개체에서만 선언할 수 있고 폼이나 시..

Excel VBA 기초 2023.11.30

TSP (Traveling Salesman Problem)

TSP (Traveling Salesman Problem) TSP는 모든 도시들을 한번씩 방문하고 원래 시작점으로 돌아오는 최단 경로의 이동 순서를 구하는 것이다. Excel에서도 이 문제를 간단하게 풀 수 있는데 해찾기 추가 기능을 이용하면 된다. 해찾기 추가 기능은 수동으로 추가해야 사용할 수 있다. Excel 옵션의 추가 기능 창 하단의 관리에서 Excel 추가 기능을 선택하고 이동 버튼을 누르면 추가 기능 창이 나타난다. 해 찾기 추가 기능을 체크하고 확인 버튼을 누르면 다음과 같이 해 찾기 추가 기능을 사용할 수 있게 된다. 리본 메뉴의 [데이터] 탭 오른쪽 가장자리에 [해 찾기] 버튼이 생겼다. 해 찾기 버튼을 눌러서 다음과 같은 창이 나타나면 성공이다. 이제 시트에 다음과 같이 입력하고 빨간..

Excel VBA 응용 2023.11.30

Stop Watch

Stop Watch 만들기 VBA를 이용해서 스톱워치를 만들 수 있다. 어차피 핸드폰에 있는 거 쓸텐데 무슨 소용일까 싶지만 시간을 다루는 코드를 응용하는 방법을 알아놓으면 나중에 쓸 일이 있겠지... 우선 시트에 다음과 같이 입력하고 B2 Cell의 표시 형식을 hh:mm:ss.000 로 변경했다. 1/1000 초 단위 스톱워치를 만들기 위해서다. 그리고 빨간 버튼의 이름은 Start_Btn 으로 파란 버튼의 이름은 Reset_Btn 으로 정했다. F3 Cell에 시작 이라고 입력하고 빨간 버튼을 마우스로 클릭한 다음 F3 Cell을 클릭하면 다음 그림과 같이 수식에 =$F$3 가 입력된다. (텍스트 편집이 아니다) 그러면 빨간 버튼에 F3 Cell에 입력한 글자가 똑같이 표시된다. 같은 방법으로 파란..

Excel VBA 응용 2023.11.29

소인수분해

소인수분해 VBA를 이용해서 소인수분해를 해보자. 우선 시트에 다음과 같이 입력하고 실행버튼에 다음 코드를 연결한 후 Sub Prime_Click() Dim S As String Dim C As Long, D As Long, X As Long, Y As Long, F As Long C = 0 '소인수로 나눈 횟수. 0으로 리셋 P = 2 '소인수. 2부터 시작해서 3, 5, 7, ...로 증가 F = 0 '소인수 갯수. 0으로 리셋 [B5] = "" '소인수분해 결과 나오는 곳. 이전 결과를 지워야 함 X = [B3] '입력한 자연수 Do Y = X / P 'X를 P(소인수)로 나누는데 If (X Mod P) = 0 Then 'X가 P로 나누어 떨어지면 X = Y '나눈 몫 Y를 X로 다시 지정 C = ..

Excel VBA 응용 2023.11.29
반응형