BelajarVBA 011 - Range 01 (berdasar alamat range)


Coretan Mr. Kid



Sudahkah kita mensyukuri apa yang kita dapatkan hari ini ?

Kegiatan VBA dalam Excel tidak pernah bisa lepas dari melakukan sesuatu terhadap range. Range adalah object yang paling pokok dalam Excel. Ketika bisa memanfaatkan range dengan baik, maka sebagian besar kegiatan otomasi ataupun pembangunan aplikasi berbasis Excel akan menjadi lebih mudah. Bahasan kali ini adalah tentang range yang akan dimulai dari hal dasarnya, yaitu tahu cara merujuk ke suatu range yang dibutuhkan. Apapun tindakan terhadap range adalah permasalahan yang bisa dipelajari lebih lanjut setelah tahu cara mendapatkan range yang dibutuhkan. Usahakan untuk mencobanya secara langsung pada sebuah workbook ber-macro (.xlsm) disebuah module umum.



Mendapatkan range dialamat tertentu


Hal dasar dalam merujuk suatu range adalah mengetahui ada dimana range yang dibutuhkan tersebut. Yang paling sering adalah merujuk range yang sudah diketahui alamatnya, seperti range di B2 atau di D4 sampai G9 dan sebagainya. Jika sudah diketahui alamatnya, maka alamat tersebut disusun berupa data teks. Jika ditulis langsung, maka pasti harus diapit karakter tanda petik dua ("). Jika disimpan dalam sebuah variabel, maka variabelnya harus ber-datatype String.

Untuk bahasan pertama ini, seluruh script akan diletakkan pada sebuah prosedur bernama RangeAlamatTertentu di sebuah module umum. Bunyi blok prosedur tersebut adalah :
Public Sub RangeAlamatTertentu()
    Dim rng As Range
    Dim sAlamat As String, lBaris As Long, sKolom As String
    Dim sAlamat1 As String, lBaris1 As Long, sKolom1 As String
    Dim sAlamat2 As String, lBaris2 As Long, sKolom2 As String
    Dim sAlamatDari As String, sAlamatSampai As String
    Dim lBarisDari As Long, lBarisSampai As Long
    Dim sKolomDari As String, sKolomSampai As String
   
    'baris kode akan dimulai dari baris kosong setelah baris ini
   
End Sub


Beberapa cara merujuk range berdasar alamat yang sudah diketahui :
Sebuah range dengan alamat B2
'>> alamat B2 saja
'langsung
Set rng = Range("B2")           'simpan di variabel bernama rng
rng.Value = "Be-Excel"          'tulis ke range
rng.Copy                        'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address   'pesan bahwa range terpilih sudah ter-copy 


'pakai variabel alamat
sAlamat = "B2"                  'simpan alamat di variabel bernama sAlamat
Set rng = Range(sAlamat)        'simpan di variabel bernama rng
rng.Value = "Be-Excel"          'tulis ke range
rng.Copy                        'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address   'pesan bahwa range terpilih sudah ter-copy 


'nomor baris divariabel tertentu
lBaris = 2                      'simpan nomor baris di variabel bernama lBaris
sAlamat = "B" & lBaris          'susun alamat berbunyi B2 dan disimpan di sAlamat
Set rng = Range(sAlamat)        'simpan di variabel bernama rng
rng.Value = "Be-Excel"          'tulis ke range
rng.Copy                        'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address   'pesan bahwa range terpilih sudah ter-copy

'nama kolom divariabel tertentu
sKolom = "B"                    'simpan nama kolom di variabel bernama sKolom
sAlamat = sKolom & 2            'susun alamat berbunyi B2 dan disimpan di sAlamat
Set rng = Range(sAlamat)        'simpan di variabel bernama rng
rng.Value = "Be-Excel"          'tulis ke range
rng.Copy                        'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address   'pesan bahwa range terpilih sudah ter-copy 


'nomor baris dan nama kolom divariabel tertentu
lBaris = 2                      'simpan nomor baris di variabel bernama lBaris
sKolom = "B"                    'simpan nama kolom di variabel bernama sKolom
sAlamat = sKolom & lBaris       'susun alamat berbunyi B2 dan disimpan di sAlamat
Set rng = Range(sAlamat)        'simpan di variabel bernama rng
rng.Value = "Be-Excel"          'tulis ke range
rng.Copy                        'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address   'pesan bahwa range terpilih sudah ter-copy


Dari contoh script diatas tampak bahwa kegiatan yang utama adalah mendapatkan alamat range yang dibutuhkan. Apapun informasi yang sudah dimiliki, harus bisa disusun menjadi alamat range yang dibutuhkan, meski harus memprosesnya lebih dulu seperti penyusunan alamat pada baris-baris kode sAlamat = blablabla.

Beberapa range yang terpisah, yaitu K2 dan M2
Alamat range disusun dengan menggabungkan seluruh alamat yang dibutuhkan dengan dipisah karakter koma (,). Untuk merujuk ke range K2 dan M2, maka teks alamat harus tersusun berbunyi "K2,M2".
'>> alamat K2 dan M2
'langsung
Set rng = Range("K2,M2")            'simpan di variabel bernama rng
rng.Value = "Be-Excel"              'tulis ke range
rng.Copy                            'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address       'pesan bahwa range terpilih sudah ter-copy

'pakai variabel alamat
sAlamat = "K2,M2"                   'simpan alamat di variabel bernama sAlamat
Set rng = Range(sAlamat)            'simpan di variabel bernama rng
rng.Value = "Be-Excel"              'tulis ke range
rng.Copy                            'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address       'pesan bahwa range terpilih sudah ter-copy

'alamatnya didapat dari 2 variabel berbeda
sAlamat1 = "K2"                     'simpan alamat1 di variabel bernama sAlamat1
sAlamat2 = "M2"                     'simpan alamat2 di variabel bernama sAlamat2
sAlamat = sAlamat1 & "," & sAlamat2 'susun alamat lengkap dan simpan di sAlamat
Set rng = Range(sAlamat)            'simpan di variabel bernama rng
rng.Value = "Be-Excel"              'tulis ke range
rng.Copy                            'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address       'pesan bahwa range terpilih sudah ter-copy

'semua alamatnya berupa elemen penyusun
lBaris1 = 2                         'simpan baris alamat1 di lBaris1
sKolom1 = "K"                       'simpan kolom alamat1 di sKolom1
sAlamat1 = sKolom1 & lBaris1        'susun alamat1 dan simpan di sAlamat1
lBaris2 = 2                         'simpan baris alamat2 di lBaris2
sKolom2 = "M"                       'simpan kolom alamat2 di sKolom2
sAlamat2 = sKolom2 & lBaris2        'susun alamat2 dan simpan di sAlamat2
sAlamat = sAlamat1 & "," & sAlamat2 'susun alamat lengkap dan simpan di sAlamat
Set rng = Range(sAlamat)            'simpan di variabel bernama rng
rng.Value = "Be-Excel"              'tulis ke range
rng.Copy                            'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address       'pesan bahwa range terpilih sudah ter-copy


Dari contoh script diatas, apapun proses untuk mendapatkan masing-masing alamat, tetap saja harus ada sebuah proses yang memastikan bahwa ada alamat yang berbunyi "K2,M2" alias adanya karakter koma yang menjadi delimiter antar alamat range yang dibutuhkan. Penyusunan alamat yang memasang karakter koma tersebut adalah pada baris kode berbunyi :
   sAlamat = sAlamat1 & "," & sAlamat2
yaitu teks alamat pertama digabungkan dengan karakter koma dan digabungkan juga dengan teks alamat kedua.

Dari range pertama sampai range kedua, yaitu D2 sampai G9
Alamat range disusun dengan menggabungkan seluruh alamat yang dibutuhkan dengan dipisah karakter titik dua (:). Untuk merujuk ke range D2 sampai G9, maka teks alamat harus tersusun berbunyi "D2:G9".
'>> alamat D2 sampai G9
'langsung

Set rng = Range("D2:G9")         'simpan di variabel bernama rng
rng.Value = "Be-Excel"           'tulis ke range
rng.Copy                         'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address    'pesan bahwa range terpilih sudah ter-copy

'pakai variabel alamat
sAlamat = "D2:G9"                'simpan alamat di variabel bernama sAlamat
Set rng = Range(sAlamat)         'simpan di variabel bernama rng
rng.Value = "Be-Excel"           'tulis ke range
rng.Copy                         'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address    'pesan bahwa range terpilih sudah ter-copy

'alamatnya didapat dari 2 variabel berbeda
sAlamatDari = "D2"                          'simpan dari di sAlamatDari
sAlamatSampai = "G9"                        'simpan sampai di sAlamatSampai
sAlamat = sAlamatDari & ":" & sAlamatSampai 'susunan lengkap, simpan di sAlamat
Set rng = Range(sAlamat)                    'simpan di variabel bernama rng
rng.Value = "Be-Excel"                      'tulis ke range
rng.Copy                                    'copy range terpilih ke clipboard
MsgBox "Range " & rng.Address               'pesan sudah ter-copy


Dari contoh script diatas, Penyusunan alamat yang memasang karakter titik dua adalah pada baris kode berbunyi :
   sAlamat = sAlamat1 & ":" & sAlamat2
yaitu teks alamat pertama digabungkan dengan karakter titik dua dan digabungkan juga dengan teks alamat kedua. Sampai disini, tentu sudah bisa menyusun alamat range yang data penyusun setiap alamatnya terpisah-pisah seperti dari kolom D baris 2 sampai kolom G baris 9. Silakan dicoba.

Beberapa range tunggal terpisah dan sebuah area range, yaitu B10 dan dari C13 sampai L27
Alamat range disusun dengan menggabungkan kedua bentuk contoh diatas. Alamat range B10 digabungkan dengan alamat range dari C13 sampai L27 dengan karakter pemisah berupa karakter koma (,). Alamat range C13 sampai L27 itu sendiri disusun dengan menggabungkan alamat C13 dan L27 dengan karakter pemisah berupa karakter titik dua (:). Jadi alamat lengkapnya akan berupa teks berbunyi "B10,C13:L27".
'>> alamat B10 dan dari C13 sampai L27
'langsung

Set rng = Range("B10,C13:L27")   'simpan di variabel bernama rng
rng.Value = "Be-Excel"           'tulis ke range
MsgBox "Range " & rng.Address    'pesan alamat range terpilih

'pakai variabel alamat
sAlamat = "B10,C13:L27"          'simpan alamat di variabel bernama sAlamat
Set rng = Range(sAlamat)         'simpan di variabel bernama rng
rng.Value = "Be-Excel"           'tulis ke range
MsgBox "Range " & rng.Address    'pesan alamat range terpilih 


'alamatnya didapat dari variabel-variabel yang berbeda
sAlamat1 = "B10"                             'simpan alamat1 di sAlamat1
sAlamatDari = "C13"                          'simpan dari di sAlamatDari
sAlamatSampai = "L27"                        'simpan sampai di sAlamatSampai
sAlamat2 = sAlamatDari & ":" & sAlamatSampai 'susun alamat2 di sAlamat2
sAlamat = sAlamat1 & "," & sAlamat2          'susun lengkap di sAlamat
Set rng = Range(sAlamat)                     'simpan di variabel bernama rng
rng.Value = "Be-Excel"                       'tulis ke range
MsgBox "Range " & rng.Address                'pesan alamat range terpilih


Dari contoh diatas, tampak bahwa ada proses penyusunan alamat yang dari suatu range sampai range lainnya dengan karakter pemisah adalah karakter titik dua (:). Kemudian alamat lengkap disusun dengan menggabungkan alamat pertama dengan hasil penyusunan alamat kedua dengan karakter pemisah adalah karakter koma (,).

Pada contoh ini juga tidak ada proses meng-Copy range terpilih ke Clipboard. Hal ini disebabkan karena range terpilih membentuk 2 (dua) area range yang tidak memiliki jumlah baris atau jumlah kolom yang sama setiap areanya. Selain itu, juga tidak memiliki nomor baris atau lokasi kolom pojok kiri atas yang sama disetiap areanya. Area pertama adalah area range 1 baris x 1 kolom di range B10. Area kedua adalah C13:L27 yang terdiri dari 15 baris x 10 kolom. Area pertama tidak dimulai (pojok kiri atasnya) di baris 13 atau di kolom C. Jika area pertama membentu area dengan dimensi N baris x 10 kolom dengan pojok kiri atas area di kolom C atau 15 baris x N kolom dengan pojok kiri atas area di baris 13, maka proses Copy terhadap range terpilih dapat dilakukan dan tidak menimbulkan error.

Sampai disini, tentu sudah bisa menyusun alamat range yang setiap data penyusunnya terpisah seperti kolom A baris 10 dan dari kolom C baris 13 sampai kolom L baris 27. Silakan dicoba.

Simpulan

Merujuk ke suatu range berdasar alamatnya cenderung membutuhkan pemahaman bekerja dengan datatype String. Pemahaman untuk bekerja dengan datatype String digunakan untuk menyusun secara detil dan tepat alamat range yang akan dirujuk atau yang dibutuhkan. Pada umumnya, dengan proses setahap demi setahap yang membutuhkan banyak variabel seperti pada contoh-contoh diatas, akan memudahkan menyusun alur proses penyusunannya. Hal ini akan mengurangi kemungkinan munculnya kesalahan dalam menyusun baris kode. Biasanya, dengan latihan terus menerus akan tiba juga untuk bisa bekerja dengan datatype String dalam menyusun bentukan teks tertentu tanpa menggunakan banyak variabel.

Bahasan diatas bisa jadi terasa terlalu dasar dan tampak sepele. Tetapi, bahasan diatas adalah konsep dasar tentang merujuk suatu range. Semoga bahasan diatas bisa mudah dipahami, sehingga akan memudahkan pemahaman pada pembahasan-pembahasan berikutnya.

:)

Insya Allah bahasan berikutnya adalah tentang merujuk ke range diseluruh baris atau diseluruh kolom.





Tidak ada komentar:

Posting Komentar