기초부터 실전까지 VBA 엑셀 28 - 목록 상자 (ListBox) 추가

IT 관련 지식/VBA 공부|2020. 1. 30. 21:14
반응형
728x170

요즘에는 VBA에 대한 이야기가 조금 뜸한거 같네요 ㅎㅎ

 

직접 일일이 만들어야하니 이 카테고리가 제작하는데 시간이 제일 많이 걸려서 그렇습니다 ㅠㅠ

 

그럼 사용자폼(UserForm)에서 목록상자(ListBox)를 만드는 방법에 대해 알려드리겠습니다.

 

사용자폼 이후로는 여러분이 VBA에 대해 어느정도 지식이 있다는 가정하에 진행하기 때문에

 

아얘 처음 보시는 분은 이 카테고리로 가셔서 필요한 부분의 공부를 해주시면 감사하겠습니다.

 


1. 사용자폼 화면 만들기

 

아래의 그림 처럼 일단 사용자 폼을 만들어줍니다.

 

참고로 저 빨간색 네모는 그냥 그냥 텍스트 상자가 아니라

 

목록상자(List Box)입니다.

 

겉으로보면 일반 텍스트 박스와 생김새가 똑같기 때문에 착각하기 쉽습니다.

 

참고로 지금할려고 하는 것은

 

① 리스트(도시 후보)에서 도시를 선택한다.

② 시, 도 정보에 뭔가를 입력한다.

③  "입력"을 누른다

④ 시트에 입력 / 선택한 정보가 입력된다.

 

이렇게입니다.

 

그중에서 ①까지 만드는 방법을 집중적으로 살펴볼 예정입니다.


2. 목록 상자(List Box)에 목록 넣기

 

엑셀 시트에 다음과 같이 입력합니다.

 

이 리스트가 목록 상자에 입력될 리스트입니다.

 

그리고 UserFormUserForm_Initialize에 다음과 같이 입력합니다.

 

코드는 제일 마지막에 메모장으로 올리겠습니다.

 

지금은 최대한 그대로 따라오려고 노력해주세요.

 

 

이렇게 입력하고 F5(RUN)을 누르면 다음과 같은 사용자폼이 나오게됩니다.

 

아까 시트에 입력했던 리스트가 그대로 목록 상자안에 들어가게됩니다.

 

참고로 사용자폼에서 입력한 

 

.ColumnCount = 2

 

이게 열의 갯수를 지정하게 됩니다.

 

열의 너비가 너무 맞지 않기 때문에 너비를 조절해보겠습니다.

 

너비의 경우 ColumnWidths 속성을 이용하여 조절합니다.

 

Private Sub UserForm_Initialize()
With Me.ListBox1
    .ColumnCount = 2
    .ColumnWidths = "50;100"
    .List = Worksheets("sheet1").Range("A1:B7").Value
End With
End Sub

 

세미콜론(;)을 이용하여 각 열을 구분합니다.

 

300x250

 

그런데 리스트에서 항목 부분의 구분이 조금 애매하니 구별 시켜보겠습니다.

 

여기서는 .ColumnHeads = True 속성을 사용하여 지정합니다.

 

대신 주의할 점이 하나 있습니다.

 

지금까지는 목록 상자에 항목을 넣을 때 .List를 사용했지만

 

.List에서는 .ColumnHeads = True을 사용할 수 없습니다.

 

그래서 다른 코드를 이용하여 목록을 채울 수 있는 방법을 소개하겠습니다. 

 

.List 대신 .RowSource라는 정의를 사용하여 목록을 재지정 해줍니다. 

Private Sub UserForm_Initialize()
With Me.ListBox1
    .ColumnCount = 2
    .ColumnWidths = "30;80"
    .ColumnHeads = True
    .RowSource = Worksheets("sheet1").Range("A2:B48").Address(External:=True)
End With
End Sub

이 처럼 코드를 넣으면 다음과 같은 화면이 나옵니다

 

 


3. 목록 상자에서 "값" 취득하기

 

이제 마지막으로 선택한 리스트의 값을 취득하는 방법에 대해 알려드리겠습니다.

 

아래와 같이 코딩을 합니다.

 

하나씩 설명하자면

 

① CommandButton1("입력") 버튼을 누를 경우의 조건은 다음과 같다.

② 변수 i에 리스트 값을 저장한다.

③ 그리고 Cells(1, 4)에 i 값을 입력한다.

 

다음과 같이 실행해보겠습니다.

 

 

이상하게 "도시 이름"이 아니라 코드("2")만 나오게 됩니다.

 

그 이유는 List Box의 속성 중에 BoundBoundColumn의 값이 1이기 때문입니다.

 

이 값을 2로 바꾸어줍니다.

 

그리고 다시 한번 더 실행해봅니다.

 

 

이번에는 제대로 "도시 후보"가 나오네요 ㅎㅎ

 

VBA_28.txt
0.00MB


이렇게 오늘은 목록 상자를 활용하는 방법에 대해 알아봤습니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀2 - 모듈 생성과 설정

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀3 - Sub, End Sub

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀4 - Range 사용법 및 특징

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀5 - 셀 지정법(Cells, Rows, Columns)

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀6 - Dim 변수선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀8 - 반복문 For

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀9 - 반복문 Do ~ Loop

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀10 - 마지막 행 얻기(End)

등등

 

사용자폼(UserForm)에 대한 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 25 - UserForm

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 26 - UserForm 명령단추

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()

기초부터 실전까지 VBA 엑셀 28 - UserForm 콤보 박스 사용법

IT 관련 지식/VBA 공부|2019. 12. 28. 08:00
반응형
728x170

이번에는 콤보 박스를 사용하는 방법에 대해 말해보겠습니다.

 

콤보 박스는 아래와 같이 "클릭"을 하여 리스트를 선택할 수 있게 하는 상자를 말합니다.

 

콤보박스 사진

이럼 어떻게 리스트 안에 항목을 넣을 수 있는지 알아보겠습니다.

 


1. 양식 만들기

 

시작은 간단합니다.

 

먼저 아래와 같이 UserForm에서 콤보 박스를 만들고 UserForm이 나올 수 있게 설정해줍니다.

 

콤보박스 사진

 

혹시 UserForm을 모르시는 분은 아래의 링크를 참조하시길 바랍니다.

 

기초부터 실전까지 VBA 엑셀 25 - UserForm

 

기초부터 실전까지 VBA 엑셀 25 - UserForm

VBA 엑셀 25 - UserForm 드디어 UserForm을 배워볼 시간입니다. UserForm의 경우 VBA에서 제일 재밌는 부분중 하나입니다. 그 이유는 그래픽을 만들 수 있기 때문입니다. 여러분들이 버튼을 만들고 선택을 하고 입..

mmol.tistory.com

UserForm1.Show를 이용하여 사용자폼을 나타낼 수 있다면 다음 단계로 넘어갑니다.

 


2. 콤보 박스에 아이템 추가하기 - Additem 매소드

 

콤보 박스 안에 A, B, C 등급을 나눌 수 있게 

 

항목을 넣어보겠습니다.

 

먼저 사용자폼을 더블클릭합니다.

 

그럼 아래와 같은 화면이 나올거라고 생각합니다.

 

 

아래의 그럼에서 UserForm 옆부분에 Click이라는 것이 있을건데요.

 

이곳을 클릭하여 Initialize를 찾아서 클릭합니다.

 

그리고 Private Sub UserForm_Click이라고 된 부분은 전부 삭제하면 아래와 같은 그림이됩니다.

 

 

우리는 여기에 콤보박스에 대한 프로그래밍을 할 것입니다.

 

Initialize의 뜻은 처음 실행시 최초 1회만 실행한다는 의미입니다.

 

즉, 사용자폼을 사용할 때 우리가 원하는 설정을 지정하기 위한 장소입니다.

 

이 안에 다음과 같이 넣습니다.

 

Private Sub UserForm_Initialize()

    Me.ComboBox1.AddItem "A_Rank"
    Me.ComboBox1.AddItem "B_Rank"
    Me.ComboBox1.AddItem "C_Rank"
    
End Sub

 

그리고 이를 실행시켜봅니다.

 

 

보시는 바와같이 콤보 박스 안에 입력한 값이 들어간 것을 알 수 있습니다.

 

구문을 조금 해석해보면

 

Me : 현재 활성화된 사용자폼을 의미함

ComboBox1 : 콤보 박스의 오브젝트 네임을 의미

 

방금은 Additem 매소드를 사용했지만

300x250

 

행렬을 이용할 수 있는 List 매소드도 있습니다.

 


3. 콤보 박스에 아이템 추가하기 - List 매소드

 

이번에는 List 매소드를 이용해서 콤보 박스에 아이템을 추가해보겠습니다.

 

넣는 항목은 동일하며 다음과 같이 프로그래밍하면 됩니다.

 

Private Sub UserForm_Initialize()
    
    Dim aryComboBox(2) As String
    aryComboBox(0) = "A_Rank"
    aryComboBox(1) = "B_Rank"
    aryComboBox(2) = "C_Rank"
    Me.ComboBox1.List = aryComboBox
    
End Sub

 

aryComboBox라는 행렬변수를 만들고 그 안에 콤보박스 항목을 넣는 형태입니다.

 

그리고 마지막에 

 

Me.ComboBox1.List = aryComboBox 

 

로 항목 지정을 합니다.

 

이렇게 하면 많은 항목을 한번에 지정해야할 경우 사용하기 편합니다.

 


그럼 이것으로 콤보 박스에 대한 설명을 마칩니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀2 - 모듈 생성과 설정

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀3 - Sub, End Sub

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀4 - Range 사용법 및 특징

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀5 - 셀 지정법(Cells, Rows, Columns)

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀6 - Dim 변수선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀8 - 반복문 For

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀9 - 반복문 Do ~ Loop

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀10 - 마지막 행 얻기(End)

등등

 

사용자폼(UserForm)에 대한 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 25 - UserForm

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 26 - UserForm 명령단추

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

 

반응형

댓글()

기초부터 실전까지 VBA 엑셀 25 - UserForm

IT 관련 지식/VBA 공부|2019. 11. 26. 22:09
반응형
728x170

VBA 엑셀 25 - UserForm

 

드디어 UserForm을 배워볼 시간입니다.

 

UserForm의 경우 VBA에서 제일 재밌는 부분중 하나입니다.

 

그 이유는 그래픽을 만들 수 있기 때문입니다.

 

여러분들이 버튼을 만들고 선택을 하고 입력을 할 수 있게 됩니다.

 


1. VBA - UserForm 시작

300x250

UserForm을 만드는 순서는 VBA에서 모듈을 만드는 순서와 크게 다르지 않습니다.

 

(혹시 VBA의 모듈을 생성하는 방법이 기억나지 않는 분은 아래의 링크를 참조해주세요!)

 

VBA 시작 준비

 

VBA 모듈 만들기

 

아래와 같이 모듈이 아닌 "사용자 정의 폼"을 클릭하시면됩니다.

 

그럼 다음과 같은 화면이 나오는데 이 화면이 나오면 성공입니다.

 

그리고 "모듈을 하나 만듭니다. "

 

 

 

 


2. 사용자 폼(UserForm) 표시하기

 

이번에는 VBA에서 명령어를 이용하여 방금 생성한 UserForm을 나타나게 해보겠습니다.

 

생성한 모듈에 다음과 같은 코드를 넣어주세요.

Sub FormShow()
  UserForm1.Show
End Sub

 

그럼 다음과 같은 화면이 나옵니다.

 

 

제목이 UserForm1이라고 나오는데 이것을 한번 바꿔보겠습니다.

 

다시 VBA 프로그래밍 창으로 들어갑니다.

 

 


3. UserForm 창의 제목 바꾸기

 

그리고 다시 UserForm을 클릭하신 다음 왼쪽 하단에 보면 아래와 같은 창이 보입니다.

 

여기서 

 

"Caption"

 

부분을 원하는 제목으로 바꾸면 UserForm의 제목이 바뀌게 됩니다.

 


더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀14 - 메세지 박스 MsgBox

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()

기초부터 실전까지 VBA 엑셀 23 - 북 열기(Open)

IT 관련 지식/VBA 공부|2019. 11. 19. 08:00
반응형
728x170

<VBA 엑셀 23 - 북 열기(Open)>

 

이번에는 VBA를 이용하여 다른 엑셀을 여는 방법에 대해 적어보겠습니다.

 

이 기능을 이용하면 여러 가지 모드(읽기, 쓰기 전용 모드 등)로 읽을 수 있으며 아직 열려있지 않은 엑셀을 열기 때문에 다른 엑셀과 연계, 데이터 참조를 하기에도 매우 유용합니다.

 


1. VBA WorkBooks.Open의 기본형

 

Workbooks.Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

 

이번 기본형 구문의 메소드는 조금 많습니다 ㅎㅎ;;;

 

그럼 각 구문에 대해 설명을 드릴 건데요. 전부는 아니고 주로 사용하는 기능에 대해서만 설명을 드리겠습니다.

 

이름 설명
FileName 실행할 엑셀의 파일 이름.
UpdateLinks 파일의 외부 참조 (링크)의 업데이트 방법을 지정합니다.
ReadOnly 책을 읽기 전용 모드로 열려면 True를 지정합니다.
Password 암호로 보호 된 통합 문서를 여는 데 필요한 암호를 지정합니다.
WriteResPassword 쓰기 보호 된 통합 문서에 기록하는 데 필요한 암호를 지정합니다.

 

이제 각각의 매소드가 의미하는 바를 알려드리겠습니다.

 

FileName

일반적으로 엑셀 파일의 전체 경로를 지정합니다.
FileName : = "C : \ User \ sample.xls"
이와 같이 지정합니다.

 

 

만약 매크로를 쓰고있는 책과 동일한 폴더 라면
FileName : = Thisworkbook.Path & "\ sample.xls"
이와 같이 지정합니다.(여기서 sample.xls는 현재 VBA와 같은 위치의 다른 파일을 의미)
Thisworkbook.Path

위와 같이 지정하면 현재 열려있는 파일의 주소(디렉터리)를 의미합니다.

 

 

UpdateLinks

외부 참조 (링크)이있는 북을 열려고 하면
링크의 업데이트 방법을 묻는 메시지가 사용자에게 표시됩니다.
0 : 외부 참조 (링크)를 업데이트하지 않습니다.
3 : 외부 참조 (링크)를 업데이트합니다.

 


UpdateLinks : = 0
이제 링크가 업데이트되지 않고 통합 문서가 열립니다.
0  False 로 표기 일도 있지만 VBA에서는 False = 0입니다.

 

 

ReadOnly

ReadOnly : = True
파일을 읽기 전용으로 엽니다.

 

 

Password, WriteResPassword

암호로 보호된 통합 문서를 열 경우,
Password : = "읽기 암호"
WriteResPassword : = "쓰기 암호"
이렇게 하면 암호 입력이 나오지 않게 됩니다.

 

300x250

 

다음으로 사용하는 방법에 대해 알아보겠습니다. 

 


Workbooks.Open Filename : = "C : \ Test \ sample.xls"UpdateLinks : = 0, ReadOnly : = True

 

위의 VBA를 실행하면 다음과 같은 설정으로 파일을 열게 됩니다.

  • 링크 업데이트하지 않음
  • 읽기 전용 모드로 열기

이를 앞에서 배운 With과 Set을 연계하여 사용할 수 있습니다.

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 20 - with 구문

 

기초부터 실전까지 VBA 엑셀20 - with 구문

이제부터는 조금 어려운 단계의 프로그래밍을 배워보도록 하겠습니다. 코딩에서 나쁜 행동중 하나는 바로 반복입니다. 우리는 반복을 피하기 위하여 For, Do~Loop 같은 반복문을 배웠습니다...

mmol.tistory.com

Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="C:\User\sample.xls")

이렇게 하면 "wb"를 입력하는 것만으로도 긴 구문을 사용하지 않고 간단히 사용할 수 있습니다.

 


오늘은 이렇게 VBA의 Open 기능에 대해 알아봤습니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 1 - 매크로 사용 준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 14 - 메시지 박스 MsgBox

 

일본에서 이야기하는 한국 뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가 간 약속 지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()