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

WorkSheet|Find|Buttons.Add|OnAction|

워크시트를 추가할때마다 리스트를 Range오브젝트에 작성하기

Range오브젝트와 WorkSheet오브젝트를 같이 다루도록 하자
WorkSheet오브젝트가 추가될때마다 Range오브젝트의 정해진
셀을 기준으로 차례대로 이름이 계속 추가 되도록 하고
만약 삭제될때는 Range오브젝트에서 해당 이름을 찾아서
동시에 삭제되도록 한다

아주 중요한 Range오브젝트의 Find메소드를 만나게 된다
Find메소드는 Range오브젝트에서 찾고자 하는 것을 찾으면
해당 셀..즉 Range오브젝트를 결과값으로 주니까..
결국은 또다른 Range오브젝트에 접근하는 셈이 되는것이다
Fine메소드를 사용할때는 아래의 그림과 같이
Sample이라는 단어를 찾고 싶을때 xlWhole로 하여야
정확하게 전체문장을 찾아준다는 사실을 잊지마라!!



Set rFind = rList.Find("Sample", , , xlPart)

로 하거나

Set rFind = rList.Find("Sample")

로 하면 Sample_1,Sample_2,Sample,등이 모두 해당되어 의도한 값을
찾지못하고 엉뚱한것을 찾아낸다

아래 화일은
시트를 크릭할때마다 추가삽입하고
추가될때마다 이름을 일련번호가 붙은 이름을 지어주고
동시에 시트의 범위에 리스트를 만들어 준다
삭제연습으로 삭제버튼을 크릭하면 추가된 시트의 이름을
난수로 선택하여 삭제확인후 삭제함과 Range오브젝트상의 리스트에서도
해당 이름을 찾아서 삭제해 나간다
여러가지가 동시에 습득될것이다


Use Find Method Of Range Object

워크시트를 추가할때마다 리스트를 만들고 바로가기 버튼달기

위의 화일을 좀더 확장하여 시트를 만들면서 해당시트로
바로가기 버튼을 만들어 본다
버튼은 나중에 Shape오브젝트에서 다루겠지만..
버튼을 만들때는..


ActiveSheet.Buttons.Add "좌측상단X값","좌측상단Y값","폭","높이"

어떤 오브젝트를 만들고 싶은데..
여기에서는 명령버튼!!을 만들고 싶다
이럴때,어떤 속성이나 메소드를 사용할지 모를때
이때 매크로기록기의 역할이 대단한 도움을 준다
매크로기록기는 이럴때 활용하면 되는것이다

매크로기록기를 활용하자

  • |<<
  • <<
  • >>
  • >>|
1 Of 7










그림과 같은 요령으로 매크로 기록을 하면

Sub Macro1()
'
' Macro1 Macro
' UNO이(가) 03/04/2005에 기록한 매크로
'
Application.CommandBars("Forms").Visible = True
ActiveSheet.Buttons.Add(83.25, 103.5, 74.25, 29.25).Select
Application.CommandBars("Forms").Visible = False
End Sub

매크로대화상자에서 기록된 Macro1을 실행시키면
기록할때의 내용이 그대로 만들어진다
그러나 여기에서 프로그래밍을 익히시는 분들은 매크로기록기에서
기록된 매크로를 그대로 사용하려는 분은 없을것이다
그냥 우리가
알고자 하는것은 검정색부분의 한줄이다
나머지는 쓸데없는 마우스의 움직임을 모두 기록한 셈이 된다
VB편집기의 직접실행창에서 아래와 같이 입력한후 (괄호를 빼고)

ActiveSheet.Buttons.Add 83.25, 103.5, 74.25, 29.25

엔터키를 치면 활성화된 시트상에 똑같은 버튼이 만들어지는것을
볼수 있다
매개변수를 괄호를 치고 사용할때와 괄호를 치지 않고 사용하는
경우는 어떤 경우일까??
만약 생성후 다음작업이 있을때는 괄호를 치고
변수에 담을때(Assign)도 역시 생성후 다음 작업이 이루어지는 셈이다
단순히 생성만 했을때는 괄호를 사용하면 에러가 난다
예를 들어서 생성후 선택을 하고 싶다면
아래와 같이 직접입력창에 입력한후 엔터키를 치면
생성후 선택(Select)이라는 다음작업이 진행된것이다

ActiveSheet.Buttons.Add(83.25, 103.5, 74.25, 29.25).Select

버튼을 만드는데 필요한 오브젝트에 접근하는 속성과 메소드를 알게 된것이고
이것을 작성하고 싶은 작업에 활용하면 되는것이다
직접실행창과 매크로를 이렇게 활용하면 좋겠다
Add메소드에 전달되는 4개의 인수는 버튼의
왼쪽상단꼭지점의 x위치와
왼쪽상단꼭지점의 y위치와
가로폭의 크기와
높이의 크기를 설정하는 숫자이니..원하는 위치를 계산하여 주면 된다

다시 본론으로 들어가서
아래의 화일에서의 자동화작업

  • 시트를 삽입하면서 일련번호가 붙은 이름을 붙여주고
  • 동시에 범위에 시트의 이름을 리스팅하고
  • 이름옆에 버튼을 만들고 버튼에 매크로를 연결한다
  • 버튼을 크릭할때마다 해당 시트로 이동한다
  • 다른 버튼에서는 시트를 한장씩 삭제하고
  • 삭제하면서 해당 버튼도 같이 삭제한다

유심히 보아야 할 내용...

  • OnAction속성의 역할
  • 프로시져를 기능별로 토막을 쳐서 사용하는 이유
  • 오브젝트에 접근하려 할때..삭제를 하던..값을 넣던..항상 없을것으로 가정하자
  • TopLeftCell속성은 또다른 Range오브젝트에 접근하는 속성이다


Add Sheets And Make Button To Navigate Sheets