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

OptionButton|TextBox|Spinner|
CommandButton|ComboBox|Spinner|OptionButton|TextBox|Parent|Rows|Resize|
|CommandButton|Iif()|Enabled|Max|Min|New Collection|
|AddItem|ComboBox|

참으로 제공되는 콘트롤이 많다
콘트롤 도구상자의 TextBox,Spinner,CommandButton콘트롤을
활용하여 무언가 만들어 보면서 감각을 확장시켜 나가보자
TextBox콘트롤은 셀을 입력도구로 사용할때와 틀린 장점은
열의 폭을 조정하면 한꺼번에 모두 같은 폭이 되어 시각적으로
보기 흉하게 되지만 TextBox는 독립적으로 폭을 유지할수 있어서
시트의 열폭의 조정에 영향을 받지 않는다

정보를 찾아서 TextBox콘트롤에 옮기기

아래의 그림과 같이
데이타가 어떤 시트에 들어 있을때
Spinner콘트롤을 크릭할때마다 Spinner콘트롤의 값에 의하여
데이타의 해당행의 값을 두개의 TextBox에 불러 올린다



아래와 같은 작업을 필요로 한다

  • 유효한 데이타범위를 알아내기
  • 데이타의 시작행과 종료행을 알아내어 Spinner콘트롤의 Max,Min속성값으로
  • Spinner의 Value값에 의하여 유효한 범위내의 해당행을 찾아내고
  • 해당행에서 두개의 셀을 찾아서 각각의 TextBox콘트롤의 값으로 준다
  • CommandButton콘트롤의 Caption속성을 문자열로 조합하여 준다
  • 콘트롤도구상자의 Design Mode와 Run Mode를 잘 이해하여야 한다


TextBox Spinner CommandButton

OptionButton를 추가하여 새정보입력과 기존정보의 수정

OptionButton두개를 추가하여 기능을 확장해 보자
여러개의 콘트롤이 사용될때 중요한 점은

Dim blnX As Boolean
Sub Object_A_SomeEvent()
If blnX=True Then 
    Exit Sub
Else
    Object_A의 본래의 이벤트발생시의 작업
End If
End Sub

Sub Object_B_SomeEvent()
Object_B의 작업중에 Object_A의 속성값을 바꿔주어야 한다면
blnX=True
Object_A.Value="SomeValue"
blnX=False
Object_B의 작업계속...
End Sub

와 같이 B 콘트롤에서 A 콘트롤의 값을 바꿔야 한다면
값을 바꿀때 의도하지 않은 A콘트롤의 이벤트가 쓸데없이 발생하지 못하도록
통제를 하여야 한다
이 감각이 없으면 날밤을 새는 경우가 초보님들에게는 왕왕 발생한다
아래의 화일에서는 이런 관점에서 잘 관찰하면서 숙달하시기 바란다



아래와 같은 작업을 필요로 한다

  • 프로그래밍은 오브젝트의 이벤트발생을 기본으로 한다는것을 실감한다
  • 여러개의 오브젝트들의 기능의 충돌없이 콘트롤하는것이 프로그래밍
  • UserForm의 콘트롤을 워크시트에서 활용한다는 관점
  • 의도적이지 않은 오브젝트의 이벤트발생의 통제


TextBox Spinner CommandButton Optionbutton

ComboBox콘트롤 추가하고 삭제기능 추가하기

위의 화일들에서 삭제기능이 없었다
삭제기능을 추가하고 콤보상자를 추가하면 새로운 정보를 입력할때
편리하게 해보자
위의 화일에서 각각의 콘트롤에 분산된 같은 작업명령들을
하나의 새로운 프로시져를 만들어서 각각의 콘트롤에서 공동으로
사용하게 하여 코딩을 간략하게 정리해보자



아래와 같은 작업을 추가한다

  • 간단하지만 데이타관리의 추가,삭제,보기,갱신의 기능을 모두 해본다
  • Collection오브젝트를 이용하여 유일한 값만 찾아서 콤보상자에 담는다
  • 산발적으로 분산된 중복된 구문을 한곳에 몰아서 관리한다


TextBox Spinner CommandButton OptionButton ComboBox