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

Comment|Shape|Comment|Comments|Shape|AutoSize|
|TextFrame|Characters|SelectionChange|
|CheckBoxes|Application.Caller|Visible|Iif|AddComment|

셀의 메모를 다루고 싶다

혹시나 이런 생각들을 하지 않을지 모르겠다
엑셀의 핵심은 Range오브젝트를 중심으로 이루어지는 다양한 분석
들에 대한것이 중요할텐데..쓰잘데 없는 Shape오브젝트같은것으로
페이지를 메꾸어 가나??
Range오브젝트는 엑셀의 코어오브젝트이고 다른 오브젝트를 진행하면서
필연적으로 계속 반복되어 갈것이다
그러니 특별히 페이지를 할애하지 않아도 자연히 알아가게 될것이니
너무 걱정하지 않으셔도 된다
다시 한번 이야기하지만 VB언어의 기본을 익히고
엑셀오브젝트의 기본(Application|WorkBook|WorkSheet|Window|Range)적인것을
익히면 그 다음 부터는
순서가 별로 중요하지 않다,오브젝트가 출연하면 해당오브젝트의 속성과
메소드등의 성질머리를 파악하여 VB언어로 조합하여 사용하면 된다
특히 Shape오브젝트..Control등은 오브젝트를 이해하고 활용하는데
도움을 많이 주는 학습대상이고 엑셀외의 다른 오피스프로그램에서
자연스럽게 활용할수 있는 오브젝트들인것이다
또한 Shape오브젝트가 어떻게 활용되는지..다른 오브젝트들과 어떻게
관계를 유지하는지 보면..아하..순서라는것이 의미가 없겠구나..
하실것이다

이번 페이지는 셀의 메모삽입부분에 대하여 살펴보자
우선 셀에 메모를 삽입하는것은 A1셀에 삽입하고 싶다면

Range("A1").AddComment "this is sample"

과 같이 AddComment라는 Range오브젝트의 메소드를 사용하고
삭제하고 싶다면

Range("A1").Comment.Delete

로 처리한다
그런데 한장의 시트에 많은 셀에 메모가 삽입되어있는데
모두 삭제하고 싶다면 어떻게 할까

Dim oX As Comment
For Each oX In ActiveSheet.Comments
  oX.Delete
Next

이제 Comment오브젝트의 자체를 다루어 보자
이것도 역시 Shape오브젝트가 관련 되어 있다
엑셀의 오브젝트모델상에서의 족보(Hierarchy)관계를 살펴보자
아래의 테이블의 왼쪽열에 마우스를 올려 놓아보시기 바란다

Application
  WorkBooks
    WorkBook
    WorkBook
      WorkSheets
        WorkSheet
        WorkSheet
          Comments
              Comment
              Comment
                  Shape


아무튼 오브젝트라는 것에 대하여 이해시키려고 별짓을 다한다
위에서 본것과 같이 각각의 오브젝트는 해당 오브젝트를 관리하는
집합체(Collection)오브젝트가 있는것도 있고
상위오브젝트하에 딱 하나만 있는 경우도 있다

지나간 페이지에서 살펴본 Shape오브젝트와 Shape오브젝트의
하위 오브젝트를 이곳에서 그냥 써먹으니..
어느 정도 오브젝트라는 것의 편리함을 이해할수 있을것이다
Worksheet상의 Shapes집합체하에 있던 Shape오브젝트만 달랑 빼서
Comment오브젝트 밑에 붙여 버린것이다

그러니 아래의 그림과 같이 메모(Comment오브젝트)의 모양을
마음대로 바꿀수 있는것이다



아래의 화일에서는

  • 셀의 선택을 바꿀때마다 일을 시키려면 어떤 이벤트(SelectionChange)
  • 메모내의 내용도 그림의 변경과 동시에 변경하고 싶다면(TextFrame.Characters.Text)
  • 메모내의 내용의 줄바꿈을 하고 싶다면 (vbCrLf)
  • 메모의 내용이 변할때마다 도형의 사이즈를 자동으로 조정하고 싶으면(AutoSize)
  • 조건구문은 Select~Case가 좋을까..If~End If가 좋을까
  • 하나의 셀에서도 Comment오브젝트에 직접 접근할수 있나??
  • 체크박스를 하나 달아서 메모를 숨겼다..나타났다하게 하고 싶다

이번 페이지부터는 내용을 좀 줄여야 할것 같다
한페이지에 너무 많은 내용을 담으니 웹문서를 여는데
버벅거리고 읽기 지루한 것 같다
될수 있는한 한페이지 하나의 화일..하나의 테마로 하는것이
좋을것 같다는 요청을 하신다(One Page!One Bite!)


Comment Shape