Nah ini ada tambahan dari Pak Anton,
menggunakan fungsi Run
dengan syntax :
Run "namaprosedurnya"

Dalam pembahasan yang lalu, telah dikenalkan tentang Public dan Private.
Dengan karakteristik public dan private itu, maka dimungkinkan membuat
module yang nama-nama prosedur dan variabelnya antar module atau malah
antar object class yang sama.

Misal, ada 2 prosedur berkarakteristik private di module1 dan module5 yang
namanya sama yaitu Cetak
Maka dari module7 bisa dilakukan pemanggilan prosedur cetak secara
berurutan mulai dari cetak menurut proses di module1 diikuti cetak menurut
proses di module5 sebagai berikut :

'dimodule 7 ada prosedur ini
public sub CetakSemua()
       Run "module1.cetak"
       Run "module5.cetak"
end sub

Jadi penggunaan prosedur private yang ada dimodule lain adalah melalui
sebuah fungsi VBA bernama Run

Wassalam,
Kid.
On Tue, Mar 27, 2012 at 13:21, summonery <[email protected]> wrote:

> **
>
>
> Moga-moga jadi bingung dan jadi punya imajinasi lain tentang variabel,
> public, private dsb, sehingga selalu muncul rasa ingin tahu lebih banyak
> lagi.
>
> Amiin...
>
> >> karakteristik Private
> -- prosedur dengan karakteristik private tidak dapat dipergunakan oleh
> siapapun selain pemiliknya (object tempat tinggalnya)
>
> Namun dengan memanggilnya dengan Run "NamaProsedurDiModuleYangLain" kita
> dapat menjalankan suatu prosedur lain yang berada di module yang berbeda
> meski prosedur yang dipanggil berkarasteristik private.
>
>
> >semoga bermanfaat
>
>
> --- In [email protected], "Kid Mr." <mr.nmkid@...> wrote:
> >
> > Ikutan lagi....
> >
> > Dalam VB/VBA, mestinya sudah tahu bahwa ada kelompok-kelompok kelas.
> > Misal pada VBA Excel saja, ada kelompok di VBE (VB Editor)
> > 1. object dari kelasnya Excel seperti Sheet1, Sheet2, ThisWorkbook
> > 2. object dari kelasnya userform seperti UserForm1, UserForm2, dsb
> > 3. object dari kelasnya general module seperti Module1,Module2, dsb
> > 4. object dari kelasnya user class seperti Class1,class2, dsb
> >
> > Untuk awalan, fokus dulu pada no 1 sampai 3 saja.
> > No 1 dan 2, pada dasarnya adalah object-object yang pendiam dan
> penyendiri,
> > yang sering disebut private.
> > No 3, pada dasarnya adalah object yang suka bersosialisasi, jadi enak
> > diajak ngobrol yang sering disebut public.
> >
> > Sampai sini, sudah ada bayangan bahwa ada benda (object) yang memiliki
> > karakteristik private dan public.
> > Jadi, sebenarnya apa sih Public dan Private itu ? Apakah sekedar ruang
> > lingkup kerja ?
> > Kalau contoh diatas, maka yang tampak adalah private dan public itu
> > cenderung ke karakteristik sesuatu (object) dalam menyikapi
> lingkungannya.
> > Kalau begitu, apakah lingkungan dari contoh diatas ?
> > Lingkungannya adalah VBA Excel.
> > Maka, untuk memanfaatkan object itu, harus disertai memanggil namanya,
> > supaya si benda nengok dulu baru bisa diberi perintah.
> >
> > Contoh :
> > Untuk mengaktifkan sebuah userform, maka bunyinya :
> > *UserForm1 *Show
>
> > >> Memerintahkan melalui Excel (lingkungan) yang jadi bosnya UserForm1
> > sehingga tahu cara memerintah si userform1 untuk tampil keatas panggung.
> >
> > atau mau menggunakan range yang ada di sheet1 :
> > *sheet1*.range("x1:z9").activate
>
> > >> memerintah secara langsung kepada si sheet1 supaya memberi kesempatan
> > kepada pemanggil untuk mengaktifkan range x1:z9 yang dimiliki si sheet1.
> >
> > Untuk hal seperti ini akan terkait erat dengan yang namanya object dan
> > karakteristiknya. Tapi ndak usah dipedulikan, karena bahasannya kali ini
> > tentang private, public dan dim yang cenderung dikenal sebagai ruang
> > lingkup kerja.
> > Tapi, dari contoh diatas, tampak jelas bahwa penggunaan apapun yang
> > dimiliki si object, harus pakai manggil namanya dulu. Mau pakai rangenya
> > sheet1, harus panggil dulu namanya sheet1. Setelah nengok, baru bisa beri
> > perintah. Itulah karakteristik private.
> >
> > Untuk karakteristik public, ndak perlu pake panggil-panggil segala.
> >
> > Setelah tahu ada kelompok yang demikian, maka yang perlu diketahui
> > berikutnya adalah adanya bentuk-bentuk blok program yang sering disebut
> > routine atau prosedur.
> >
> > Prosedur ada yang jenisnya Sub atau Function (yang sering dipakai). Jadi
> > bukan Public Sub, Public Function, Private Sub, Private Function.
> > Masing-masing jenis prosedur, bisa diberi karakteristik respon terhadap
> > lingkungan jenis Private atau Public.
> > Dengan begitu, maka sering ditemui :
> > >> karakteristik Private
> > -- prosedur dengan karakteristik private tidak dapat dipergunakan oleh
> > siapapun selain pemiliknya (object tempat tinggalnya)
> > contoh 1 : (prosedur yang tinggal di sheet1, maka hanya bisa digunakan
> oleh
> > si sheet1 saja ~ bener-bener barang pribadinya si sheet1)
> > Private Sub Worksheet_Change(byval target as range)
> > yang sering dikenal sebagai prosedur event sub.
> > Disebut event karena prosedur ini juga akan aktif ketika ada kejadian
> > minimal sebuah cell di dalam worksheet yang mengalami pengubahan nilai.
> >
> > contoh 2 : (prosedur yang tinggal di module umum seperti module1 yang
> > karakterisk si module itu public, tetapi tetap saja gak bisa dipakai oleh
> > selain module1)
> > Private Sub PersiapanCetak( rngData as range , lStatus as long )
> >
> > >> karakteristik Public
> > Contoh 1 : (prosedur yang diletakkan di sheet1 misalnya berbunyi seperti
> > berikut ini)
> > Public Sub SetNilaiPesananSheetInput()
> > -- Prosedur ini diletakkan pada sebuah object sheet (misal di sheet1)
> yang
> > pada dasarnya berkarakteristik private.
> > -- Pemberian karakteristik public pada si prosedur, akan membuat prosedur
> > ini bisa digunakan oleh yang lainnya (misal oleh module1 atau userform1
> > dsb), selama yang mau make itu (module1 dsb itu) manggil yang punya dulu.
> >
> > Contoh lengkapnya begini deh :
> > di sheet1, tulis :
> > public sub ProsedurPunyanyaSheet1()
> > msgbox "Aku adalah prosedur karakteristik public di lokasi sheet1
> > yang berkarakteristik private"
> > end sub
> >
> > kemudian, di module1 (Insert Module kalau belum ada), tulis :
> > public sub PanggilProsedurDiSheet1Ahhh()
> > sheet1.ProsedurPunyanyaSheet1
> > end sub
> > jalankan prosedur PanggilProsedurDiSheet1Ahhh
> >
> > Jika tulisan sheet1. dihapus dari baris sheet1.ProsedurPunyanyaSheet1
> maka
> > si VBA akan protes.
> >
> > Contoh 2 : (pada sebuah module umum lainnya -- misal module2 -- insert
> > module kalau belum ada)
> > public sub PanggilPunyanyaModule1Ahh()
> > PanggilProsedurDiSheet1Ahhh
> > end sub
> > lalu jalankan.
> >
> > Akan tampak bahwa prosedur PanggilProsedurDiSheet1Ahhh yang diberi
> > karakterisik public dan tinggal di object module1 yang juga
> > karakteristiknya public, bisa dipanggil dan dipakai sewaktu-waktu.
> >
> >
> > Untuk jenis prosedur Function maka yang berubah adalah bentuk bloknya
> yang
> > tadinya sub jadi function disertai penetapan tipe data hasil dari
> function.
> > Baris End Sub akan jadi End Function.
> >
> > Setelah rada bingung campur sedikit mudeng tentang public dan private
> pada
> > sebuah benda seperti module atau form atau sheet, kemudian rada paham
> > tentang public dan private pada sebuah prosedur baik sub atau function,
> > maka mulailah cerita tentang public dan private pada sebuah variabel.
> >
> > Variabel juga bisa diberi karakteristik Public dan Private. Tapi, hanya
> > untuk variabel yang dideklarasikan diluar prosedur.
> > Untuk deklarasi variabel dalam sebuah prosedur, digunakan Dim.
> > Dim juga bisa digunakan untuk diluar prosedur, yang karakteristiknya akan
> > mirip dengan penggunaan Private. Tapi, sebaiknya tetap menggunakan
> Private
> > daripada Dim.
> >
> > Cara deklarasi secara umum :
> > karakteristiknya nama_variabelnya AS tipedatanya
> >
> > contoh : disebuah module umum bernama module1 (kalau belum ada module1,
> > lakukan Insert Module)
> > Option Explicit
> > Public rngKriteria as range
> > Public lNum AS Long
> > Private lRec AS Long
> >
> > Public Sub CetakFaktur()
> > Dim rngData as Range
> > ' ada baris perintah banyak disini, misal :
> > lNum = 1945
> > end sub
> >
> > Maka,
> > A. variabel rngKriteria dan lNum akan dapat dipergunakan secara langsung
> > oleh siapapun dimanapun berada oleh prosedur apa saja selama tidak ada
> > module umum yang mendeklarasikan sama seperti yang dideklarasikan oleh
> > module1 karena :
> > 1. module1 berkarakteristik Public
> > 2. variabel dideklarasi dengan karakteristik Public
> >
> > B. variabel lRec hanya dapat digunakan di module1 saja, pada seluruh
> > prosedurnya karena :
> > 1. variabel dideklarasi dengan karakteristik Private
> >
> > C. variabel rngData hanya dapat digunakan di prosedur CetakFaktur di
> > module1 saja. Prosedur lain, baik yang dalam module1 apalagi yang diluar
> > module1 tidak dapat menggunakannya karena :
> > 1. variabel dideklarasi dengan karakteristik Dim dalam sebuah prosedur.
> >
> >
> > Bagaimana jika di Sheet1 ada prosedur berikut berikut ini :
> >
> > Option Explicit
> >
> > 'ada prosedur untuk set nilai lnum juga
> > Public Sub SetVarLNumOlehSheet1()
> > lnum=1990
> > end sub
> >
> > Pertanyaannya, lNum yang mana yang diset oleh prosedur
> SetVarLNumOlehSheet1
> > ?
> > Tentu saja variabel lNum yang dideklarasi di Module1 di atas sana.
> >
> > Jika isi sheet1 diubah menjadi : (lihat bagian bold)
> > Option Explicit
> > *Public lNum AS Long*
>
> >
> > 'ada prosedur untuk set nilai lnum juga
> > Public Sub SetVarLNumOlehSheet1()
> > lnum=2012
> > end sub
> >
> > lNum yang mana yang diisi oleh prosedur SetVarLNumOlehSheet1 ?
> > Tentu saja lNum yang dideklarasikan di sheet1.
> > Lalu nilai lNum yang dideklarasikan di Module1 berapa nilainya ?
> > Jika prosedur CetakFaktur di module1 telah dijalankan, maka nilai lNum di
> > module1 adalah 1990.
> >
> > Dari 2 contoh diatas, tampak bahwa deklarasi variabel dengan
> karakteristik
> > Public di sebuah module umum (module1 dalam contoh), tidak serta merta
> > bekerja disemua tempat. Bagaimana cara pakai kedua variabel itu ?
> >
> > Misal dimodule2 (buat baru jika belum ada)
> > option explicit
> >
> > public sub SetSemuaLNumOlehMod2()
> > module1.lnum=100
> > sheet1.lnum=3000
> > *msgbox "LNum di module1 = " & lnum & vbcrlf & "LNum di sheet1 = " &
> > sheet1.lnum*
>
> > end sub
> >
> > Jadi, dengan memanggil secara spesifik pemilik variabelnya, varibel
> > berkarakteristik public bisa digunakan oleh pihak lain.
> > Tapi, *hati-hati dengan yang diwarna merah*. Disana ada proses
> memanfaatkan
>
> > nilai lnum tanpa memanggil pemiliknya.
> > Baris merah ini akan bekerja jika tidak ada module umum lainnya yang
> > mendeklarasikan Public lNum. Jika ada, maka akan error. Dan errornya bisa
> > dieliminir ketika bagian *& lNum* diganti menjadi *& module1.lnum*
>
> >
> > Jika ingin mencoba, silakan buat module baru (misal module3) yang diisi
> > dengan :
> > Option Explicit
> > Public lNum as Long
> >
> > Public Sub SetNilaiLNumDiMod3OlehMod3()
> > lNum=7500
> > end sub
> >
> > Baris lNum=7500 akan mengisi varibel lNum di module3 dengan 7500
> > Kemudian coba run prosedur SetSemuaLNumOlehMod2 yang ada di module2. Jika
> > error, ganti bagian *& lNum* diganti menjadi *& module1.lnum *dan run
> lagi.
>
> >
> > Dari beberapa contoh ini, maka bisa diketahui bahwa setiap object class
> > bisa mendeklarasikan variabel Public,Private, atau Dim, dan akan
> > diperlakukan sendiri-sendiri sesuai pendeklarator variabelnya. Object
> class
> > lainnya bisa menggunakan milik object class tertentu secara benar jika
> > disertai pemanggilan nama pendeklarator variabelnya.
> >
> > Secara umum, biasanya deklarasi sebuah variabel dilakukan untuk mewakili
> > satu varibel yang langsung ditentukan akan digunakan dimana saja.
> > Misal, di module1 dideklarasikan :
> > Public rngInput as range
> >
> > Maka diobject class manapun tidak akan ditemukan lagi deklarasi seperti
> > itu. Penggunaan rngInput bisa digunakan oleh object class lain (sheet1,
> > userform1, module1,dsb) secara langsung.
> >
> > Secara garis besar, menentukan variabel adalah tergantung intensitas
> > penggunaannya. Misal, rngdata yang merujuk ke Sheet7 di range A1:G19 akan
> > selalu digunakan disetiap proses yang prosedur prosesnya bisa ada di
> > sheet1, module3, userform5 dsb, maka cukup dideklarasikan di sebuah
> module
> > umum (misal module1) kemudian digunakan oleh semua prosedur.
> >
> > Jika ternyata ada prosedur yang butuh rngInput tapi dengan isi range
> > merujuk ke hal yang berbeda dengan prosedur lainnya yang menggunakan
> > rngInput, maka dibuatlah sebuah variabel baru, misal Public
> rngInputLainnya
> > as range
> > Begitu seterusnya.
> >
> > -----------------------
> >
> > Contoh :
> > Sheet1 dan sheet3 butuh bekerja dengan range yang ada di sheet bernama
> Data
> > (misal sheet7) mulai range A1 diseluruh blok data kontinyunya
> > (currentregion)
> >
> > Maka disebuah module umum (misal module1) ada bunyi :
> > Option Explicit
> > Public rngKu as range
> >
> > di sheet1 ada prosedur :
> > public sub DataNamaSaja()
> > set rngKu = sheet7.range("a1").currentregion
> > 'misal data nama adalah kolom B saja dan akan dicopy ke sheet13 mulai
> > range k1
> > rngku.resize(,1).offset(,1).copy sheet13.range("k1")
> > end sub
> >
> > di sheet3 ada prosedur :
> > public sub DataUmurSaja()
> > set rngKu = sheet7.range("a1").currentregion
> > 'misal data umur adalah kolom E saja dan akan dicopy ke sheet13 mulai
> > range j1
> > rngku.resize(,1).offset(,4).copy sheet13.range("j1")
> > end sub
> >
> > Pada kedua prosedur yang ada di masing-masing sheet tidak ada deklarasi
> > rngKu lagi bukan ?
> > Contoh seperti inilah yang sering disebut bahwa Public dan Private adalah
> > berkaitan dengan ruang lingkup variabel.
> >
> > ------------------------
> >
> > Jadi, Public dan Private bukan sekedar ruang lingkup variabel saja,
> tetapi
> > mencakup karakteristik akses pemakaian.
> > Hal ini berkaitan erat dengan cara komputer membaca sebuah data yang
> > melalui pointernya, bukan nama variabelnya. Tapi hal seperti pointer ini
> > ndak usah dipikirkan, biar jadi urusannya si komputer saja. ndak mumet
> kalo
> > mikirin pointer.
> >
> > Moga-moga jadi bingung dan jadi punya imajinasi lain tentang variabel,
> > public, private dsb, sehingga selalu muncul rasa ingin tahu lebih banyak
> > lagi.
> >
> > Wassalam,
> > Kid.
> >
> > On Sun, Mar 25, 2012 at 15:43, Rara Wilis ra2wilis@... wrote:
> >
> > > **
>
> > >
> > >
> > > maaf, koreksi ada yg salah fatal:
> > >
> > > tertulis
> > > *
> > > *
> > > *Lingkup Berlakunya VARIABLEs dan CONSTANTs*
>
> > >
> > > Variable ataupun Konstanta yg dideklarasikan pada level (di dalam
> sebuah)
> > > Prosedur
> > > Jika di deklarasikan dengan statement Dim / Private
> > > ( Dim NamaVariable as TiPeData )
> > > akan berlaku dan dikenal di modul tsb ( di semua Prosedur yg berada di
> > > Module tsb)
> > >
> > >
> > > seharusnya:
> > > *
> > > *
> > > *Lingkup Berlakunya VARIABLEs dan CONSTANTs*
>
> > >
> > > Variable ataupun Konstanta yg dideklarasikan pada level (di dalam
> sebuah)
> > > *MODULE*
>
> > > Jika di deklarasikan dengan statement Dim / Private
> > > ( Dim NamaVariable as TiPeData )
> > > akan berlaku dan dikenal di modul tsb ( di semua Prosedur yg berada di
> > > Module tsb)
> > >
> > >
> > >
> > >
> > > On Sun, Mar 25, 2012 at 3:38 PM, Rara Wilis ra2wilis@... wrote:
> > >
> > >> halo...
> > >> Ini kayaknya harus ngobrol mengenai : *Ruang Lingkup Berlakunya, dan
> > >> Umur VARIABLE*
>
> > >> Kita akan membicarakan hal yg terjadi di satu workbook saja dulu
> > >> ---------------- cut -------
> > >>
> > >
> > >
> > >
> >
>
>  
>

Kirim email ke