티스토리 뷰


동일한 개체에 여러 함수와 속성을 적용해야 하는 경우 어떻게 해야 할까요?
일반적으로 동일한 개체를 변수로 잡아서 그 변수를 통해서 함수와 속성을 호출하겠죠. 

예를 하나 들어볼까요.

Dim range as Range

range = Range("A1")

range.Value = 5000

range.NumberFormat = "#,###"

range.블라블라1

range.블라블라2

 

대부분의 위와 같은 방식을 많이 사용할 것입니다. 위의 코드는 Range("A1")의 속성을 변경할 때 계속 range라는 개체를 불러와야 한다는 단점이 있습니다.

range와 관련된 처리를 100개를 한다면 range를 100개 적어야 합니다.

하지만 VBA에서는 하나의 개체에 여러 속성 혹은 함수를 호출할 때 유용하게 사용하는 구문이 있습니다.

바로 With 구문인데요.

With 구문은 동일한 개체의 함수 및 속성을 여러 개 호출해야 하는 경우에 동일한 개체를 여러 번 불러오지 말고,
With 구문에서 모든걸 처리하여 코드의 가독성을 높이고, 코드의 개발 량을 줄이자는 취지에서 만들어졌습니다.


With 구문의 MSDN 내용은 아래와 같습니다.

 

With문의 구조는 아래와 같습니다.

With 개체

    .개체의 속성

End With

 

그럼 예제를 한번 살펴볼까요?

 

Sub UseWithStatement()

 

'With 문 사용하지 않음

Range("A1").Value = 5000.51

Range("A1").NumberFormat = "$#,###.##"

 

' With 문 사용

With Range("B1") 

    .Value = 5000.51

    .NumberFormat = "$#,###.##"

End With

 

End Sub

 

위의 코드를 작성합니다.

위의 코드는 A1, B1에 동일한 값 5000.51을 넣고, 포맷을 소수점을 포함하는 $ 포맷으로 변경하였습니다.

자 그럼 코드를 작성하고 실행을 합니다.
실행 전에는 A1과 B1에 아무런 값이 나와있지 않습니다.

 

 

아래의 그림을 통해서 실행을 하면 A1와 B1의 결과가 같은 걸 알 수 있습니다.

물론 이번 코드는 With문 사용하지 않은 경우는 2줄, With문을 사용하면 4줄이 되어서 편의성을 찾기는 어려울 지 모르나,
위에서 언급 드린 것처럼 코드 줄 수가 많아지면 훨씬 더 작성해야 하는 코드가 줄어듭니다.

또한 가독성도 엄청 높아지죠.

 

 

이 글에서는 동일한 개체에 대한 속성과 함수를 설정해야할 때 가독성을 높이고, 코드의 효율성을 높여주는 With문에 대해서 알아보았습니다.

그럼 이만 줄이겠습니다.

 

이 글이 도움이 되셨으면, 아래의 하트를 눌러주세요.

댓글