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 ...

Saturday, February 28, 2015

Menghapus Hyperlinks Tanpa Merubah Format

Pada saat kita membuat hyperlinks pada microsoft excel, secara default format sel akan berubah menjadi font warna biru bergaris bawah. Jika kita menginginkan format yang lain,  maka kita dapat merubahnya kemudian. Proses sebaliknya, ketika kita menghapus hyperlink dengan cara biasa (klik kanan - remove hyperlink), maka secara default, format akan di-clear-kan menjadi font warna hitam tanpa garis bawah.

Berikut contoh ilustrasinya:
Format hyperlink excel
Remove Hyperlink Mengembalikan Format Ke Kondisi Default


Jika kita ingin menghapus hyperlinks tanpa merubah format maka cara berikut mungkin akan membantu.
  • Copy file atau worksheet dimana hyperlinks akan dihapus.  Hal ini berguna sebagai back up.
  • Hapus data yang ada hyperliknya dengan menggunakan tombol DELETE atau  dengan cara Clear Contents. Pada proses ini, hyperlink ikut terhapus bersama data.
  • Kembalikan data yang sudah dihapus tadi dengan cara copy-paste special formula dari file/worksheet back up.
Berikut Contoh Ilustrasinya:
Cara Format Hyperlink Excel
Remove Hyperlink Tanpa Merubah Format

Friday, February 27, 2015

Excel Comment - Macro Untuk Konversi Data Tabel Menjadi Text dalam satu Kolom

Konversi Data Tabel Menjadi Text dalam satu Kolom

Pada tulisan sebelumnya sudah dijelaskan bagaimana caranya mengkonversi text dalam range kolom menjadi text dalam comment box. Proses ini menggunakan prosedur makro yang saya namai convertColumnToCmt .

Dalam beberpa kasus, adakalanya kita harus menyertakan table ke dalam comment. Prosedur makro convertColumnToCmt masih mempunyai kelemahan yaitu ia hanya dapat mengkonversi text dari satu kolom saja. Sedangkan table, seperti kita ketahui terdiri atas beberapa kolom.  Sehingga, untuk dapat menyertakan table kedalam comment,  maka diperlukan prosedur untuk mengkonversi tabel terlebih dahulu menjadi text dalam satu kolom

Part1: Font Type Mono Space

Pada bagian pertama ini saya akan jelaskan cara membuat prosedur macro untuk menggabungkan data table kedalam satu kolom jika font yang digunakan adalah type mono space. Penggunaan font tipe lainnya akan dijelaskan dalam bagian kedua karena memerlukan pendekatan dan prosedur khusus.

Saya sendiri lebih suka menggunakan font type monospace karena kerapian text akan  lebih stabil meskipun ada perubahan pada size font maupun zoom windows. Contoh font mono space yang  biasa digunakan adalah: courier new dan arial monospaced for sap.

Berikut adalah contoh script untuk konversi data tabel menjadi text dalam satu kolom (dengan kata lain : menggabungkan data tabel yang terdiri beberapa kolom menjadi satu kolom saja).

Copykan script berikut pada module standar, dan buat shortcut untuk menjalankan macro-nya.


Sub convertTableToColumn()
Dim r As Range, tabel As Range, xTabel As Range
Dim x As Integer, y As Long, xMax As Long, yMax As Long
Dim textTabel As String, spMax As Integer, sp As Double
Dim spAwal As Double, textSp As String
Set tabel = Selection
Set r = Application.InputBox( _
prompt:="Pilih Satu Sel Untuk Menempatkan Text Tabel", Type:=8)
spAwal = InputBox("Masukan Jarak Spasi", "", 2)
xMax = tabel.Rows.Count
yMax = tabel.Columns.Count
Application.ScreenUpdating = False
For y = 1 To yMax
    spMax = 0
    For x = 1 To xMax
        Set xTabel = tabel.Range(Cells(x, y), Cells(x, y))
        textTabel = Trim(xTabel.Text)
        If Len(textTabel) > spMax Then spMax = Len(textTabel)
    Next x
    For x = 1 To xMax
        Set xTabel = tabel.Range(Cells(x, y), Cells(x, y))
        textTabel = Trim(xTabel.Text)
        sp = spAwal + spMax - Len(textTabel)
        textSp = WorksheetFunction.Rept(" ", sp)
        If y = 1 Then
            textTabel = textTabel & textSp
            r.Offset(x - 1, 0).ClearContents
        Else
            textTabel = textSp & textTabel
        End If
        r.Offset(x - 1, 0) = r.Offset(x - 1, 0) & textTabel
    Next x
Next y
End Sub


 Cara penggunaan prosedur makro ini

  • Sorot table yang akan di konversi
  • Jalankan macro ini
  • Pilih cell tempat dimana table hasil konversi akan ditempatkan
  • Ok
  • Hasilnya: text table digabung menjadi satu kolom
Macro Menggabungkan Tabel Kolom

Semoga bermanfaat... :-)

Thursday, February 26, 2015

Memberi Nama Cell dan Range Pada Microsoft Excel Menggunakan Name Box

Nama sel atau range pada microsoft excel sangat berguna untuk berbagai keperluan diantaranya:

  • Nama sel yang diidentifikasikan sendiri oleh user lebih mudah diingat dibandingkan dengan refferensi range/sel default excel. Misalnya kita akan lebih mengingat "dataku" dibanding "data!A1",  atau lebih mudah mengingat "kumpulanDataku" dibanding ""data!A1:A13"
  • Lebih mudah digunakan sebagai referensi dalam pembuatan formula, terutama jika file excel terdiri atas banyak worksheet. dan formula merujuk ke referensi sumber yang tetap.
  • Lebih digunakan sebagai referensi target hyperlink.
  • Lebih mudah digunakan sebagai referensi dalam penulisan code VBA
  • Lebih mudah digunakan sebagai list data untuk data validasi.
Untuk membuat nama sel/range dapat dilakukan dengan cara berikut:

Menggunakan Name Box

Cara termudah untuk cembuat/identifikasi nama range adalah dengan menggunakan Name Box

Name Box biasanya terlepas di kiri atas layar excel.
Memberi Nama Cell dan Range Excel
Ilustrasi Name Box dan Range
Untuk membuat nama range dapat dilakukan sbb:
  • Sorot range yang akan dibuat namanya (contoh dalam gambar diatas adalah "A1:A13")
  • Ketikan nama yang diinginkan pada Name Box
  • Tekan Enter
Format Penamaan Range/Cell Yang /Benar

  • Karakter yang diperbolehkan adalah alfabet, numerik dan "_"
  • Tidak dapat diawali dengan karakter numerik, jadi harus diawali dengan alfabet, misal nama "1data", adalah salah dan tidak dapat diterima program excel.
  • Tidak boleh ada spasi, misal  "kumpulan data" adalah nama yang salah, yang benar adalah "kumpulanData" atau "kumpulandata"
  • Spasi dapat diganti dengan "_",   contoh "kumpulan_data"


Semoga bermanfaat.. :-)

Macro Untuk Memindahkan Text Dari Cell Ke Kotak Insert Comment

Menambahkan / insert comment pada microsoft excel kadang cukup membosankan terutama jika jumlahnya banyak dan textnya panjang.  Cara yang sering digunakan biasanya dengan klik kanan pada sel yang akan ditambahkan komentar dan kemudian klik insert comment untuk memunculkan kotak komentar. Selanjutnya komentar diketik secara langsung pada kotak insert comment. 

Bagaimana jika ada data berbentuk tabel yang harus disertakan dalam comment?

Metode  yang sering dilakukan pengguna ms excel umumnya dengan cara mengcopy dulu tabel dari excel ke notepad, kemudian mengeditnya supaya susunan text rapi dan berbentuk tabel.  Selanjutnya text notepad tersebut dicopy ke kotak insert comment. 




Jika anda Jenuh dengan cara biasa yang sangat menguras energi, sebaiknya anda mencoba cara yang satu ini untuk melakukan insert comment dengan cara mengambil text langsung dari sell dan memindahkannya ke dalam kotak komentar

Ya, Dengan macro dan VBA, kita dapat melakukan insert comment dengan cepat dan lebih rapi. Berikut contoh script vba macro untuk konversi text kolom menjadi text komentar (insert comment)


‘----------------------------------------------------------
Sub convertColumnToCmt()
Dim r As Range, kolom As Range, rKolom As Range, tf As TextFrame
Dim cmt As String, x As Integer, y As Long, z As Long
On Error GoTo skipError 'error jika pengguna membatalkan proses
Set kolom = Selection
Set r = Application.InputBox( _
prompt:="Pilih Satu Sel Untuk Menempatkan Komentar", Type:=8)
If r.Cells.Count > 1 Then
    MsgBox "TIDAK BERHASIL! - Silahkan Pilih Satu Sel Saja!"
    Exit Sub
End If
r.ClearComments
r.AddComment.Text Text:=" "
Set tf = r.Comment.Shape.TextFrame
For x = 1 To kolom.Rows.Count
    Set rKolom = kolom.Range(Cells(x, 1), Cells(x, 1))
    cmt = rKolom.Text & Chr(10)
    z = Len(cmt)
    With tf.Characters(y + 1, z).Font
        .Parent.Insert (cmt)
        .Bold = rKolom.Font.Bold
        .Italic = rKolom.Font.Italic
        .Underline = rKolom.Font.Underline
        .Name = rKolom.Font.Name
        .ColorIndex = rKolom.Font.ColorIndex
    End With
    y = y + z
Next x
y = 0
For x = 1 To kolom.Rows.Count
'je:2 kali looping untuk menghindari error pada Excel 2007
    Set rKolom = kolom.Range(Cells(x, 1), Cells(x, 1))
    z = Len(rKolom.Text) + 1
    tf.Characters(y + 1, z).Font.Size = rKolom.Font.Size
    y = y + z
Next x
tf.AutoSize = True
Application.Goto r
Exit Sub
skipError: 'jika pengguna membatalkan proses
End Sub
‘-------------------------------------------------------------


Cara menggunakan prosedur makro ini.

  • Pastikan kode vba tersebut sudah di copy pada module standar
  • Seleksi/sorot range yang mengandung text yang akan dipindahkan ke insert comment (sorot satu kolom saja, tapi bukan entirecolumn).
  •  Jalankan makro ini (Anda bisa membuat shortcut terlebih dahulu untuk menjalankan makro ini supaya lebih mudah).
  • Muncul input box : pilih satu sel untuk menempatkan insert comment
  • klik Ok
  • Hasilnya : text dalam kolom yang disorot akan berpindah ke dalam comment box. Format text menyesuaikan dengan format font dalam kolom yang disorot.

    Dan ini contoh hasilnya:

    Menindahkan Text Cell ke Comment Box

    Cara di atas jika digabung dengan macro lainnya dapat juga digunakan untuk memindahkan tabel kedalam kotak insert comment.  

    Jika kita perhatikan kembali cara diatas dimana kumpulan text yang dapat dipindahkan ke dalam kotak insert comment harus berada dalam satu kolom.  

    Oleh karena itu,  untuk memindahkan tabel ke dalam kotak insert comment , kita harus mengkonversi tabel terlebih dahulu menjadi text dalam satu kolom. 

    Silahkan dibaca caranya dalam artikel: Makro untuk menggabungkan text tabel menjadi satu kolom. 

    Selamat mencoba...:)

    Wednesday, February 25, 2015

    Excel Comment - Find & Replace Text dalam Comment

    FIND DAN REPLACE text atau string dalam excel worksheet atau range adalah hal biasa dan mudah dilakukan dengan perintah Find (Ctrl + F)  atau Replace (Ctr + H). Namun bagaimana caranya menemukan dan menukar text dalam exel comment.  Saya  belum menemukan cara lain selain menggunakan vba dan macro.  Contoh script berikut dapat digunakan untuk mencari dan sekaligus mengganti text tertentu dalam comment box.

    1.       Contoh Script untuk mencari dan menghitung text tertentu yang dijumpai dalam text comment dan memberikan informasi hasil dari proses tersebut.

     '----------------------------------------------------------------------------------------
    Sub findTextInComment()
    Dim findStr As String, cmtStr As String, r As Range
    Dim i As Long, findCount As Long, cmtCount As Long
    findStr = InputBox("Text Yang Dicari :")
    If findStr = "" Then Exit Sub

    For Each r In Selection
        If Not (r.Comment Is Nothing) Then
            cmtCount = cmtCount + 1
            cmtStr = r.Comment.Text
            i = InStr(1, cmtStr, findStr, vbTextCompare)
            Do While i <> 0
                findCount = findCount + 1
                i = InStr(i + 1, cmtStr, findStr, vbTextCompare)
                r.Interior.Color = vbGreen
            Loop
        End If
    Next
    MsgBox "Hasil Pencarian :  " & findCount
    End Sub
     '----------------------------------------------------------------------------------------

    2.       Contoh Scrip untuk mengganti text tertentu yang dijumpai dalam text comment, dan memberikan informasi hasil dari proses tersebut:
    Nb: pada script lainnya yang saya jumpai dari berbagai sumber di internet, biasanya proses replace text comment merubah/merusak format sebelumnya. Code vba excel macro berikut sudah di-test dan bekerja tanpa merubah format comment text sebelumnya.

     '----------------------------------------------------------------------------------------
    Sub replaceTextInComment()
    Dim c As Comment, r As Range, i As Long, j As Long, k As Long
    Dim sCmt As String, sFind As String, sReplace As String
    Dim replaceCount As Long, cmtFindCount As Long, cmtCount As Long
    Application.ScreenUpdating = False
    sFind = InputBox("text yang akan ditukar :")
    If sFind = "" Then Exit Sub
    sReplace = InputBox("text pengganti :")
    j = Len(sFind)
    k = Len(sReplace)

    For Each r In Selection
    If Not (r.Comment Is Nothing) Then
        cmtCount = cmtCount + 1
        Set c = r.Comment
        i = InStr(1, c.Text, sFind, vbTextCompare)
        If i > 0 Then
            cmtFindCount = cmtFindCount + 1
            r.Interior.Color = vbBlue
        End If
        Do While i > 0
            If sReplace = "" Or i = 1 Then
                c.Shape.TextFrame.Characters(i, j).Insert (sReplace)
            Else
                sCmt = c.Text(sReplace, i + 1, j - 1)
                c.Shape.TextFrame.Characters(i, 1).Insert ("")
            End If
            replaceCount = replaceCount + 1
            i = InStr(i + k, c.Text, sFind, vbTextCompare)
        Loop
    End If
    Next
    If replaceCount > 0 Then
    Application.ScreenUpdating = True
    MsgBox ("BERHASIL DENGAN KETERANGAN SBB:    " & Chr(10) _
          & "Text Awal: " & Chr(34) & sFind & Chr(34) & Chr(10) _
          & "Text Pengganti: " & Chr(34) & sReplace & Chr(34) & Chr(10) _
          & "Text Diganti: " & replaceCount & Chr(10) _
          & "Comment dicek: " & cmtCount & Chr(10) _
          & "Comment diganti: " & cmtFindCount)
    End If
    End Sub
     '----------------------------------------------------------------------------------------
    Cara menggunakan macro: sorot range yang ada insert comment-nya dan kemudian jalankan makro di atas.
    Selamat Mencoba..

    Tuesday, February 24, 2015

    Excel Comment - Cek Value/String Dalam Comment

    MACRO UNTUK MENGECEK TEXT /STRING DALAM INSERT COMMENT

    Adakalanya insert comment dibuat untuk menjelaskan langkah perhitungan data/angka yang ada dalam sel. Kita dapat mengecek apakah angka akhir perhitungan dalam insert comment sama atau tidak dengan angka dalam sel. 

    vba macro mengecek string / value tertentu dalam insert comment
    Sebenarnya kita bisa mengeceknya satu persatu dengan cara membuka comment (show comment) satu persatu. Namun resiko human error-nya tinggi, apalagi jika dilakukan pada jam ngantuk...:). 

    Saya tidak tahu nilai manfaat cara ini bagi anda. Tapi inilah yang harus saya kerjakan dimana saya harus merekap dan mengecek data-data dari divisi/unit, dimana ada penjelasan data yang dibuat dengan menambahkan insert comment pada data tersebut... dan saya termasuk orang yang "malas" untuk melakukan pengecekan satu persatu.

    Code berikut akan menghitung jumlah insert comment yang tidak matching dengan nilai dalam cell. Dengan code ini, kita bisa langsung tahu dan lebih fokus untuk mengecek penjelasan/comment yang "diduga" tidak tepat.  Memang sih, ini masih banyak kekurangannya karena hanya mengecek ada tidaknya text/string/angka yang seharusnya ada atau tidak dalam comment box.

    'dicoba dulu aja dulu dech...

    Sub cekValInComment()
    Dim cekStr As String, cmtStr As String, r As Range
    Dim notMatchCounter As Long, cmtCounter As Long
    For Each r In Selection
        If r.Value <> "" And Not (r.Comment Is Nothing) Then
            cmtCounter = cmtCounter + 1
            cekStr = Trim(r.Text)
            cmtStr = r.Comment.Text
            If InStr(1, cmtStr, cekStr) = 0 Then
                notMatchCounter = notMatchCounter + 1
                r.Interior.Color = vbRed
            End If
        End If
    Next
    If notMatchCounter > 0 Then
        MsgBox "Dijumpai " & notMatchCounter & " komentar tidak matching dari " & cmtCounter & " yang di-cek"
    End If
    End Sub   

    Ingat, metode ini benar-benar mengecek string value dalam comment dengan forrmat yang persis sama dengan value cell. Jadi harus dipastikan bahwa sistem penulisan angka dalam insert comment harus sama dengan format cell (number).

    Contoh : jika angka dalam cell adalah 20000, sedangkan penulisan dalam insert comment adalah 20.000, maka hal ini akan dianggap tidak matching (tidak ditemukan).



    Monday, February 23, 2015

    Macro Untuk Setting Comment Pada Microsoft Excel

    Untuk melakukan perubahan / setting comment, Excel sendiri sudah menyediakan fasilitas dengan perintah “format Comment” yang dapat diakses dengan cara klik kanan pada comment box. 
    Bagaimana Cara Pengaturan Kotak Komentar Excel
    Melakukan setting comment dengan cara biasa/manual

    Sayangnya dengan cara tersebut, prosesnya dilakukan satu persatu dan tentu saja akan memerlukan banyak waktu. Jika hanya ada 1 atau 2 comment yang harus diedit, mungkin tidak menjadi masalah. Bagaimana jika ada puluhan, ratusan, bahkan ribuan comment yang harus di-edit?

    Cara manual tentunya bukan pilihan yang tepat, kecuali jika kita bersedia untuk lembur semalaman untuk mengerjakannya satu per satu.Bagi saya ini adalah pekerjaan yang sangat membosankan, apalagi tidak ada tuh yang namanya upah lembur...

    Dengan macro dan VBA, pekerjaan tersebut jauh lebih mudah dan efisien. Contoh script berikut dapat digunakan untuk melakukan setting semua comment sekaligus dalam range yang diseleksi, atau dalam aktivesheet bahkan sekaligus dalam satu workbook. Anda dapat mengembangkan  property yang diatur sesuai kebutuhan

    1.       Reset semua  posisi comment box

    Posisi comment box biasanya berubah karena proses hide atau unhide row dan column, atau sengaja digeser untuk keperluan tertentu. Contoh code berikut dapat digunakan untuk reset posisi semua comment box pada kondisi standar.

    a.       Reset posisi semua comment box dalam activesheet

    'Code berikut ini akan mengembalikan posisi semua comment box pada sheet yang aktive menjadi keadaan standar/default

    Sub resetCommentPosition_ws()
        Dim c As Comment, r As Range
        For Each c In ActiveSheet.Comments
            Set r = c.Parent
            c.Shape.Top = r.Top - 7
            c.Shape.Left = r.Offset(0, 1).Left + 11
        Next
    End Sub

    b.      Reset posisi semua comment box dalam activeworkbook

    Code berikut ini akan mengembalikan posisi semua comment box pada semua sheet di dalam file excel yang sedang aktive menjadi keadaan standar/default


    Sub resetCommentPosition_wb()
        Dim c As Comment, r As Range, ws As Worksheet
        For Each ws In ActiveWorkbook.Worksheets
        For Each c In ws.Comments
            Set r = c.Parent
            c.Shape.Top = r.Top - 7
            c.Shape.Left = r.Offset(0, 1).Left + 11
        Next
        Next
    End Sub


    2.       Setting Comment Font

    a.       Set  format font comment  dalam lingkup activesheet

    Sub setAllCommentFont()
    Dim c As Comment
    For Each c In ActiveSheet.Comments
        With c.Shape.TextFrame.Characters.Font
            .Name = "arial"
            .Size = 12
        End With
    Next
    End Sub

    b.      Set font  comment dalam lingkup range yang diseleksi

    Sub setSelectedCommentFont()
    Dim c As Comment, r As Range
    For Each r In Selection
        If Not (r.Comment Is Nothing) Then
            With r.Comment.Shape.TextFrame.Characters.Font
                .Name = "arial"
                .Size = 12
            End With
        End If
    Next
    End Sub

                    Contoh code diatas dapat dikembangkan dan dimodifikasi dengan menambahkan atau mengganti dengan property comment object yang lainnya seperti: autosize, font.bold, font.color, margins dsb. Untuk mengetahui  code-code yang diperlukan dapat menggunakan record macro dan lakukan langkah edit format seperti biasa. Untuk menambah interaktivitas dapat juga ditambahkan fungsi inputbox. Misalnya  untuk menentukan nama font dan ukurannya.


    Semoga bermanfaat...:-)
    Belajar Excel..! Excellent..!

    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