프로젝트 및 실습/VBA

[VBA] Comment Object 삽입

jooona 2022. 8. 1. 21:01
반응형

VBA를 활용해 셀에 Comment를 삽입할 수 있습니다.

Sub Add_Comment()

    Dim sht As Worksheet
    Set sht = Sheet6

    sht.Range("A1").AddComment ("This is Comment")

End Sub


참고로 이미 셀 내에 Comment가 존재하는 경우 AddComment를 실행하면 오류가 발생하게 됩니다. 이미 Comment가 존재하는지를 확인한 뒤, 존재하는 Comment가 없을 경우에만 Comment를 작성하고 싶다면 아래와 같이 코드를 작성해주면 됩니다.

Sub Add_Comment()

    Dim sht As Worksheet
    Set sht = Sheet6

    If sht.Range("A1").comment Is Nothing Then
        sht.Range("A1").AddComment ("This is Comment")
    End If
    
End Sub

 

위와 같이 코드를 작성하면 자신이 지정한 Sheet의 셀에 다음과 같이 Comment가 작성됩니다.

 

 


Comment Object는 다음과 같은 6개의 Property를 가집니다.

Property Read_Only Description
Application Yes Comment를 생성한 응용 프로그램 (Excel)
Author Yes Comment를 생성한 작성자
Creator Yes Comment를 생성한 응용 프로그램을 나타내는 정수 값
Parent Yes Comment의 상위 객체 (Range Object)
Shape Yes Comment에 첨부된 Shape Object
Visible No Comment가 보이는 경우 Visible = true


예시로 다음과 같은 코드로 Comment의 작성자를 확인할 수 있습니다.

Sub Who_Make_Comment()

    Dim sht As Worksheet
    Set sht = Sheet6
    
    MsgBox sht.Range("A1").comment.Author
    
End Sub

 


또한, 다음의 Method들을 통해 Comment Object를 사용할 수 있습니다.

Method Description
Delete Comment를 삭제
Next 해당 Worksheet의 다음 Comment를 반환
Previous 해당 Worksheet의 이전 Comment 를 반환
Text Comment를 반환하거나 설정


예시를 들어보겠습니다.

3개의 Comment를 작성해주고, 2번 Comment를 기준으로 Previous 와 Next, Text Method를 통해 각 Comment들의 내용을 MsgBox로 출력하는 예시 코드입니다.

Sub Comment_Example()

    Dim sht As Worksheet
    Set sht = Sheet6
    
    sht.Range("A1").AddComment ("This is first Comment")
    sht.Range("A2").AddComment ("This is second Comment")
    sht.Range("A3").AddComment ("This is third Comment")
    
    MsgBox sht.Comments(2).Text
    MsgBox sht.Comments(2).Previous.Text
    MsgBox sht.Comments(2).Next.Text
    
End Sub

 


다음으로, Comment를 삭제하는 예시입니다.

 

Sub Delete_Comment()

    Dim sht As Worksheet
    Set sht = Sheet6
    
    Dim comm As comment
    
    For Each comm In sht.Comments
    
        comm.Delete
        
    Next
    
End Sub


For Each 문 내에 조건문을 삽입하여 원하는 조건을 충족하는 Comment만 삭제하도록 응용하여 사용하시면 됩니다.


마지막으로 Comment의 배경색을 변경하는 코드입니다.

Sub Change_Comment_ForeColor()

    Dim sht As Worksheet
    Set sht = Sheet6
    
    sht.Comments(1).Shape.Fill.ForeColor.RGB = RGB(180, 180, 180)
    
End Sub


위 코드를 실행하면 아래 사진과 같이 메모의 배경색이 변경됩니다.

 



Reference: Excel 2010 Power Programming With VBA / John Walkenbach

반응형