Terima kasih Mbak SIti atas penjelasannya. Contoh ini dapat menambah wawasan bagi saya dan teman2 yang lain mengenai pemanfaatan Variabel dalam program, walupun dalam "prakteknya" lebih kompleks (perlu usaha keras untuk memahami logikanya).
Sekali lagi terima kasih. Salam, Hendrik Karnadi --- On Sat, 9/7/11, STDEV(i) <[email protected]> wrote: From: STDEV(i) <[email protected]> Subject: Re: [belajar-excel] Bagaimana beralih dari penggunaan Range ke Variabel dalam membuat Program To: [email protected] Date: Saturday, 9 July, 2011, 11:56 PM 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 sajaSet 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 VV = 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 ThenIf Target.Address = "$A$1" Then Dim sht As Worksheet, NewSht As WorksheetDim D As Range, i As Integer, c As Integer Set D = Cells(1).CurrentRegionApplication.Calculation = xlCalculationManual Application.ScreenUpdating = FalseApplication.DisplayAlerts = False For Each sht In WorksheetsIf sht.Name <> "Sheet1" Then sht.Delete NextFor i = 2 To D.Rows.Count Set NewSht = Worksheets.AddNewSht.Name = D(i, 1) For c = 1 To D.Columns.CountNewSht.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 iApplication.Calculation = xlCalculationAutomatic Application.ScreenUpdating = TrueApplication.DisplayAlerts = True End IfEnd If End Sub

