티스토리 뷰


이 글에서는 간단히 VBA를 이용하여 엑셀 파일의 특정 셀에 데이터를 쓰거나 읽는 방법에 대해서 알아보도록 하겠습니다. 


기존의 VBA를 잘 모르시는 분들은 아래의 글들부터 확인하세요.


VBA에서 특정셀에 접근을 하기 위해서는 Range 개체 또는 Cells 속성을 사용할 수 있습니다. 물론 Range 개체의 속성인 Offset과 Union을 통해서도 접근이 가능하기는 하지만 여러개를 설명하면 복잡해 지므로 이 글에서는 Range와 Cells만 언급하도록 하겠습니다. 


그럼 Range와 Cells가 무엇인지 간단히 살펴보도록 할께요. 


Range란?

Range는 엑셀 워크시트에 있는 특정 셀의 집합을 말합니다. 여기서 집합은 하나가 될 수도 있고, 여러개가 될 수도 있습니다. Range 개체는 VBA에서 가장 많이 사용되는 개체이므로 눈에 익숙하게 하는것이 무엇보다 중요하다고 할 수 있겠습니다. 


Cells란?

Cells는 특정 범위를 지정한 Range를 리턴하는 속성입니다. Cells(1,1)을 하게 되면 특정 워크시트의 첫번째 행의 첫번째 열을 가져오는 것이죠. 즉 Range("A1")가 동일하다고 볼 수 있습니다. 


그렇다면 Range와 Cells를 통해서 어떻게 값을 넣고, 값을 읽어올 수 있을까요.

이번 글에서 살펴볼 코드는 아래와 같습니다.


코드는 특정 셀에 데이터를 쓰는 SetTestToCell이라는 함수와 데이터를 가져오는 GetTextFromCell이라는 함수로 구성되어 있습니다. 


Sub SetTextToCell()


    Range("C3") = "This is C3"

    Cells(4, 3) = "This is C4" ' 4는 행을, 3을 열을 의미


End Sub


Sub GetTextFromCell()


    MsgBox " C3 : " & Range("C3").Value & " , " & " C4 : " & Cells(4, 3)


End Sub


그럼 먼저 데이터를 쓰는 방법에 대해서 알아봅시다.

데이터 쓰는 방법에는 그렇게 어려운 점이 없습니다. Range, Cells를 이용해서 위와 같이 사용하면 됩니다.


Range는 특정 영역의 값을 그대로, Cells은 행과 열의 숫자값을 넣을 수 있습니다. 


Cells(4,3)의 경우는 A1을 기준(A1을 포함)으로 아래쪽으로 4번째, 오른쪽으로 3번째의 셀을 의미합니다. 즉 C4가 되는 거죠. Cells(7,7)의 경우는 G7이 됩니다. 

첫번째 값은 행을, 두번째 값은 열을 의미한다는 것만 이해하시면 되요. 





아래의 그림은 SetTextToCell 함수를 실행한 결과입니다. 


실행 이전에는 아무런 값이 없다가, 이 함수를 실행하면 특정 셀에 데이터가 들어간 것을 확인할 수 있습니다.

다른 데이터를 입력하고자 하면 Range("C3") = "This is C3"에서 ""안의 값을 변경하면 됩니다. 



값을 읽어오는 경우도 한번 살펴보겠습니다. 


MsgBox " C3 : " & Range("C3").Value & " , " & " C4 : " & Cells(4, 3)


값을 넣는 부분과 조금 다른게 있는데 Range("C3").Value를 이용하였습니다. Range는 객체이기 때문에 직접적인 값을 가지고 있는 인터페이스라 보시면 됩니다.

따라서 실질적인 값에 접근을 하고자면 Value 속성을 이용해야 합니다. 


하지만 Range 자체가 특성 셀(혹을 셀의 집합)을 의미하는 것이기 때문에 사용성에 편리함을 주기 위해서 마이크로소프트는 Range의 의미가 그 셀의 값으로 사용할 수 있게 만들었습니다. 따라서 .Value라는 부분이 없이도 값을 가져올 수 있습니다. 


MsgBox " C3 : " & Range("C3")& " , " & " C4 : " & Cells(4, 3)


따라서 Range("C3").Value와 Range("C3")의 결과가 같이 나오게 됩니다. 

위의 코드를 실행하면 아래와 같은 결과를 가져올 수 있습니다. 





셀에 데이터를 쓰고, 가져오는 방법이 생각보다 쉽죠?

그럼 이만 마치도록 하겠습니다.


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

댓글