티스토리 뷰


안녕하세요. 엑셀을 알려주는 구스입니다.

오늘 글에서는 엑셀 매크로 VBA를 통해서 For문과 InputBox를 이용하여 원하는 열에 값을 넣는 코드를 배워볼까 합니다. 엑셀 매크로를 활용하여 자동으로 값이 사용자가 원하는 위치에 들어가는 코드인 셈입니다. 


오늘 배울 코드는 아래와 같습니다.


'1-1000까지 사용자가 원하는 열에 값넣기

'이 함수는 For를 이용하였음


Sub PrintValuesUsingFor()


    Dim column As String

    column = InputBox("입력할 열의 값을 써주세요 (1-10) !", "열의 값 받기")

    

    Dim columnIndex As Integer

    columnIndex = CInt(column)


    For i = 1 To 1000

        Cells(i, columnIndex) = i 'columnIndex는 사용자가 입력할 열의 값

    Next i



    MsgBox "1부터 1000까지 출력이 완료되었습니다."


End Sub


코드에서는 InputBox, CInt, For문을 이용한 것을 알 수 있습니다. 


InputBox에 대한 글은 아래의 링크를 참조하세요. 설명이 잘되어 있습니다.


 

InputBox 공부를 하시면 InputBox를 통해서 입력 받는 값을 String(문자열)로 리턴이 됩니다. 하지만 Cells 함수를 통해서 값을 넣기 위해서는 정수의 값이 필요하게 되죠. 


따라서 문자열을 정수 숫자형으로 변경을 해줘야 합니다. 이때 사용하는 함수가 바로 CInt입니다.

센스가 있으신분들은 문자열로 바뀌는 함수가 CStr이라는거 눈치 채셨겠죠.


관련 내용은 아래의 링크를 참조하세요.


Cint, CBool, CStr을 통해서 값 변환 공부하기

http://guslabview.tistory.com/152


코드의 마지막은 For문을 통해서 1000번을 반복하며 자신이 원하는 열의 위치에 1부터 1000까지의 값을 Row(행) 대로 넣는 것입니다. 


그럼 이제 따라해볼까요.


1. 아래와 같이 코드를 작성합니다. 


VBA 코드


2. 코드를 실행하기 전에는 아무런 값이 들어가 있지 않습니다. 확인한번 하시구요.


엑셀 화면


3. 코드를 실행합니다. 코드에서 F5을 누르시던지, 실행버튼을 누르면 됩니다.

코드가 실행이 되면 열의 값을 받게끔 되어 있습니다. 1부터 10까지의 값을 입력하면 되는데요. (물론 그보다 더큰 수를 입력을 해도 됩니다.)


InputBox 실행 화면


열의 인덱스(1-8)과 실질적인 열의 값을 비교하면 아래와 같습니다.

A열은 1, B열은 2, H열은 8로 설명을 할 수 있겠네요.


엑셀 열의 이름과 인덱스


4. 저는 C열에 값을 써보도록 하겠습니다. 3을 입력하고 OK버튼을 누릅니다.


InputBox


5. 입력이 완료되고 나서, 1부터 1000까지 출력이 완료되었음을 나타내는 메시지 창이 뜹니다.

C열에 값이 제대로 잘들어 갔네요.  


실행 결과


간단히 For문을 이용하여 자신이 원하는 열의 위치에 값을 넣어보는 코드를 구현해보았는데요.

오늘 배운 내용은 For문, InputBox, 그리고 InputBox를 통해 입력된 값을 정수로 변경하는거 알아보았습니다.


그럼 이만 줄이겠습니다.


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

댓글