Featured Post

Lookup Gambar Dengan INDEX MATCH

Apakah Pencarian Gambar bisa dilakukan di excel? Pertanyaan ini sangat menarik sekali untuk dibahas. Jika pembaca mengikuti blog ini, pada ...

Monday, February 23, 2015

Macro Untuk Melihat dan Menyembunyikan Comment Excel




show hide comment excel
MS Excel Comment
Mungkin anda pernah mempresentasikan data-data dalam Microsoft excel dimana setiap data harus dijelaskan dengan insert comment. Masalah yang dijumpai dan cukup merepotkan pada saat presentasi adalah sbb:

Untuk melihat exel comment biasanya dengan cara memposisikan kursor pada cell yang ada commentnya. 

Masalahnya Jika cell ada di sisi kanan kanan visible range, maka untuk melihat comment harus menggeser layar komputer ke kanan. 



Jika comment cukup panjang, mau tidak mau harus klik kanan dan show comment untuk melihat text comment sampai ke ujung bawah. 

Bagi saya ini cukup melelahkan jika setiap melihat comment harus melakukan prosedur ini. 

Belum lagi kalau box komentar posisinya sangat jauh dari sel tempat komentar tersemat. Sehingga sering terbesit pertanyaan kenapa harus ada insert comment yang panjang dalam bahan presentasi?

Susahnya menyisipkan dan mereview komentar pada data excel saya alami dulu sebelum mengenal macro dan vba. 

Dan diakui atau tidak, tidak ada cara lain untuk melipatgandakan kemampuan excel selain fitur vba dan macro, termasuk dalam hal " memainkan" komentar excel.


Wow, dengan vba dan macro kita bisa melakukan show/hide comment dengan lebih cepat dan tidak perlu khawatir perihal posisi comment box. Cukup copy script berikut pada modul object dan buat keyboard short cut untuk memudahkan menjalankan perintah tersebut



1. Show /Melihat comment dan memposisikannya tepat dibawah dan sebelah kanan cell


Sub showCommentKanan()

On Error GoTo skipError

    With ActiveCell.Comment.Shape
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = ActiveCell.Offset(0, 1).Left + 2
        .Parent.Visible = True
    End With
skipError:
End Sub

2. Show /Melihat comment dan memposisikannya tepat dibawah kiri activecell

Sub  showCommentKiri()
On Error GoTo skipError
    With ActiveCell.Comment.Shape
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = ActiveCell.Offset(0, 1).Left - .Width + 2
        .Parent.Visible = True
    End With
skipError:
End Sub

3. Show /Melihat comment dan memposisikannya tepat dibawah tengah activecell

Sub showCommentTengah()
On Error GoTo skipError
    With ActiveCell.Comment.Shape
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = ActiveCell.Offset(0, 1).Left - .Width / 2
        .Parent.Visible = True
    End With
skipError:
End Sub

4. Menyembunyikan / hide comment sekaligus reset  comment box pada posisi standar

Sub hideComment()
On Error GoTo skipError
    With ActiveCell.Comment.Shape
        .Parent.Visible = True
        .Top = ActiveCell.Top - 7
        .Left = ActiveCell.Offset(0, 1).Left + 11
    End With
skipError:
End Sub

5. Show Comment  serta menempatkan pada lebar visible range.  

Sub showCommentAuto()
Dim vr As Range
Set vr = ActiveWindow.VisibleRange
On Error GoTo skipError
    With ActiveCell.Comment.Shape
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = ActiveCell.Offset(0, 1).Left + 2
        If .Left + .Width > vr.Left + vr.Width Then
            .Left = vr.Left + vr.Width - .Width
        End If
        .Parent.Visible = True
    End With
skipError:
End Sub

6. Show dan Hide Comment dengan satu code sekaligus 


(Saya Sarankan Menggunakan Code ini). Dengan menjalankan code ini kita dapat melihat/menyembunyikan comment box secara bergantian tergantung kondisi activecell pada saat code akan dijalankan. Contoh code berikut menggabungkan showCommentAuto (no 5) dan code untuk menyembunyikan comment box.



Sub showHideCommentAuto()
Dim vr As Range
Set vr = ActiveWindow.VisibleRange
If Not (ActiveCell.Comment Is Nothing) Then
    If ActiveCell.Comment.Visible = False Then
    With ActiveCell.Comment.Shape
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = ActiveCell.Offset(0, 1).Left + 2
        If .Left + .Width > vr.Left + vr.Width Then
            .Left = vr.Left + vr.Width - .Width
        End If
        .Parent.Visible = True
    End With
    Else
        ActiveCell.Comment.Visible = False
    End If
End If
End Sub

7. Show dan hide comment juga dapat dijalankan secara otomatis ketika cells diseleksi. 

Untuk menjalankan fungsi ini, code harus diletakan pada module worksheet menggunakan worksheet selection change event. Comment box akan muncul otomatis sesuai cell yang diseleksi.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim vr As Range
Set vr = ActiveWindow.VisibleRange
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
If Not (ActiveCell.Comment Is Nothing) Then
        With ActiveCell.Comment.Shape
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = ActiveCell.Offset(0, 1).Left + 2
        If .Left + .Width > vr.Left + vr.Width Then
            .Left = vr.Left + vr.Width - .Width
        End If
        .Parent.Visible = True
    End With
End If
End Sub

1 comment:

Terimakasih sudah berkunjung dan membaca blog ini. Silahkan berkomentar.