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

CommandBar|FaceID|Err|Err.Number|Err.Clear|Enabled|
|CopyFace|Application.ScreenUpdating|TypeName()|
|Array()|Worksheet.Paste|Application.DisplayStatusBar|
|Cells|ActiveWindow.ScrollRow|Recursive Procedure|

어떤 CommandBarControls에 FaceID속성이 있는가?

CommandBarControl에는 중요한 3가지 타입이 있다고 했다
그중에서 어느것은 FaceId속성이 있고 어떤것은 없다
FaceId속성을 취급하지 않는 콘트롤에 FaceId속성값을 주려고 한다면
당연히 에러가 나게 된다
엑셀에는 아주 많은 콘트롤의 아이콘을 위한 작은 그림이 들어있고
이 그림중에서 어떤 그림과 어떤 콘트롤과 연결을 할것인지를
정보를 갖고 있는 속성이 FaceID속성인것이다



아래의 화일에서


Paste Face Icon Of CommandBarControl To Sheet

명령줄에는 콘트롤이 다음 단계에도 있지 않은가??

CommandBar오브젝트는 다음 첫번째 단계의 콘트롤이 있는가 하면
해당 콘트롤이 CommandBarControlPopUp타입일 경우는 다음 단계에서
또 콘트롤이 있다
이것을 어떻게 처리하면 하나의 CommandBar오브젝트의 모든 콘트롤을
볼수 있을까??



이번에는 UserForm에서 특정한 명령줄을 선택하고 하였던것을
모든 CommandBar를 순환하면서 해당 명령줄의 하위 콘트롤들을
모두 순환하면서 처리해보자
순환문의 실력과 코딩테크닉이 향상 될것이다

  • 이런 경우..Range 속성이 아닌 Cells속성으로 범위에 접근하는것도 좋은 방법
  • ScrollRow는 반복작업을 할때 화면을 이동시켜 시각적관찰을 가능하게..
  • 순환문이 다단계로 깊이(Deep Nesting) 들어 갈때 어지러움에서 벗어 나는 훈련
  • PopUp타입 콘트롤인가 아닌가를 따지고 다음 순환을 가면 되는군??!!
  • 역시 Err오브젝트의 신세를 단단히 지게 되고
  • StatusBar는 이럴때 써먹으라고 있는것이구나!!
  • 사용하지 않는 콘트롤들이 여분으로 많이 들어 있군


Look For All Controls And CopyFace_1



재귀적용법(Recursive)응용하여 코드를 간결하게

CommandBar오브젝트의 하위 콘트롤을 줄줄이 찾아서 시트에 뿌리는것은
하위 콘트롤이 3단계까지 내려간다는것을 이미 알고 있어서
그냥 평범한 순환문으로 처리해도 된다
그러나 똑같은 패턴의 구문이 몇번 중복되게 코딩한다고 하는것은
문제가 있다
또한 파일의 폴더와 같이 하위 폴더가 몇단계까지 있는지 알지 못하는
경우에는 더더욱 일반적인 순환문으로 처리하기 깝깝해진다
재귀적용법이라는것을 활용하면 구문도 간단해지고 효율적이다
위의 화일을 재귀적으로 풀어 보도록 하자



  • 외부변수의 중요성을 새삼느끼고..
  • 외부변수일때 변수의 초기화를 해주는 습관
  • 재귀프로시져를 호출할때 전달되는 변수를 잘 관찰해보면 이해가 된다
  • Cells속성의 열값과 행값의 변화를 잘 관찰하면 된다
  • 초보님들은 처음 황당하고 헷갈려 할수도 있다..그러나 한줄한줄 잘 따져보시면..
  • 이것을 이해하면 위의 화일로 작성한 코드가 참으로 무식해 보인다


Look For All Controls And CopyFace_2