Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

CommandBar|UserForm|ID|Type|Name|TypeName()|
|Caption|ComboBox|CommandButton|Value|UserForm|
|UserForm_Initialize|CommandButton_Click|CommandBars|
|ComboBox.AddItem|Controls|ListBox|ColumnCount|
|ColumnWidths|List|Clear|ColumnHeaders|RowSource|

UserForm을 이용하여 CommandBar오브젝트의 콘트롤 리스팅하기

사용자가 정보를 입력하거나 메시지를 볼수있는 장치는
VBA의 MsgBox함수나 InputBox함수와
Application오브젝트의 InputBox메소드정도밖에 없다
그래서 사용하던것이 DialogSheet라는 오래된 오브젝트가
있으나 UserForm이라는 사용자정의 대화상자가 제공되면서
보다 향상된 사용자대화상자를 활용하게 되었다
주간강좌 초기에서 DialogSheet오브젝트를 다루는 부분은 무시하고
보시기 바란다

CommandBar오브젝트와 명령줄을 구성하는 콘트롤들은
UserForm을 활용하면서 익히기 좋은 일석이조의 대상이다
소루션을 만들때 사용자에게 가장 매력적인 장치를 할수 있는
두개의 큰 비중의 오브젝트를 자~알 익혀 나가서
쎄련된 소루션을 만들도록 하자

아래의 화일에서는 아래와 같은 결과물을 만들어 본다



화일의 내용

  • UserForm만들기
  • UserForm의 Initialize이벤트프로시져의 활용
  • ComboBox에 리스트 채우기(AddItem)
  • CommandButton의 Click이벤트프로시져
  • TypeName함수로 콘트롤타입 알아내기


Use UserForm To List CommandBarControls

UserForm의 ListBox에 직접 CommandBarControls을 리스팅하기

위의 화일에서는 워크시트를 삽입하면서 워크시트에
직접 리스팅하게 하였었다
그림과 같이 리스트박스콘트롤을 하나 더 추가해 본다



아래의 화일에서는

  • ListBox콘트롤을 UserForm에 추가하고
  • 콤보상자에서 명령줄의 이름을 선택할때 발생하는
  • 콤보상자의 Change이벤트를 활용하여
  • 워크시트에 뿌리는 대신에 ListBox콘트롤에 뿌려준다
  • ComboBox나 ListBox모두 List속성이 있고
  • List속성은 배열을 값으로 갖고 있는 속성


Use ListBox To Show CommandBarControls

UserForm을 잘사용할수 있는 몸풀기작업으로
CommandBar콘트롤의 내용을 UserForm으로 처리하면서 살펴본다

UserForm의 ListBox나 ComboBox에서 제목행을 나타나게 할수 없나?

위에서 ListBox콘트롤을 사용하였을때 제목행이 없어서
(ComboBox의 경우도 마찬가지다)
4개의 열이 각각 어떤 속성을 의미하는지 감을 못잡겠다
아래의 그림과 같이 ColumnHeaders속성과 어떤 관계가 있을까?



이 내용을 아래의 화일에서 따져 보자

  • ColumnHeaders속성을 효과적으로 사용하려면
  • 엑셀의 범위와 ListBox나 ComboBox를 연결하여야 한다
  • 그렇지 않고 명령문으로 직접 정보를 열머리정보를
  • 전달할수 있게 만든것이 아니기때문이다
  • 그렇다면 위에서 처리한 내용을 워크시트에 뿌리고
  • 해당범위를 콘트롤과 맵핑시켜야 하겠군!!
  • 그것을 해보자..그러면 열머리가 나타난단 말이지??!!



How To Show Row Head Of ListBox