엑셀(Excel) VBA 메모의 내용을 바로 옆 셀에 표시하는 방법

엑셀(Excel)/VBA

엑셀(Excel) VBA 강좌 - 메모값 알아오는 방법

 

환경: Microsoft Excel 2013

 

VBA 는 엑셀 시트에 있는 데이터를 참조할 수 있도록 개체를 제공합니다. 메모 데이터를 다루기 위해서는 Comment 가 필요합니다. 이번 예제는 A열의 셀에 있는 메모 내용을 가져와서 바로 옆에 B 셀로 복사해 보겠습니다. 

 

▼ 그림처럼 A 열의 각 셀에 메모가 추가 되어 있습니다. 매크로 버튼을 하나 만들어서 클릭을 하면 함수가 실행되고 A열의 메모값을 가져와서 바로 옆 셀에 집어 넣을 것입니다. 

엑셀(Excel) VBA 메모의 내용을 바로 옆 셀에 표시하는 방법

 

▼ 함수의 시작은 Range 함수로 A 열의 영역을 리턴 받습니다. Set rngArea = Range("A2:A10") 부분입니다. 영역의 값을 하나씩 꺼내기 위해 For Each 문을 이용합니다. 반복 중에 셀에 추가 되어 있지 않은 메모가 있을 수 있으므로 If rng.Comment Is Nothing Then 사용해서 분기합니다. 이렇게 추출한 셀 영역인 rng 에서 rng.Comment.Text 메모값을 가져옵니다. 메모 개체는 Comment 입니다. 가져온 메모값을 Offset(, 1) 코드를 사용해서 한 칸 옆으로 이동합니다. B 열이 되는 것이죠. 그곳에 메모값을 입력합니다.

 

Option Explicit

 

Sub 메모_Click()

   

    Dim rng As Range, rngArea As Range

    Set rngArea = Range("A2:A10")

   

    rngArea.Offset(, 1).ClearComments

   

    For Each rng In rngArea

        If rng.Comment Is Nothing Then ' 메모가 없을때

           'no comment

        Else

           rng.Comment.Visible = False

           rng.Offset(, 1).Value = rng.Comment.Text

        End If

    Next rng

 

End Sub

 

엑셀(Excel) VBA 메모의 내용을 바로 옆 셀에 표시하는 방법

 

▼ 매크로 버튼을 만들어서 함수와 연결합니다. 결과는 다음과 같습니다. 메모의 내용을 바로 옆 셀에 표시하였습니다. 그런데 메모는 삭제하지 않고 보이지 않게 표시하였습니다. 기존 메모를 삭제하고 싶다면 어떻게 해야 할까요? 셀 옆에 메모 내용을 표시하고 rng.Comment.Delete 와 같이 Delete 함수를 사용해야 합니다. 

엑셀(Excel) VBA 메모의 내용을 바로 옆 셀에 표시하는 방법

Posted by 녹두장군