Minggu, 22 Februari 2009

Mengendalikan Range

Mengendalikan Range merupakan hal yang penting dalam pemograman VBE. Mari kita mulai, pertama buatlah sebuah file contoh.xls. Kemudian buatlah sebuah makro dengan cara Record New Maro,



beri nama macro tersebut dengan nama Coba, dan shortkey tombol q di keyboard Anda.



ketikan kata coba pada range A1



lalu Stop Recording Macro



Lihat hasil pencatatan pada Visual Basic Editor Excell Anda,



kode Macros akan tertulis pada module1,



Range("A1").Select

Merupakan perintah pada VB Excell untuk memilih range A1, bila “A1” diubah menjadi “A4” maka kata “coba” akan dituliskan pada range A4.

ActiveCell.FormulaR1C1 = "coba"

Berarti pada sel aktif yang telah dipilih (select) rumus (Formula) “coba” akan dituliskan. Activecell sendiri menunjuk pada sel dimana kursor aktif.



Rangkaian kode di atas dapat disederhanakan dengan kode seperti berikut ;



bila dijalankan, maka kode ini akan menghasilkan yang sama dengan sebelumnya.



Menggunakan Range dengan Cell

Kita dapat membuat sebuah range pada Excell sebagai “titik pusat” lalu dengan bantuan Cells(Rowindex, Columnlindex)., kita dapat menempatkan sebuah nilai atau rumus di sekitar Range yang menjadi pusat. Sebagai contoh tuliskan kode ini pada Sub Coba()

Range("D5").Cells(1, 1).Value = "pusat"

Range("D5").Cells(0, 1).Value = "atas"

Range("D5").Cells(2, 1).Value = "bawah"

Range("D5").Cells(1, 0).Value = "kanan"

Range("D5").Cells(1, 2).Value = "kiri"



jalankan program, maka hasilnya akan seperti demikian;



dapat dilihat Range(“D5”).Cells(1,1) adalah Range D5 yang menjadi pusat.

Bila Range tidak disebutkan maka secara default , Range yang menjadi titik pusat adalah Range A1. Anda harus berhati-hati ketika memilih range-range yang berada di tepi, seperti A1, A2, B1, C1, dst. Sebab tidak ada lagi range di atas atau di tepi kanan range-range tersebut.



Bila kita menginginkan sel yang menjadi titik pusat adalah sel dimana kursor aktif, maka kode berikut dapat digunakan

ActiveCell.Offset(0, 0).Value = "pusat"

ActiveCell.Offset(0, 1).Value = "kiri"

ActiveCell.Offset(0, -1).Value = "kanan"

ActiveCell.Offset(1, 0).Value = "bawah"

ActiveCell.Offset(-1, 0).Value = "atas"



buka Sheet1, pilih Range D5



lalu tekan Ctrl +q, maka akan menghasilkan



kemudian pilih range H15, tekan Ctrl+q maka akan dihasilkan,



Selain dengan kode diatas, terdapat cara lain



bila dijalankan maka hasil yang sama akan didapatkan.

Menunjuk sel pada worksheet tertentu

Karena ditulis di module maka kode-kode diatas bekerja pada Worksheet yang aktif. Artinya bila Sheet1 yang sedang tebuka maka program aka dijalankan pada Sheet1. Bagaimana bila kita menginginkan agar range yang ditunjuk berada di dalam sheet tertentu. Caranya cukup dengan menuliskan nama worksheet di depan range, sebagai contoh:

Sheet1.Range(“A1”).value=”oke”

Akan mengacu pada range A1 pada Worksheet Sheet1, bila kita menginginkan agar range A1 pada Sheet2 maka ganti kode sebelumnya dengan:

Sheet2.Range(“A1”).value=”oke”

Cara penulisan lain juga dapat dilakukan, contohnya:

Set Pesan = Sheets("sheet3").Range("A1")

Set Pesan = Sheets(2).Range("A1")



Multiple Range

Kita sudah mempelajari bagaimana menujuk sebuah range tunggal sebagai sasaran pemograman. Sekarang bagaimana bila kita menginginkan multiple range.

Range (“A1:C3”).value = ”oke”

Range(“A1”,”D4”).value = “oke2”

Kode-kode di atas menunjuk pada multiple range. Pada kode pertama yang ditunjuk adalah range A1 sampai C3, sedanga yang kedua adalah A1 sampai D4.

Range Bernama

Bagi Anda yang sering menggunakan Excel, mungkin sering memberi nama pada sebuah range untuk mempermudah pekerjaan. Pertanyaan dapatkah menunjuk range bernama tersebut dalam VB Excel ? jawabannya, DAPAT!!

Misalkan Anda memiliki sebuah range yang bernama “sel”, maka range ini dapat ditunjuk dengan kode Range (“sel”), sebagai contoh:

Range (“sel”).value = ”ini sel”

Membuat Sebuah Variabel dari Range

Membentuk sebuah variabel dari range sangatlah mudah pada VBE. Tujuannya agar mempermudah dalam pemograman. Pertama kita harus membuat dimensinya terlebih dahulu, caranya dengan menuliskan kode seperti ini:

Dim Pesan As Range

Kemudian kita set variabel tersebut, sesuai dengan range yang kita inginkan ;

Set Pesan = Range("A1")

Atau

Set Pesan = Range("A1").Cells(1, 2)

atau

Set Pesan = Sheet1.Range("A1")

atau

Set Pesan = Sheets("Sheet3").Range("A1")

Kemudian kita dapat melakukan operasi range pada variabel yang telah dibentuk. Sebagai contoh

Dim Pesan As Range

Set Pesan = Sheet1.Range("A1")

Pesan.Value = "pesan nih"

Pesan(1, 2).Value = "pesan kedua"

Range A1 pada Sheet1 akan tertulis “pesan nih” dan range A2 akan tertulis “pesan kedua”. Sebab Pesan(1,2) sama dengan Sheet1.Range(“A1”).Cells(1,2).

Sebenarnya kita dapat membentuk variabel tanpa membuat dimensinya terlebih dahulu, tetapi cara ini idak dianjurkan karena memboroskan memori. Caranya adalah seperti demikian:

Set Pesan = Sheet1.Range("A1")

Pada kasus ini perintah-perintah berikut bisa bekerja,

Pesan.Value = "pesan nih"

Pesan(1, 2).Value = "pesan kedua"

6 komentar:

Anonim mengatakan...

bagus nih buat teman yang mau belajar vbe excel, agar perintah tidak berulang-ulang mas coba tolong kasih contoh penggunaan select case dan do while biar kita pada lebih ngerti nih tanks ya..

Ben mengatakan...

oke..saya coba buatkan tulisannya...dituggu saja.

Anonim mengatakan...

bisa ndak mas, buat hyperlink ke sheet yang tersembunyi?
sehingga hanya tampak 1 sheet tapi jika di klik hyperlink-nya bisa langsung nyambung ke sheet yang lain.

trimakasih atas jawabannya...saya tunggu lho...

Ben mengatakan...

bisa mas, bisa bikin button yang nyambung ke sheet lain.

yang diatus adalah properti visible pada sheet
contoh

Sheet1.Visible = xlSheetHidden

maka sheet1 akan tersembunyi, dan bila

Sheet1.Visible = xlSheetVisible

sheet1 akan muncul..

semoga membantu..

Anonim mengatakan...

salam kenal om ben

saya khazena, baru mengenal vb dan banyak bekerja dengan angka.selama ini selalu kerja manual. saya mohon bantuan, apa bisa & gmn rumus VB nya ???
cara mengimpor isi file dari file excel lain (kondisi tidak aktif)
cth: sheet 1 range A1:A100. ke ws excel yg kita kerjakan. file di import hanya dengan mengcopy nama filenya saja & di pastekan pada tempat yang di tetapkan lalu tinggal klik comand button update.isinya tercopy semua.

terima kasih banyak ditunggu pencerahannya & semoga sukses selalu

Ben mengatakan...

sepertinya kode berikut cocok untuk permasalhana Anda....coba saja...

Private Sub CommandButton1_Click()

Dim wb As Workbook
Dim ws As Worksheet
Set ws = ActiveSheet
Set wb = Workbooks.Open(Application.GetOpenFilename)

wb.Worksheets(1).Cells.Copy
ws.Range("A1").PasteSpecial
wb.Save
wb.Close

End Sub