반응형

VBA 25

Excel VBA - For Each, Next

For Each, Next For Each, Next 문은 For, Next 문과 비슷하지만 사용방법이 조금 다르다. For, Next 문에서는 특정 규칙을 갖는 숫자를 이용해서 순환 계산을 하는데 For Each, Next 문에서는 목록을 제시하고 그 목록에 대한 순환 계산을 할 때 사용한다. 사용방법은 다음과 같다. Sub ForEachNext() arrData = Array("강아지", "고양이", "송아지", "망아지") For Each iData In arrData i = i + 1 Cells(i, 1) = iData Next End Sub 위 코드는 "강아지, 고양이, 송아지, 망아지" 라는 arrData(배열)을 제시하고, arrData 안에 있는 각각의 iData(항목)을 첫번째 열에 출력..

Excel VBA 기초 2024.01.02

Excel VBA - Like 연산자

Like 연산자 Like 연산자는 If문에서 대상이 특정 패턴에 맞는지 판단하는데 사용할 수 있다. 와일드카드 문자 활용 (?, *) 와일드카드 문자로 사용할 수 있는 것은 ? 와 * 다. ?는 패턴 내에서 하나의 문자를 대체할 수 있고, *는 패턴 내에서 자리에 상관없이 모든 문자를 대체할 수 있다. A1 셀에 입력된 문자가 A로 시작하고 C로 끝나는 3자리 문자인 경우에만 A2 셀에 True를 출력하고, 아닌 경우 False를 출력한다면 코드를 다음과 같이 사용하면 된다. Sub Use_Like() If [A1] Like "A?C" Then [A2] = "True" Else [A2] = "False" End If End Sub 위 코드에서 A1 셀에 ABC나 ATC를 입력하면 True를 출력하게 된다..

Excel VBA 기초 2023.12.16

Excel VBA - Switch

Switch Switch는 If문에서 ElseIf를 사용하거나, Select Case문을 사용하는 것과 같은 기능을 한다. 코드가 간결해지는 장점이 있다. 사용방법은 다음과 같다. Sub Swit() [A2] = Switch([A1] >= 90, "수", _ [A1] >= 80, "우", _ [A1] >= 70, "미", _ [A1] >= 60, "양", _ True, "가") End Sub 위 코드는 A1 셀에 90 이상이 입력되어 있으면 [A2] 셀에 "수"를 출력하고 80 이상이 입력되어있으면 "우"를 출력하고... 마지막에 True는 If문에서 Else와 같은 것으로 "앞의 조건들에 맞지 않는 나머지라면" 이라는 의미이다. 마지막에 True가 반드시 들어가야 할 필요는 없고 위 코드에서는 [A1]

Excel VBA 기초 2023.12.16

Excel VBA - And, Or, Not 연산자

And 연산자 If문을 사용하는 조건문에서 2개 이상의 조건을 모두 만족하는지 확인할 때 사용한다. 예를 들어 a > 1 이면서 b > 1 인 조건을 모두 만족하는 경우 c에 a + b 를 저장한다면 And 연산자를 다음과 같이 사용할 수 있다. If a > 1 And b > 1 Then c = a + b End If 위 코드 대신 If문을 2중으로 사용해도 같은 기능을 수행할 수 있다. If a > 1 Then If b > 1 Then c = a + b End If End If Or 연산자 If문을 사용하는 조건문에서 여러 조건들 중 적어도 하나의 조건을 만족하는지 확인할 때 사용한다. 예를 들어 a ≠ 0 이거나 b ≠ 0 일 때 c에 a × b 를 저장한다면 Or 연산자를 다음과 같이 사용할 수 있..

Excel VBA 기초 2023.12.14

Excel VBA - 상수

상수 (Const) 변수를 선언한 후, 변수에 값을 저장할 수도 있지만 상수를 선언하면 이러한 작업을 한번에 할 수 있다. 예를 들어 a 라는 변수에 10을 저장하려면 다음과 같이 하면 되는데 Dim a As Long a = 10 a를 상수로 지정하고 10을 저장하려면 다음과 같이 하면 된다. Const a As Long = 10 2줄로 쓸 코드를 1줄에 쓸 수 있다는 편리함이 있다. 그런데 이게 좀 불편할 수도 있다. 코드를 작성하다보면 값을 변경하고싶을 수도 있으니까. 변수로 지정해도 값을 바꾸지만 않으면 상수와 다를 바가 없다. 그러니 한번 저장한 후 변경될 일이 없으면 써보자.

Excel VBA 기초 2023.12.13

Excel VBA - 파일 저장 형식

저장 파일 형식 Excel 2003 버전까지는 파일을 저장할 때 xls 파일 형식만 사용했지만, Excel 2007 버전 이후부터는 용도에 따라 파일 형식을 여러 가지로 사용한다. 기본적으로 사용하는 확장자는 Excel 통합 문서 (*.xlsx) 지만 매크로(Macro, VBA를 사용하여 원하는 동작을 순서대로 실행시켜주는 명령)가 포함된 Excel 파일을 저장할 때 파일 형식은 Excel 매크로 사용 통합 문서 (*.xlsm) 를 사용해야 한다. 매크로가 포함된 Excel 파일을 형식을 설정하지 않고 저장하려다 보면 다음과 같은 에러창을 보게 된다. 무심코 저장하려다 이런 창이 나타나면 파일 형식을 귀찮게 왜 나눴을까 싶지만, 하라면 해야지. 파일 형식을 xlsm (또는 xlsb) 으로 바꾼 후 저장하..

Excel VBA 기초 2023.12.13

Palindrome Number

Palindrome Number 대칭수 또는 회문수 앞으로 읽어도, 뒤로 읽어도 똑같은 숫자. 예를 들어 11, 121, 1331, 12321 같은 숫자들이다. 한자리 숫자도 모두 대칭수라고 할 수 있겠고. 11보다 크면서 10진수로도 대칭수 8진수로도 대칭수 2진수로도 대칭수인 10 이상의 가장 작은 자연수를 VBA로 구해보자. 우선 시트를 다음과 같이 편집해두고 "대칭수 계산" 이라고 적힌 버튼의 이름을 Palindrome 이라고 정했다. 그리고 다음 코드 중 Sub Palindrome_Click() 을 버튼에 연결해준다. Function Dec2Bin(ByVal num As Long) As String Dim result As String Dim remainder As Long Do While nu..

Excel VBA 응용 2023.12.08

Excel VBA - GoTo

GoTo 코드를 실행하다가 어떠한 조건에 맞으면 GoTo를 사용해서 특정 위치로 건너 뛸 수도 있다. Sub Button_Click() If [A1] < 1 Then GoTo AAA ElseIf [A1] < 10 Then [B1] = 100 Else [B1] = 10 End If GoTo BBB AAA: [B1] = 1000 BBB: End Sub 위 코드는 A1 셀에 입력한 숫자에 따라서 B1에 다른 숫자를 출력하라는 것이다. 그런데 A1 에 1보다 작은 숫자를 입력하면 AAA: 라고 표시된 곳으로 이동해서 B1 셀에 1000을 출력하게 된다. 그리고 그 후에 BBB: 가 있긴 하지만 아무것도 입력되어 있지 않으므로 그냥 넘어간다. 다른 조건의 경우 100이나 10을 출력하고 BBB: 라고 표시된 곳으..

Excel VBA 기초 2023.12.03

Excel VBA - Do, Loop

Do, Loop Do, Loop 는 For, Next 와 비슷한 용도인데 정해진 횟수만큼 실행이 아니라 어떤 조건에 도달할 때까지 계속 실행하는 것이다. Sub Button_Click() Dim i As Integer Do While i < 10 i = i + 1 Range("A" & i) = i Loop End Sub 위 코드는 i가 10보다 작을 동안 i를 1씩 증가시키면서 A열의 i번째 행에 i를 출력하는 작업을 반복하라는 거다. 처음에 i에 아무런 숫자도 입력하지 않았지만 기본적으로 0으로 입력되어 있다고 생각하면 된다. 위 코드를 실행하면 다음과 같은 결과를 얻게 된다. 위에서는 Do While을 썼지만 While을 Loop 뒤에 쓸 수도 있다. Sub Button_Click() Dim i As..

Excel VBA 기초 2023.12.03

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
반응형