컴퓨터 공부/엑셀 & VBA

[엑셀vba] 코드 여러 줄로 작성하기 & IF문 한 줄로 끝내기

도 박사 2020. 12. 11. 17:32
반응형

가끔 하나의 함수가 길어지는 경우가 발생한다.

 

너무 길어지면 가로 스크롤이 생기고 가독성이 떨어지게 된다.

 

_(언더바)를 이용해서 코드를 여러 줄로 작성해보자. 


1. 테스트

1
2
3
4
5
6
Sub 연습()
    Debug.Print ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row '1번
    
    Debug.Print ActiveSheet.Cells(Rows.Count, "A"). _
                End(xlUp).Row '2번
End Sub
cs

A열의 마지막 데이터를 찾아주는 함수로 테스트하였다. 1번의 경우 한 줄로 작성했고, 2번은 두 줄로 만들어봤다.

실행결과야 둘 다 똑같은 1의 값을 출력했다.

함수를 두 줄로 작성하려면 _(언더바)만 넣어주면 끝이다. 어디에 넣어야 되는 그런 규칙은 없고 본인이 보기 편한 곳에넣으면 된다. 적절한 곳에 '_'만 넣어준다면 몇 줄이든 상관없다.

 

 

1
2
3
4
5
Sub 연습()
    MsgBox "Hello", _
            vbDefaultButton1, _
            "Title"
End Sub
cs

 

 

메세지 박스를 띄우는 함수를 세 줄에 걸쳐 작성해봤다. 파라미터 하나당 한 줄씩 사용하여 아주 비효율적인 공간활용을 보여주고 있다. 나중에 엄청나게 길어지는 함수가 있다면 _(언더바)를 이용해서 보기 쉽게 만들면 좋을 듯 하다.


2. 문자열 여러줄 쓰기

1
2
3
4
5
6
Sub 연습()
    Debug.Print "Hi Man"
    
    Debug.Print "Hi " & _
                 "Man"
End Sub
cs

 

 

함수 여러줄 쓰는것과 비슷하지만 문자열의 경우 특수문자 하나가 더 들어간다. 바로 &(앰퍼센트)이다. 위 코드를 보면 바로 이해 할 수 있을거라 본다.

 

함수와 문자열을 여러줄에 걸쳐 쓰는걸 알게되었다. 나중에 쓸 일있으면 써봐야겠다.


3. IF문 한 줄로 작성하기

1
2
3
4
5
6
7
8
9
10
11
12
Sub 연습()
    
    i = 1
    
    If i = 1 Then
        MsgBox "i=1"
    Else
        MsgBox "i=2"
        MsgBox "good"
    End If
 
End Sub
cs

앞에서는 한 줄을 여러줄로 작성했다면, 이번엔 여러줄을 한 줄로 작성해보자.

위 코드는 i의 값에 따라 메세지 박스를 띄우는 프로시져이다. if문은 총 여섯줄로 되어있는데 요녀석을 한 줄로 줄여보겠다.

 

1
2
3
4
5
6
7
Sub 연습()
    
    i = 2
    
    If i = 1 Then: MsgBox "i=1"Else: MsgBox "i=2": MsgBox "good"
 
End Sub
cs

:(콜론)을 이용하면 위와 같이 한 줄로 나타낼 수 있다.

콜론을 이용해 한 줄로 작성하면 End if를 생략해도 오류가 발생하지 않는다.

그리고 콜론과 함께라면 변수 선언과 동시에 초기화 할 수도 있다.

 

Dim a as Integer

a = 1

 

이런식으로 사용했다면,

 

Dim a as Integer: a=1

 

요렇게 바꿔 쓸 수 있다.


 

반응형