Yth. Pak MrKid

Terima kasih responnya.
Step-step solusi arahan bpk sangat menarik, alur fikirnya mudah dicerna. Saking 
fahamnya saya dgn uraian bpk, saya sempat operkonpidens kalo ini mudah utk saya 
bereskan sendiri.
Ternyata saya msh kesulitan men-translate 'bahasa manusia' ke 'bahasa mesin 
VBA'.
Belasan jam begadang melototin monitor, Makronya bisa dieksekusi, tapi hasilnya 
msh semrawut. Akhirnya saya Nyerah :D
Mohon bpk koreksi dmn letak kesalahannya (sekaligus kunci jwbnnya dah ya) 
hehe.. Makasih sblmnya.

Wassalam
Imam Sinurat

Option Explicit

Sub MergedanBorder()

Dim rngData As Range
Dim rangenya_kolom3 As Range
Dim rngDiProses As Range
Dim rngAwalMerge As Range
Dim lRec As Long, r As Long

With Sheet1
    'Lokasi Utak-atiknya dipindah agar data aslinya tidak terganggu:: copast 
range g5 ke range s5
    .Range("g5:j25").Copy Destination:=.Range("s5")
    
    'initialisasi data
    Set rngData = .Range("s8").CurrentRegion
    lRec = rngData.Rows.Count - 1

    Set rangenya_kolom3 = rngData.Resize(lRec, 1).Offset(1, 2)
    Set rngAwalMerge = rngData.Offset(1, 2).Resize(1, 1)
End With

'loop setiap range di kolom 3
For Each rngDiProses In rangenya_kolom3

'didalam loop ada tahap cek isi range yang sedang diproses oleh loop (pada 
contoh for each diatas adalah cek isi rngDiProses)
'jika ada isinya, maka lakukan :
    If rngDiProses.Value <> "" Then
    
    '1. merge cell dari cell awal diperluas sebanyak variabel jumlah cell
        'rngAwalMerge.Resize(variabel_jumlah_cell).Merge
        r = rngDiProses.Rows.Count
        rngAwalMerge.Resize(r).Merge

    '2. beri border dobel dibawah range yang sedang diproses oleh loop (misal 
di rngDiProses),
        'tetapi mulai kolom ke-1 (offset 2 kolom kekiri) yang diperluas 1 baris 
x sekian kolom data
        rngAwalMerge.Offset(0, -2).Resize(, 4).Borders(xlEdgeBottom).LineStyle 
= xlDouble

    '3. set cell awal merge baru (untuk blok merge berikutnya)
        'Set rngAwalMerge = rngDiProses
        Set rngAwalMerge = rngDiProses
        
    '4. set ulang jumlah cell kembali ke 1 karena cell awal merge yang baru 
adalah cell pertama yang dimerge untuk blok merge tersebut

      'jika tidak ada isinya alias kosong, maka lakukan :
            '1. penambahan jumlah cell yang harus di-merge dengan 1
    Else
       rngAwalMerge.Resize(r + 1).Merge
       
    End If

'sampai akhir loop, yaitu di baris Next
Next rngDiProses

'setelah selesai, lakukan merge dari cell awal merge yang ada sebanyak jumlah 
cell yang tercatat

'kemudian akhiri dengan memasang border dobel untuk sisi bawah (xledgebottom) 
dari seluruh area data yang ada
rngData.Borders(xlEdgeBottom).LineStyle = xlDouble

End Sub

------------------------------
Pada Sab, 11 Mei 2013 11:09 Waktu Terang Hari Pasifik Mr. Kid menulis:

>Sepertinya Pak Imam akhir-akhir ini sedang giat belajar VBA ya..
>gimana jika garis besar prosesnya saja dulu ya.......

Attachment: Border_Formatting_Makro.xlsm
Description: Binary data

Kirim email ke