Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하기

엑셀(Excel)/VBA
반응형

오늘은 VBA 폼을 잘 다루기 위한 연습 문제입니다. 구현할 예제는 셀에 있는 데이터들을 모두 텍스트 박스에 하나씩 넣는 것입니다. 그러니까 폼에 있는 모든 컨트롤을 일일이 지정하지 않고 반복문을 돌면서 한번에 제어하는 방법을 익히는 것이 목적입니다. 이전에 UserForm Controls 속성을 이용한 것과 달리 이번에는 컨트롤 Caption 명으로 제어하는 방법입니다.

 

 

먼저 [삽입] 메뉴 > [사용자 정의 폼]을 선택해서 새로운 Form 을 추가합니다.

엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법

 

 

다음은 시트에서 폼을 띄울 버튼을 만듭니다. 그리고 이벤트 함수에 UserForm6.Show 함수를 입력합니다.

 

Private Sub CommandButton1_Click()
    UserForm6.Show vbModeless
End Sub

 

엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 반복문 For Next, For Each Next 사용하기
엑셀 VBA 반복문 Do While 사용하기
엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기
셀 VBA On Error GoTo 반복문에서 에러를 걸러내고 데이터를 구하기

 

 

폼은 다음과 같이 구성합니다. 시트에 있는 내용들을 가져와서 하나씩 담을 텍스트 박스들과 버튼을 추가합니다

엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법

 

버튼을 클릭했을 때 시트에 있는 내용을 가져와서 각 텍스트에 뿌리는 소스의 내용은 다음과 같습니다. 이 소스에서 핵심은 For 문을 돌면서 폼에 있는 텍스트 박스 컨트롤에 어떤 식으로 접근하느냐 입니다. Controls() 함수는 텍스트 박스의 Caption 명을 가지고 컨트롤 개체로 변환할 수 있습니다. 폼에 추가된 텍스트 박스의 Caption 명 들은 TextBox1, TextBox2, TextBox3 … 와 같이 지정되어 있어야겠죠.

 

Private Sub CommandButton1_Click()
 
    Dim rng As Range
    Dim cell As Range
    Dim i As Integer
   
    Set rng = ActiveSheet.Range("B2").CurrentRegion
   
    i = 1
    For Each cell In rng
        Controls("TextBox" & i).Value = cell.Value
        i = i + 1
    Next cell
 
End Sub

 

엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 반복문 For Next, For Each Next 사용하기
엑셀 VBA 반복문 Do While 사용하기
엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기
셀 VBA On Error GoTo 반복문에서 에러를 걸러내고 데이터를 구하기
반응형
Posted by 녹두장군

댓글을 달아 주세요