Featured Post

Cara Menggunakan Rumus untuk Data Validation

Bagaimana cara menggunakan rumus untuk validasi data di Excel? Dengan rumus, kita bisa melakukan kustomisasi data validation. Yuk kita lihat...

Thursday, February 26, 2015

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

    10 comments:

    1. kalo dari comment ke cell gimana mas?

      ReplyDelete
    2. Halo mba LIA anggaplah kita ingin mengcopy text comment dari activecell ke CELL sebelah kanannya
      sub ambilKomen()
      on error resume next
      activecell.offset(0,1).value = activecell.comment.text
      end sub

      ReplyDelete
    3. Yang ini musti praktik langsung sm Bapak sblm budgeting mulai sibuk...Bisa khan pak??

      ReplyDelete
    4. Yang ini musti praktik langsung sm Bapak sblm budgeting mulai sibuk...Bisa khan pak??

      ReplyDelete
      Replies
      1. Sy sudah buat tool nya pak : income-c
        AddIn nya juga ada, klw mau

        Delete
    5. mass jika kita ingin meng-copy dari comment dalam suatu range menjadi text dalam suatu range, tetapi hasil copy an nya hanya text dalam commentnya saja bagaimana ya ?

      ReplyDelete
      Replies
      1. Contoh : untuk mengcopy text comment dari range sel ke range sel sebelah kanannya


        Sub ambilKomentar()
        Dim sel As Range
        For Each sel In Selection
        If Not sel.Comment Is Nothing Then
        sel.Offset(0, 1).Value = sel.Comment.Text
        End If
        Next
        End Sub

        Delete
    6. Permisi mau nanya...saya punya problem ingin menampilkan komentar pada sebuah sel dimana komentar yang muncul dapat berubah-ubah sesuai isi sel...contoh: pada sebuah sel A1 dipilih "Teman 1" maka komentar yang muncul pada sel A1 adalah "Teman teman SD" dan bila sel A1 diganti pilihan "Teman 2" maka komentar yang muncul pada sel A2 adalah "Teman SMP" dst....trimakasih pencerahannya

      ReplyDelete
    7. Code berikut dapat digunakan, namun dioperasikan secara manual pada sel yang diupdate

      Sub updateCmt()
      'menambahkan comment sesuai text dalam activecell
      Dim komentar As String
      On Error Resume Next
      komentar = ActiveCell.Text
      ActiveCell.Comment.Delete
      ActiveCell.AddComment komentar
      End Sub

      ReplyDelete

    Terimakasih sudah berkunjung dan membaca blog ini. Silahkan berkomentar.