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

Excel & VBA---Brain Training



아래의 그림과 같이
빈탕의 UserForm을 실행하고
실행중 버튼을 크릭할때마다 버튼이 하나씩 생성되고
생성된 버튼의 Caption은 1~9까지의 난수를 적용한다



버튼은 행방향 10줄,열방향 10줄 총 100개까지
만들수 있게 한다
그리고 생성된 버튼을 크릭하면
같은 Caption값을 갖은(같은 숫자) 버튼을 찾아서
모두 빨강색으로 바꿔주도록 설계해 보시기 바란다

아래의 두개의 구문을 워크시트(Studio라는 이름으로)에
실행시켜 보시기 바란다

양식버튼만들기

Sub addButtonToSheet()
Dim shtX As Worksheet
Dim oCmd As Shape
Set shtX = Worksheets("Studio")
Set oCmd = shtX.Shapes.AddFormControl(xlButtonControl,10, 100, 150, 30)
    With oCmd.TextFrame.Characters
    .Text = "creatControlToSheet"
    .Font.Name = "Tahoma"
End With
End Sub

사용자정의대화상자(UserForm)의 콘트롤의 버튼만들기

Sub addCommandButtonToSheet()
Dim shtX As Worksheet
Dim oCmd As Shape
Set shtX = Worksheets("Studio")
Set oCmd = shtX.Shapes.AddOLEObject( _
    classtype:="Forms.CommandButton.1", Left:=10, _
     Top:=150, Width:=200, Height:=30) 
With oCmd.OLEFormat.Object.Object
    .Caption = "creatUserFormControlToSheet"
    .Font.Name = "Tahoma"
End With
End Sub

모양은 같지만 출신성분이 전혀 틀린다
UserForm에는 두번째 것을 100개 만들어 보라는 이야기다

프로그램이 버전업이 된다고 하는 것은 이와 같이
똑같은 일을 하는데..무언가 기능이 추가 되면서 새로운
오브젝트들이 추가 되는 것이다
첫번째것은 UserForm이라는 것이 추가 되기전에 오래전부터
엑셀에 존재하는 오브젝트인것이다

또한 위의 첫번째것은 Shapes오브젝트라는것이 추가되기전에는 또
아래와 같이 간단하게 작성할수도 있었다

Worksheets("Studio").Buttons.Add 10, 100, 150, 30

Shape라는 오브젝트가 추가되면서 모든 그래픽개체를
Shape오브젝트가 통합관리하게 된것이고...

이런 오브젝트들이 개선되고 추가 되는 과정에서
새로운 오브젝트와 만날때 개발자들이 가장 많이 사용하는
함수는 TypeName()함수 일것이다
에러가 생기면 직접실행창에서 TypeName함수로 정보의 타입을
확인하는 습관을 갖는다면 버전업이 아무리 된다고 해도
코드를 조금수정하거나 추가하면 되는것이다

위와 같이 하면 버튼을 만드는것은 별것 아닐것이고
100개를 만들던..천개를 만들던..순환문과 조건문의
연습이 잘되었다면 이것도 별것이 아닌데
문제는 버튼이 100개 만들어지는데
Click이벤트프로시져를 어떻게 작성할것인지???
과연 문제다!!!
버튼을 크릭할때 어떤 작업이 이루어지게(같은 캡션의 버튼을 찾아서
색상을 빨강색으로 해주기!!)하여야 하는데..!@#$#

***[LOG-IN]***