본문 바로가기
VBA

VBA) Range와 Cells

by 왕초보코딩맨 2024. 2. 23.

시작하며

안녕하세요. 왕초보코딩입니다. 이 게시글에서 Range와 Cells에 대해서 알아보겠습니다.

Range와 Cells은 workbooks, worksheets를 포함해 vba에서 아주 많이 사용하게 될 겁니다.

Range와 Cells은 책으로 비유하면 페이지 내에 글자 또는 단어, worksheets는 페이지 한장, workbooks는 책 한권으로 비유될 수 있습니다. 

 

Range와 Cells을 통해서 할 수 있는 것은 

시트내에 있는 셀범위에 접근하고,

셀범위의 데이터를 읽고 사용목적에 따라 편집할 수 있습니다.

 

Range에 대해서

Range는 시트내 셀범위에 접근할 수 있는 기능을 제공합니다. Range는 시트내에 임의의 한개의 셀부터 모든 셀까지 전부 선택을 할 수 있습니다.

 

예제코드를 통해서 알아보겠습니다.

Sub Range에대해서()
    
    '셀a2 선택
    Range("a2") = 12
    
    '범위("b3:c5") 선택
    Range("b3:c5") = 14
    

End Sub

 

코드를 분석하면 첫번째 Range("a2")는 a2셀에 12를 입력하라는 뜻이고

Range("b3:c5")는 "b3:c5"셀범위에 14를 입력하라는 뜻입니다.

 

실행해보면 결과가 위 사진의 주황색 박스와 빨간색 박스처럼 나타납니다.

 

Cells에 대해서

Cells는 시트내 하나의 셀에 접근할 수 있는 기능을 제공합니다.

일단 Cells이용방법을 Range와 비교해서 알아볼게요.

Sub Range에대해서()
    
    '셀a2 선택
    Cells(3, 1) = 12
    
    '셀b5 선택
    Range("b5") = 12
    
End Sub

 

하나는 Cells를 이용해서 "a3"셀에 12를 입력하는 코드이고

다른 하나는 Range를 이용해서 "b5"셀에 12를 입력하는 코드입니다.

 

실행하면 위 사진처럼 결과가 나옵니다.

 

얼핏봤을 때는 Range가 있는데 굳이 Cells가 필요할까 라는 생각이 듭니다. 하지만 Range로 셀하나를 선택할 때는  Range("b5")와 같이 셀번호를 문자열로 접근이 가능합니다. 그에 반해 Cells는 Cells(3,1)과 같이 셀번호를 숫자를 통해 접근이 가능합니다.

 

이러한 성질 덕분에 Cells는 순환문을 통해서 각 셀에 접근할 수 있습니다. (물론 Range도 for each 을 이용할 수 있지만 다른 순환문에선 힘듭니다.) 

 

Sub Range에대해서()
    
    i = 1
    
    For i = 1 To 5
        For j = 1 To 5
            If (i + j) Mod 2 = 1 Then
                Cells(i, j).Interior.ColorIndex = 3
            Else
                Cells(i, j).Interior.ColorIndex = 4
            End If
        Next
    Next

End Sub

 

위 코드는 셀의 행번호와 열번호의 합이 홀수인지 짝수인지 따라서 셀배경색을 다르게 입히는 코드입니다.

 

실행하면 위 사진과 같이 나오게 됩니다.

 

Range와 Cells를 함께 

Range와 Cells를 함께 사용하면 복잡하거나 반복적인 범위에 접근가능합니다. 

 

Sub Range에대해서()
    
    i = 1
    
    For i = 1 To 5
        For j = 1 To 5
            If (i + j) Mod 2 = 1 Then
                Range(Cells(i, j * 2 - 1), Cells(i, j * 2)).Interior.ColorIndex = 3
            Else
                Range(Cells(i, j * 2 - 1), Cells(i, j * 2)).Interior.ColorIndex = 4
            End If
        Next
    Next

End Sub

 

예제코드를 살펴볼게요.  

순환문을 돌아가면서 i와 j의 합이 홀수 짝수에 따라서 정해진 범위의 색깔을 다양하게 입히는 코드입니다.

실행해 보면 다음과 같이 됩니다.

마치며

이처럼 다양한 코드를 실행해봤는데요. Range와 Cells는 다양하고 복잡한 범위를 지정할 수 있게 해줍니다. 

이 글은 이것으로 마치고 다음에 더 좋은 정보를 가지고 올 수 있도록 노력하겠습니다.