반응형
오늘은 VBA 폼을 잘 다루기 위한 연습 문제입니다. 구현할 예제는 셀에 있는 데이터들을 모두 텍스트 박스에 하나씩 넣는 것입니다. 그러니까 폼에 있는 모든 컨트롤을 일일이 지정하지 않고 반복문을 돌면서 한번에 제어하는 방법을 익히는 것이 목적입니다. 이전에 UserForm 의 Controls 속성을 이용한 것과 달리 이번에는 컨트롤 Caption 명으로 제어하는 방법입니다.
▼ 먼저 [삽입] 메뉴 > [사용자 정의 폼]을 선택해서 새로운 Form 을 추가합니다.
▼ 다음은 시트에서 폼을 띄울 버튼을 만듭니다. 그리고 이벤트 함수에 UserForm6.Show 함수를 입력합니다.
Private Sub CommandButton1_Click() UserForm6.Show vbModeless End Sub |
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 반복문 For Next, For Each Next 사용하기 ▶ 엑셀 VBA 반복문 Do While 사용하기 ▶ 엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법 ▶ 엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기 ▶ 엑셀 VBA On Error GoTo 반복문에서 에러를 걸러내고 데이터를 구하기 |
▼ 폼은 다음과 같이 구성합니다. 시트에 있는 내용들을 가져와서 하나씩 담을 텍스트 박스들과 버튼을 추가합니다.
▼ 버튼을 클릭했을 때 시트에 있는 내용을 가져와서 각 텍스트에 뿌리는 소스의 내용은 다음과 같습니다. 이 소스에서 핵심은 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 반복문 For Next, For Each Next 사용하기 ▶ 엑셀 VBA 반복문 Do While 사용하기 ▶ 엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하는 방법 ▶ 엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기 ▶ 엑셀 VBA On Error GoTo 반복문에서 에러를 걸러내고 데이터를 구하기 |
반응형
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 배열의 크기를 알아 내기 (0) | 2023.05.29 |
---|---|
엑셀 VBA 반복문 Do Until 사용하기 (0) | 2023.05.28 |
엑셀 VBA 셀 데이터 검색해서 찾기 (8) | 2023.05.23 |
엑셀 VBA 리스트 멀티 선택해서 추가 삭제하기 (0) | 2023.03.25 |
엑셀 VBA Option Explicit 문 변수선언 에러 적용하기 (1) | 2023.03.20 |
엑셀 VBA 모듈 소스 다른 통합 문서에 복사하기 (0) | 2023.03.17 |
엑셀 VBA 선택한 영역 재조절 기능 Selection.Resize 함수 사용하기 (2) | 2023.03.17 |
엑셀 VBA 문자가 포함된 숫자만 합치기 (0) | 2023.03.07 |