Q4. 반복 처리를 하고, 복수의 셀에 값을 입력하는 방법?

2627 단어 VBAExcelExcelVBA
이번에는 반복 처리를 이용한 매크로를 만들어 봅시다.

For 문이라는 구문을 사용합니다.
ExcelVBA뿐만 아니라 대부분의 프로그래밍 언어에서 사용되므로,
아는 분도 많을까 생각합니다.

이번 문제의 내용은
A1 셀~A10 셀까지의 10개의 셀에, 1~10까지의 값을 차례로 넣는 매크로를
만드는 방법? 합니다. 결과의 이미지는 이런 느낌↓군요.



단 3 줄의 코드로 이것을 실현할 수 있습니다.
이번은 10개의 셀입니다만, 이것은 수가 100개가 되려고 1000개가 되면,
마찬가지로 세 줄의 코드로 실현할 수 있습니다.

그럼 매크로를 들여다 보자. 여기입니다.
Sub Q4_Answer()
    For i = 1 To 10
        Range("A" & i).Value = i
    Next i
End Sub

이 매크로를 실행하면 이전 이미지와 같은 결과를 얻을 수 있습니다.

그런데, 이 매크로의 포인트입니다만, For문보다 이하의 표기가 포인트이기도 합니다.
Range("A"& i).value

이와 같이 표기함으로써, i가 For문에서 변화함에 따라,
입력하는 셀이 하나씩 아래로 어긋나 가는 것입니다.

덧붙여서 조금 바뀐 정답 예도 소개해 둡니다.
Sub Q4_Answer_ex()
    For i = 1 To 10
        Range("A1").Offset(i - 1, 0).Value = i
    Next i
End Sub

Offset 프로퍼티를 이용해, 입력하는 셀을 어긋나는 테크닉입니다.
Range().Offset(어긋나는 행, 어긋나는 열)이라고 합니다. (0이면 생략도 가능)
예를 들어, Range("A1").
즉, A2 셀을 나타냅니다.
또한 Range("A1").Offset(,1) 하면 열이 오른쪽으로 이동합니다.
즉, B1 셀을 나타냅니다.

이것을, 앞서와 같이 For문안에서 이용함으로써,
하나씩 아래로 입력하는 셀을 어긋나고 있습니다.

프로그래밍의 세계는 정답은 하나가 아니며 다양한 방법이 있습니다.
생각할 수 있습니다. 실현하고 싶은 것에 의해, 좋은 방법 나쁜 방법이 있습니다만,
우선, 실현하고 싶은 것을 실현하기 위해 여러 가지 방법이 있다는 것을
알아두면 유연한 발상을 할 수 있을지도 모르겠네요.

좋은 웹페이지 즐겨찾기