Mungkin begini pak
(ini hanya menurut pendapat siti saja)

Variable Object (misalnya object Range) dibuat, karena object tersebut akan
sering dipakai
(dirujuk entah fisiknya, entah salah satu property atau method nya)
Jika tabel tsb hanya akan disebut satu atau dua kali saja, maka tanpa
menjadikanya
Variable Object Range pun = tidak ada masalah.

Memvariablekan Object Range juga menjadi agak WAJIB jika range tersebut
bersifat dinamis
baik *letaknya* maupun* dimensinya*.

Misal kita (berada di workbook A)  akan mengolah data dlm tabel yg ada range
D17:G201
di Sheet1 workbook B.
Jika tabel tsb harus dirujuk beruang ulang, maka akan lebih gampang jika di
Variablekan dulu

Set MyTabel = Workbooks("B.xls")>Sheets("Sheet1").Range("D17").CurrentRegion

Merujuk Kolom Pertama saja dari yg ada di Range tsb
Set Kolom1 = MyTabel.Resize(MyTabel.Rows.Count,1)

Merujuk Kolom Ke3 saja
Set Kolom3 = MyTabel.Resize(MyTabel.Rows.Count, 1).Offset(0, 2)

Merujuk baris 4 baris pertama
Set First4Rows = MyTabel.Resize(4, MyTabel.Columns.Count)

Merujuk baris 5 baris dimulai baris ke 7
Set Rng5X7 = MyTabel.Offset(6,0).Resize(5, MyTabel.Columns.Count)
atau bisa diringkas
Set Rng5X7 = MyTabel.Offset(6,0).Resize(5, )

Merujuk nilai satu Cell  E19  dikalikan 100 disimpan dlm variable V
V = MyTabel(3,2).Value * 100

Merujuk Range yg dimensinya 6 row x 4 kolom didalam tabel tsb dimulai dari
Cell  E19
Set XRange = MyTabel(3.2).Resize(6,4)

Didalam makro mbak Haps, ada variable D (object range)
Set D = Cells(1).CurrentRegion

di sini memvariablekan D menjadi agak "wajib" karena mungkin saja range di
sheet tsb yg
dimulai dari Cells(1) / A1  setiap saat akan berubah (bertambah datanya)
Dengan Cells(1).CurrentRegion akan didapat A1 sampai Seluas data yg ada di
sekitar A1.


Kadang-kadang kita sudah menyiapkan variable object, tetapi pada prakteknya
di tengah
makro, ternyata hanya dirujuk sekali saja. Jika tidak lupa, harusnya makro
di revisi dulu,
sebaiknya object tsb tidak perlu di variablekan, kecuali syntaks coding
perujukannya
sangat panjang.

Mudah mudahan sekelumit "penjelasan" seadanya di atas dapat ditangkap
maksudnya...
(sambil menungu masukan yg lebih lengkap dari temans lain )..

wassalam,
-siti-




2011/7/9 hendrik karnadi <[email protected]>

> **
>
>
> Jika saya perhatikan, gaya nulis Mbak Haps, Mbak Siti, Mr. Kid dan Pak
> Anton dan para pakar lainnya banyak menggunakan "Variabel" dalam pembuatan
> program (Advance level), sedangkan saya hanya bisa bermain di "Range" (Basic
> level).
>
> Bermain dengan Variable pastinya akan lebih flexibel dibandingan dengan
> Range.
>
> Kalau boleh nanya, bagaimana "cara cepat" beralih dari penggunaan Range ke
> Variable dalam menyusun program ?
>
> Barangkali ada diantara para Pakar yang berkenan menuliskan resepnya.
>
> Terima Kasih.
>
> Salam,
> Hendrik Karnadi
>
>
> --- On *Sat, 9/7/11, Haps <[email protected]>* wrote:
>
> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
> Boolean)
>  ' by hapsari / smg, july 9, 2011
> ' beExcel case:
> ' http://tech.groups.yahoo.com/group/belajar-excel/message/11682
> If Target.Cells.Count = 1 Then
> If Target.Address = "$A$1" Then
> Dim sht As Worksheet, NewSht As Worksheet
> Dim D As Range, i As Integer, c As Integer
> Set D = Cells(1).CurrentRegion
> Application.Calculation = xlCalculationManual
> Application.ScreenUpdating = False
> Application.DisplayAlerts = False
> For Each sht In Worksheets
> If sht.Name <> "Sheet1" Then sht.Delete
> Next
> For i = 2 To D.Rows.Count
> Set NewSht = Worksheets.Add
> NewSht.Name = D(i, 1)
> For c = 1 To D.Columns.Count
> NewSht.Cells(c, 1) = D(1, c)
> NewSht.Cells(c, 2) = D(i, c)
> Next c
> NewSht.Move after:=Sheets(Sheets.Count)
> NewSht.Cells(1).CurrentRegion.Columns.AutoFit
> Next i
> Application.Calculation = xlCalculationAutomatic
> Application.ScreenUpdating = True
> Application.DisplayAlerts = True
> End If
> End If
> End Sub
>
>

Kirim email ke