Biar malas asal pas pak zainul..., yang repot udah malas ga pas (ga ngerti) 
kayak saya.

Salam,
HK

Sent from Samsung Mobile"zainul_ulum[at]yahoo[dot]com" <[email protected]> 
wrote:waduh…

ternyata aku termasuk dalam mode malas=on…

terimakasih penjelasannya mas Kid…

 

kapan kumpul-kumpul lagi-lagi?

 

wassalam

-zainul-

 

From: [email protected] [mailto:[email protected]] On 
Behalf Of Mr. Kid
Sent: Thursday, February 13, 2014 11:09 PM
To: BeExcel
Subject: Re: [belajar-excel] Bagaimana penulisan Range yang benar ?

 

 

hehehe....

ternyata mengungkapkan segala sesuatu secara eksplisit dalam pemrograman adalah 
kebiasaan yang baik...

ndak percaya ?

ayo kita buktikan....

ada cekrip berbunyi :
Dim rgAsal As Range

Set rgAsal = Range([E1])  'jika ditulis Set rgAsal = [E1] maka hasilnya akan 
salah

 

pada coretan tentang evaluate yang ada disini dijelaskan bahwa evaluate 
menghasilkan object range jika ekspresinya menghasilkan object range. Hasil 
evaluate akan menghasilkan nilai skalar kalau ekspresinya tidak bisa 
menghasilkan object range.

 

Pada kebiasaan kebanyakan pengguna VBA, tampak sekali betapa malasnya menulis :

[E1].value untuk mengambil isi dari cell E1

yaitu dengan menulis (mode malas=on) berbunyi :

[E1]

contoh :
dim sIsiCell_E1 as string, sIsiModeMalas as string

sIsiCell_E1=[E1].value  'akan malas ditulis dan lebih memilih tulisan cekrip 
berbunyi :

sIsiModeMalas = [E1]
disini juga dijelaskan bahwa setiap object range memiliki properti default 
bernama Value. Itu sebabnya banyak yang menulis seperti sIsiModeMalas = [E1]

Ketika sudah nested seperti :
Set rgAsal = Range([E1])

maka kemungkinan kehilangan arah akan semakin besar.

bagian [E1] menghasilkan object range

bagian Range( ) meminta inputan berupa string (teks)

karena diminta memberikan teks, maka bagian [E1] akan mengambilkan properti 
default dari range yang bernama Value.

Jadi, sebenarnya, bagian :
Set rgAsal = Range([E1])

sama dengan penulisan mode rajin=on berbunyi :
Set rgAsal = Range([E1].value)

Kalau sudah sampai sini, maka akan jelas tampak, kenapa kok berbeda antara :

Set rgAsal = Range([E1])

dengan
Set rgAsal = [E1]

So... beberapa karakter yang membuat jelas segala sesuatu bukanlah perlambatan, 
tetapi sesungguhnya percepatan dengan keamanan penuh.

Wassalam,

Kid.

 

 

2014-02-13 22:24 GMT+07:00 hendrik karnadi <[email protected]>:

 

Dear Be-Excellers,

Salah satu kesulitan dalam bermacro adalah pemahaman object dan variabel serta 
penulisannya.

Meskipun Mr. Kid telah banyak bercerita mengenai VBA, namun ada satu hal yang 
buat saya "masih mengganjal" (ga sesuai dengan nalar orang awam), yaitu 
bagaimana penulisan range yang benar dan bagaimana penggunaannya.

 

Macro ini saya kutip dari "jawaban" pak Zainal sebelumnya. Tujuan dari macro di 
bawah ini adalah untuk mengcopy beberapa sel yang tersebar ke dalam satu Range 
yang berurutan, dengan bantuan Range("E1").

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As 
Boolean)

    Dim rgAsal As Range, rg As Range, i As Integer

    Set rgAsal = Range([E1])  'jika ditulis Set rgAsal = [E1] maka hasilnya 
akan salah

    i = -1

    For Each rg In rgAsal

    i = i + 1

    [F1].Offset(i, 0) = rg.Value

    Next

    

    Cancel = True

End Sub

 

Pertanyaan :

Jika penulisan range [F1] cukup ditulis [F1] saja maka seharusnya Range([E1]) 
cukup ditulis [E1] saja.

Tetapi jika pada VBE Sheet Range([E1]) kita ganti dengan [E1] maka hasilnya 
tidak sesuai dengan yang diharapkan.

Mengapa ?

Untuk lebih jelasnya saya lampirkan file yang berisi macro tersebut.

Salam,
HK

 

 


Kirim email ke