Pak Tio,
Jan tidak tau kenapa pak Tio hobi sekali menggunakan R1C1 style, tapi dari
pada membahas hal tersebut, coba kita lihat salah satu script dari pak Tio:
Private Sub cmdJml2_Click()
Dim xFormula, xFormula2, xFormula3, xFormula4 As Integer
xFormula = RC & Cells(5, 5).Column
xFormula2 = RC & Cells(5, 8).Column
xFormula3 = RC & Cells(5, 5).Row
xFormula4 = RC & Cells(5, 8).Row
Cells(5, 11).FormulaR1C1 = "=Sum(R" & xFormula3 & "C" & xFormula: R" &
xFormula4 & "C " & xFormula2)"
End Sub
pembahasan 1:
>>> deklarasi variabel seperti di bawah ini akan menghasilkan data dengan
tipe seperti ini:
Dim xFormula, xFormula2, xFormula3, xFormula4 As Integer
xFormula bertipe Variant
xFormula2 bertipe Variant
xFormula3 bertipe Variant
xFormula4 bertipe Integer
>>> untuk pembuktiannya silakan dicoba dengan menggunakan:
debug.print typename(nama_variabelnya) atau skrip yang semisal itu
>>> untuk solusinya, maka deklarasi harus diubah menjadi:
Dim xFormula as Integer, xFormula2 As Integer, xFormula3 As Integer,
xFormula4 As Integer
pembahasan 2:
>>> skrip di bawah ini akan menghasilkan nilai sebagai berikut:
xFormula = RC & Cells(5, 5).Column menghasilkan nilai 5
xFormula2 = RC & Cells(5, 8).Column menghasilkan nilai 8
xFormula3 = RC & Cells(5, 5).Row menghasilkan nilai 5
xFormula4 = RC & Cells(5, 8).Row menghasilkan nilai 5
>>> skrip di atas akan menghasilkan nilai sesuai baris atau kolom
>>> skrip untuk xFormula3 dan xFormula 4 adalah identik, sehingga salah
satunya bisa dihilangkan
>>> sebetulnya nilai baris 5, nilai kolom 5 sampai dengan 8 jika sudah
diketahui dengan pasti, dan dipastikan nilai tersebut tidak akan berubah
(kalo dilihat dari skripnya harusnya seperti itu) maka keempat baris sckipt
tersebut dapat dihilangkan, akibat dengan hilangnya 4 baris tersebut maka
akan dapat menghilangkan pula deklarasi variabel sebelumnya, manfaat yang
di dapat adalah:
>>> proses dapat lebih cepat
>>> kapasitas penggunaan memory dapat lebih kecil karena alokasi spase
untuk variabel daoat dihilangkan
Pembahasan 3:
jika seluruh deklarasi dan skript di atas dihilnagkan, maka seharusnya yang
tersisa adalah baris ini (walaupun syntax-nya masih error)
Cells(5, 11).FormulaR1C1 = "=Sum(R" & xFormula3 & "C" & xFormula: R" &
xFormula4 & "C " & xFormula2)"
>>> jika saja hasil yang akan disimpan adalah nilainya .Value daripada
berbentuk formula .FormulaR1C1 maka kapasitas file dapat diperkecil
>>> Sum adalah salah satu fungsi milik worksheet yang dapat digunakan dalam
VBA karena itu ditulis sebagai WorksheetFunction.Sum
>>> dalam menjumlahkan menggunakan Sum maka diperlukan range data yang akan
dijumlahkan oleh sebab itu diperlukan Range()
>>> range data sudah diketahui yaitu pada baris 5, kolom 5 sampai dengan
kolom 8, karena itu bisa digunakan Cells()
sehingga jika ditulis akan menjadi seperti ini:
Private Sub cmdJml2_Click()
Cells(5, 11).value = WorksheetFunction.Sum(Range(Cells(5, 5),Cells(5,
8)))
End Sub
Pembahasan 4:
Penggunaan Indentasi (penulisan masuk ke dalam) akan memudahkan membaca
logika pemrograman
Silakan dicoba untuk prosedur yang lainnya.
Wassalam,
-Miss Jan Raisin-
Pada 15 April 2013 07.21, <[email protected]> menulis:
> **
>
>
>
> Dear BeExceller,
>
> Mau tanya, bagaimana menjumlahkan range tertentu dengan R1C1 style dengan
> parameter yang kita berikan.
>
> Contoh terlampir :
>
>
>
> Terima kasih,
> Wassalam,
> Tio
>
>