Assalamu'alaikum Wr. Wb. mas Zain,
Nama aslinya adalah defined names. Ketika yang dirujuk oleh defined names adalah suatu range, maka defined names tersebut bisa juga disebut named range (nama range kalo lidah londo indonesia). *Nilai dalam suatu defined names* bisa *diambil dengan *memanfaatkan *Evaluate*. Contoh : dim vNilai as variant vnilai=evaluate( "=myDefinedNames" ) Kondisi *defined names merujuk ke suatu range*, maka *object* *range *yang dirujuk defined range bisa *diambil dengan menyebutkan nama defined names nya.* Contoh : debug.print *Range( "myDefinedNames" )*.value menuntut bahwa myDefinedNames harus dirujuk ke suatu object range tertentu. Cara diatas akan *mengambil si object range *lalu melihat isi properti bernama Value. Jadi, nilai yang didapat ketika memanggil range dengan menyebut defined names-nya adalah hasil kerja object range melalui properti value milik object range dan bukan karena defined names-nya. Properti value milik defined names berisi definisi rujukan untuk defined names tersebut dan menggunakan bahasa formula Excel yang diawali dengan karakter sama dengan. Kasus : myNameA dirujuk dengan bunyi =sheet1!$a$1 -> anggap saja di sheet1 cell a1 berisi nilai 123 myNameB dirujuk dengan bunyi =456 > Pakai evaluate untuk ambil nilai data (bukan nilai definisi rujukan) yang disimpan oleh defined names debug.print evaluate( "=mynamea" ) 'atau evaluate( "mynamea" ) [tanpa sama dengan] #hasilnya : 123 **myNameA merujuk ke range di sheet1 pada cell A1. Berhubung berupa object, maka si evaluate mendatangi range A1 di sheet1 kemudian permisi akan melihat isi properti value milik si object range a1 tersebut. debug.print evaluate( "=mynameb" ) #hasilnya : 456 **myNameB merujuk ke suatu nilai konstanta. Berhubung berupa sebuah nilai konstanta, maka si evaluate langsung meminta ijin kepada object defined names untuk mengevaluasi rujukan yang disimpan oleh si defined names bernama myNameB. > Pakai properti value object range debug.print *range*( "mynamea" ).value #hasilnya : 123 **myNameA merujuk ke range di sheet1 pada cell A1. Berhubung berupa object, maka si *range *(yang bekerja) memeriksa dulu apakah object-nya bertipe object range. Jika ya, maka si *range *akan mendatangi range A1 di sheet1 kemudian permisi akan melihat isi properti value milik si object range a1 tersebut. debug.print range( "mynameb" ).value #hasilnya runtime error sekiun gitu (mestinya runtime error ya.... moga2 gak kliru) **myNameB merujuk ke suatu nilai konstanta. Berhubung berupa sebuah nilai konstanta, maka si *range *(yang bekerja) memeriksa dulu apakah object-nya bertipe object range. Ternyata bukanlah sebuah object range, maka si *range *bingung dan panik. Jalan keluar yang menurut si akan membawanya selamat adalah mengatakan secara jujur bahwa si range tidak bisa berbuat apa-apa karena gak punya wewenang (kalo ndak salah run time errornya tentang ketidak mampuan si object range untuk mengerjakan baris itu. biasanya kalau yang ndak mampu-ndak mampu begini error runtime 1004) > iseng pakai properti Value milik si defined names debug.print names("myNameA").value #hasilnya : =sheet1!$a$1 **myNameA merujuk ke range di sheet1 pada cell A1. Si object Names mencari defined name bernama 'myNameA' lalu melihat isi properti value dan menampikkannya debug.print names("myNameB").value #hasilnya : =456 **myNameB merujuk ke suatu nilai konstanta. Si object Names mencari defined name bernama 'myNameB' lalu melihat isi properti value dan menampilkannya hehehhe.... jadi untuk baris : MsgBox "Nilai [RangeKedua]: " & 0 + Mid(Names("RangeKedua").Value, 2, 99) bisa dibayangkan hasilnya jika defined name bernama 'RangeKedua' merujuk ke suatu object range tertentu atau ke suatu nilai konstanta yang bertipe data text ;) Wassalamu'alaikum Wr. Wb. Kid. 2014-11-07 13:40 GMT+11:00 'zainul_ulum[at]yahoo[dot]com' zainul_u...@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com>: > > > Rekan be-excelers, > > Saya mempunyai vba code seperti berikut: > '============================= > Sub TestNameRange() > 'A. Tes Pertama > 'A.1. Mengisi nilai di [A1] > Range("A1").Value = 123456 > > 'A.2. Mebuat named range [RangePertama] > Range("A1").Name = "RangePertama" > > 'A.3. Mengambil nilai dari [RangePertama] > MsgBox "Nilai [RangePertama]: " & Range("RangePertama").Value > > 'B. Tes Kedua > 'B.1. Membuat name range [RangeKedua] dan mengisi dengan nilai constant > Dim sName As Name > Set sName = Names.Add("RangeKedua", "789") > 'B.2. mengambil nilai dari [RangeKedua] > 'ERRORNYA TUH DI SINI....::: > MsgBox "Nilai [RangeKedua]: " & Range("RangeKedua").Value > End Sub > '==================================== > > Errornya bisa hilang jika saya menggunakan code: > > MsgBox "Nilai [RangeKedua]: " & 0 + Mid(Names("RangeKedua").Value, 2, 99) > > Mohon penjelasannya kenapa error tersebut bisa muncul? > > terimakasih > -zainul > > >