6 New Messages
Digest #1885
Messages
Sat Nov 3, 2012 2:22 am (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Sama-sama Pak Hadi,
Maaf, ada yang kelupaan.
Patut diwaspadai bahwa range yang dihilangkan centang locked-nya
(alias di-unlocked),
akan bisa di-edit oleh user meskipun status worksheetnya dalam keadaan
terproteksi.
Jadi, user masih bisa mengubah hasil formula.
Jika ingin siapapun tidak bisa mengubah apapun, tetapi yang bisa di-select
tetap hanya area range tertentu, coba langkah berikut :
(asumsi : sheet DO untuk range *B2:i14*) [terapkan untuk sheet rekening
dengan menyesuaikan *range rujukannya*]
0. aktifkan sheet DO
1. Unprotect sheet (pastikan sheet tidak dalam keadaan terproteksi)
2. select seluruh cells (klik kotak di atas angka baris Excel 1 dan di kiri
huruf kolom Excel A)
3. klik kanan sebuah cell (misal klik kanan D5) -> Format cells -> tab
Protection -> ubah Locked jadi keadaan tercentang -> OK
4. ke VBE (tekan ALT F11) -> double click sheet bernama DO -> buat prosedur
event selection change berikut :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("b2:i14")) Is Nothing Then
Range("b2").Activate
End If
End Sub
5. kembali ke worksheet (tekan ALT F11)
6. proteksi sheet : ribbon Review -> group Changes -> protect sheet
-> centang Select Locked Cells
-> centang Select *Un*locked Cells
-> tekan OK
7. Save workbook dan pastikan ekstensinya .xlsm atau .xlsb atau .xls.
Jika ekstensinya masih .xlsx, proses save dengan save as (tekan ALT F
A)dan ganti
save as type dengan .xlsm atau .xlsb atau .xls
8. Lakukan proses 0 sampai 7 untuk sheet lainnya dengan menyesuaikan bagian
yang di-*merah*
Wassalam,
Kid.
2012/11/3 Hadi Sukisno <hadi_sukisno@ymail.com >
> **
>
>
> Kepada Bapak Mr. Kid
>
> Sudah saya aplikasikan ke workbook aktual dan semuanya terlihat
> lancar-lancar saja
>
> Terima kasih atas bantuan Bapak Mr. Kid
>
> Sukisno Hadi
>
> ------------------------------
> *Dari:* Mr. Kid <mr.nmkid@gmail.com >
> *Kepada:* belajar-excel@yahoogroups.com
> *Dikirim:* Sabtu, 3 November 2012 15:48
> *Judul:* Re: [belajar-excel] Rekapitulasi Penjualan
>
>
> Pak Hadi,
>
> Tentang :
> 1. Apabila cell K4 berisikan "Tunai" maka sheet "Rekening" tidak ikut
> dicetak, dengan kata lain sheet "Rekening" dicetak ketika cell K4 berisikan
> "Giro"
> >> Prosedur Printing diisi dengan kondisi berdasar nilai K4
> if range("k4").value="Giro" then
> sheets("rekening").printout
> endif
> sheets("do").printout
>
> 2. Pembatasan select cell
> >> sheet 'DO' hanya bisa select B2:I14
> >> sheet 'Rekening' hanya bisa select B2:F14
>
> Untuk DO (terapkan untuk rekening)
> 1. aktifkan sheet DO
> 2. blok range yang boleh di-select (misal B2:i14)
> 3. klik kanan range yang di-blok
> 4. pilih Format Cells -> tab Protection -> hilangkan centang dari opsi
> Locked -> OK
> 5. lakukan proteksi sheet :
> (xl2007) : ke ribbon Review -> group Changes -> Protect Sheet ->
> hilangkan centang dari Select Locked Cells -> beri password bila perlu -> OK
> 6. simpan workbook
>
> Wassalam,
> Kid.
>
>
>
>
>
> 2012/11/3 Hadi Sukisno <hadi_sukisno@ymail.com >
>
> **
>
>
> Kepada para pakar excel
>
> Mohon pencerahanya untuk masalah sebagai berikut :
>
> Kondisi
> Bahwa ketika tombol print diklik, maka sheet "DO" dan sheet "Rekening"
> dicetak.
>
> Yang diinginkan
> Dengan kondisi tertentu ketika tombol print diklik maka yang dicetak hanya
> sheet "DO" saja, sheet "Rekening" tidak perlu dicetak.
> Cell yang tidak perlu agar tidak bisa diklik dan tidak bisa diaktifkan.
>
> Berikut saya lampirkan file yang isinya mewakili apa yang menjadi
> permasalahan.
>
> Matur nuwun
>
> Sukisno Hadi
>
>
>
>
>
>
>
Maaf, ada yang kelupaan.
Patut diwaspadai bahwa range yang dihilangkan centang locked-nya
(alias di-unlocked)
akan bisa di-edit oleh user meskipun status worksheetnya dalam keadaan
terproteksi.
Jadi, user masih bisa mengubah hasil formula.
Jika ingin siapapun tidak bisa mengubah apapun, tetapi yang bisa di-select
tetap hanya area range tertentu, coba langkah berikut :
(asumsi : sheet DO untuk range *B2:i14*) [terapkan untuk sheet rekening
dengan menyesuaikan *range rujukannya*]
0. aktifkan sheet DO
1. Unprotect sheet (pastikan sheet tidak dalam keadaan terproteksi)
2. select seluruh cells (klik kotak di atas angka baris Excel 1 dan di kiri
huruf kolom Excel A)
3. klik kanan sebuah cell (misal klik kanan D5) -> Format cells -> tab
Protection -> ubah Locked jadi keadaan tercentang -> OK
4. ke VBE (tekan ALT F11) -> double click sheet bernama DO -> buat prosedur
event selection change berikut :
Private Sub Worksheet_Selection
If Intersect(Target, Range("b2:i14"
Range("b2").
End If
End Sub
5. kembali ke worksheet (tekan ALT F11)
6. proteksi sheet : ribbon Review -> group Changes -> protect sheet
-> centang Select Locked Cells
-> centang Select *Un*locked Cells
-> tekan OK
7. Save workbook dan pastikan ekstensinya .xlsm atau .xlsb atau .xls.
Jika ekstensinya masih .xlsx, proses save dengan save as (tekan ALT F
A)dan ganti
save as type dengan .xlsm atau .xlsb atau .xls
8. Lakukan proses 0 sampai 7 untuk sheet lainnya dengan menyesuaikan bagian
yang di-*merah*
Wassalam,
Kid.
2012/11/3 Hadi Sukisno <hadi_sukisno@
> **
>
>
> Kepada Bapak Mr. Kid
>
> Sudah saya aplikasikan ke workbook aktual dan semuanya terlihat
> lancar-lancar saja
>
> Terima kasih atas bantuan Bapak Mr. Kid
>
> Sukisno Hadi
>
> ------------
> *Dari:* Mr. Kid <mr.nmkid@gmail.
> *Kepada:* belajar-excel@
> *Dikirim:* Sabtu, 3 November 2012 15:48
> *Judul:* Re: [belajar-excel] Rekapitulasi Penjualan
>
>
> Pak Hadi,
>
> Tentang :
> 1. Apabila cell K4 berisikan "Tunai" maka sheet "Rekening" tidak ikut
> dicetak, dengan kata lain sheet "Rekening" dicetak ketika cell K4 berisikan
> "Giro"
> >> Prosedur Printing diisi dengan kondisi berdasar nilai K4
> if range("k4").
> sheets("rekening"
> endif
> sheets("do")
>
> 2. Pembatasan select cell
> >> sheet 'DO' hanya bisa select B2:I14
> >> sheet 'Rekening' hanya bisa select B2:F14
>
> Untuk DO (terapkan untuk rekening)
> 1. aktifkan sheet DO
> 2. blok range yang boleh di-select (misal B2:i14)
> 3. klik kanan range yang di-blok
> 4. pilih Format Cells -> tab Protection -> hilangkan centang dari opsi
> Locked -> OK
> 5. lakukan proteksi sheet :
> (xl2007) : ke ribbon Review -> group Changes -> Protect Sheet ->
> hilangkan centang dari Select Locked Cells -> beri password bila perlu -> OK
> 6. simpan workbook
>
> Wassalam,
> Kid.
>
>
>
>
>
> 2012/11/3 Hadi Sukisno <hadi_sukisno@
>
> **
>
>
> Kepada para pakar excel
>
> Mohon pencerahanya untuk masalah sebagai berikut :
>
> Kondisi
> Bahwa ketika tombol print diklik, maka sheet "DO" dan sheet "Rekening"
> dicetak.
>
> Yang diinginkan
> Dengan kondisi tertentu ketika tombol print diklik maka yang dicetak hanya
> sheet "DO" saja, sheet "Rekening" tidak perlu dicetak.
> Cell yang tidak perlu agar tidak bisa diklik dan tidak bisa diaktifkan.
>
> Berikut saya lampirkan file yang isinya mewakili apa yang menjadi
> permasalahan.
>
> Matur nuwun
>
> Sukisno Hadi
>
>
>
>
>
>
>
Sat Nov 3, 2012 3:14 am (PDT) . Posted by:
"lkm jktind" lkmjkt
Pak Kid
Tanya :
Set rngRef = Sheet5.Range("a1").CurrentRegion ---
kenapa sheet 5 ? (bukankah sheet database adanya di sheet 2)
Set rngLibur = Sheet5.Range("n1").CurrentRegion.Resize(, 1) --
kenapa di sheet 5 ? cell N1 --- daftar hari libur.
For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
With rngLoopDT
If LenB(.Value) <> 0
Then --- kok bisa di namai
B len*B*
.Offset(0, -1).Value = UCase$(.Offset(0, -1).Value) ---
huruf $ ini mewakili apa dan apa gunanya ?
Dim rngDT As Range, rngLoopDT As Range --
dengan memakai as range -- mungkin arti nya bila data bertambah akan di
loop mengikuti jumlah rows yg ada ?
-- beda nya rngDT dengan rngLoopDT
mungkin kah artinya : rngDT --- data yg ada akan di loop
sebanyak rngLoopDT ?
Dim dblRefFee As Double
-- Pakai double dan Long beda nya dimana ?
sekian dulu pertanyan dari saya .
Mohon di koreksi .
Kalau nga keberatan . mohon di tampilkan no row nya di work sheet - agar
lebih mudah saya mempelajari nya .
Karena saya mau tambahkan dengan nilai beli , jual dan total transaksi
per konfirmasi.
Terima kasih.
Salam
Lukman
2012/11/3 Mr. Kid <mr.nmkid@gmail.com >
> **
>
>
> Secara singkat :
>
> 1. Untuk sebuah data (misalkan saja data input hanya berisi 1 record saja)
> >> perlu loop terhadap sheet database untuk mencari yang sesuai dengan
> kondisi data di sheet inputnya berdasar nilai-nilai tertentu.
> >> loop itu adalah bagian :
>
> sDTSek = UCase$(.Offset(0, -4).Value) 'ada di kolom A (offset -4 kolom =
> 4 kolom kekiri dari E)
> sDTAcc = UCase$(.Offset(0, -3).Value) 'di kol B
> sDTKode = UCase$(.Offset(0, 1).Value) 'di kol F (offset
> 1 kolom = 1 kolom kekanan dari E)
> dtDTTglTr = .Offset(0, -2).Value
>
> 'cari di referensi database, untuk kondisi yang sesuai
> data DT yang diambil
> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
> merujuk ke baris diproses
> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
> dan sudah tanpa header
> dblRefFee = 0
> dblRefTax = 0
> lRefNDay = 0
> For Each rngLoopRef In rngRef
> With rngLoopRef 'pada range yang diproses (kol
> A)
> If UCase$(.Value) = sDTSek
> Then 'sekuritas sama ?
> If UCase$(.Offset(0, 1).Value) = sDTAcc
> Then 'No Acc (offset 1 kolom) sama ?
> If .Offset(0, 2).Value <= dtDTTglTr
> Then 'tgltr data >= tgl berlaku mulai ?
> If .Offset(0, 3).Value >= dtDTTglTr
> Then 'tgltr data <= tgl berlaku sampai ?
> If UCase$(.Offset(0, 4).Value) =
> sDTKode Then 'No Acc (offset 1 kolom) ?
> 'ambil data referensi
> dblRefFee = .Offset(0,
> 5).Value
> dblRefTax = .Offset(0,
> 6).Value
> lRefNDay = .Offset(0, 7).Value
>
> 'karena sudah dapat, maka
> keluar dari loop ref
> Exit For
> End If
> End If
> End If
> End If
> End If
> End With
> Next rngLoopRef
>
> >> range referensi di sheet database adalah rngRef, yang didefinisikan setelah
> baris-baris deklarasi variabel (setelah dim blabla yang banyak). Proses
> inisialisasi si rngRef berbunyi :
>
> Set rngRef = Sheet5.Range("*a1*").CurrentRegion
> 'tentukan area referensi termasuk header
> Set rngRef= rngRef.Offset(1).Resize(rngRef.Rows.Count - 1, 1) 'area
> ref tanpa header dan hanya 1 kolom
>
> >> nah ternyata rngref cukup didasarkan pada kolom *A *saja. Artinya,
> kolom A pasti harus ada datanya.
>
>
> 2. Setelah didapatkan baris data di sheet database yang dibutuhkan dan
> disimpan dalam variabel yang di hijau,
> proses berikutnya adalah mengkalkulasi untuk menulis di sheet inputan
> untuk kolom Fee,Tax, dan tgl_jt
>
> >> Kalkulasi tgl_jt memanfaatkan fungsi WorkDay.
> Pada proses kalkulasi tgl_jt, dibutuhkan data hari-hari libur nasionalyang sudah ada di sheet database. Maka range data ini didefinisikan dengan :
> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G : offset 2 kolom; H
> : offset 3 kolom]
> .Offset(0, 5).Value = Abs(.Offset(0, 2).Value) *
> .Offset(0, 3).Value * dblRefFee
>
> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
> offset 2 kolom; H : offset 3 kolom]
> .Offset(0, 6).Value = Abs(.Offset(0, 2).Value) *
> .Offset(0, 3).Value * dblRefTax
>
> '>> tgl_jt (offset 8 kolom) :
> =Workday(C2,ndaydb,range_liburnas) [C : offset -2 kolom]
> .Offset(0, 8).Value = _
> Application.WorksheetFunction.WorkDay(.Offset(0,
> -2).Value, lRefNDay, rngLibur)
> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>
>
> Set rngLibur= Sheet5.Range("n1").CurrentRegion.Resize(, 1) 'area
> hari libur (1 kolom):kolom pertama
>
>
> 'sort hari libur agar ascending (memudahkan formula)
>
> rngLibur.CurrentRegion.*Sort* rngLibur.Resize(1, 1), xlAscending,
> Header:=xlYes
>
>
> 'rngllibur dibuat tanpa header
> Set
> rngLibur= rngLibur.Offset(1).Resize(rngLibur.Rows.Count - 1)
>
> >> range hari libur nasional yang dibutuhkan (rngLibur) adalah data
> tanggal tanpa teks header.
> >> data tanggal* diurutkan* Ascending, siapa tahu membantu mempercepat
> kerja Excel dalam menentukan batas libur nasional untuk proses fungsi Workday
> yang digunakan untuk menentukan tgl_jt.
>
>
> 3. Cell lain di sheet inputan yang bertipe text ingin dibuat seragam
> menggunakan huruf kapital seluruhnya, maka ada proses :
>
> 'isi data
> '>> ganti dengan hasil UCase
> .Offset(0, -4).Value = sDTSek
> 'kol A
> .Offset(0, -3).Value = sDTAcc
> 'kol B
> .Offset(0, -1).Value = UCase$(.Offset(0, -1).Value)
> 'kol D
> .Value = UCase$(.Value)
> 'kol E
> .Offset(0, 1).Value = sDTKode
> 'kol F
>
> 4. Proses 1 sampai 3 di atas, boleh dikerjakan kalau ada data Ticker-nya.
> Maka butuh kondisi yang bunyinya :
>
>
> If LenB(.Value) <> 0 Then 'gak blank ?
> 'diisi proses 1 sampai 3 diatas
>
> Else
>
> 'kalau ticker gak ada isinya, pengen
> dikosongkan saja nilai kolom Fee,Tax, dan tgl_jt
> 'sehingga bisa jadi kolom cek bahwa baris itu
> harus dikonfirmasi dengan pengirim data inputan
> 'karena isi fee,tax, dan tgl_jt nya blank
> (bukan 0 atau nullstring, tapi blank)
>
> End If
>
> 5. Pada bagian kondisi nomor 4 yang salah (kondisi Else), butuh proses
> yang berbunyi :
>
> 'clear kolom fee,tax, dan tgl_jt
> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
> .Offset(0, 5).ClearContents
> .Offset(0, 6).ClearContents
> .Offset(0, 8).ClearContents
>
> 6. Proses 1 sampai 5 baru berlaku untuk 1 baris data inputan. Karena data
> inputan ada lebih dari 1, maka perlu proses loop terhadap setiap baris
> data inputan. *Setiap proses dalam loop, akan bekerja pada sebuah baris
> proses*. Bagian ini adalah :
>
> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
> baris)
> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
> For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
>
> 'isi proses 1 sampai 5 ada disini
>
>
> *With rngLoopDT* 'pada range yang sedang
> diproses (di kolom E loh ya)
>
> *End With*
> Next rngLoopDT
>
> >> proses loop terhadap setiap baris data inputan adalah didasarkan pada
> nilai di kolom Ticker (kolom E atau kolom ke-5 dari tabel inputan) tapi
> tanpa header, karena kolom ini yang menjadi pokok data.
> >> range data inputan secara keseluruhan didefinisikan dengan :
>
> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
> 'karena sudah dihilangkan baris kosongnya
> Set rngDT = shtDT.Range("a1").CurrentRegion
>
> 7. Ternyata, data inputan memiliki baris-baris kosong. Hal ini membuat
> data inputan kurang memenuhi kaidah database. Oleh sebab itu diperlukan
> proses sebelum pendefinisian setiap range yang digunakan (rngLibur,
> rngRef, rngDT).
> >> Untuk contoh ini, digunakan basis pemeriksaan berdasar kolom Ticker (bisa
> jadi tidak berdasar kolom Ticker).
> >> Artinya, jika kolom Ticker kosong, maka diasumsikan baris itu kosong
> (tidak ada data sama sekali).
> >> Hal ini bisa berakibat bahwa bagian ELSE dalam pengkondisian nomor 4,
> tidak perlu ada.
> >> Bagian ELSE tetap dibuat, karena kriteria penetapan baris kosong bisa
> jadi berubah dan proses konfirmasi data akibat nilai Ticker kosong
> (bagian ELSE) juga harus tetap ada.
> >> Untuk menghilangkan baris kosong :
>
> 'tentukan sheet yang dikerjakan
> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
> 'bisa diganti dengan worksheets("nama sheetnya")
> 'atau merujuk nama object seperti Sheet4 seperti :
> Set shtDT = Sheet4
>
> 'hilangkan baris kosong diantara record data
> 'baris kosong membuat dataset tidak berkaidah database
> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
> kolom A
> With shtDT
> .AutoFilterMode = False 'turn off autofilter
>
> 'pada area mulai dari a1 sampai cell terakhir data offset 1
> With .Range(.Range("a1"),
> .Range("a1").SpecialCells(xlCellTypeLastCell).Offset(1))
> .AutoFilter 5, "=" 'autofilter kolom ke-5
> dalam dataset yang blank
> 'dari header lompat 1 ke bawah (offset 1)
> 'pilih yang tampak saja (hasil autofilter)
> 'dihapus barisnya (entirerow.delete)
> .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
> End With
> .AutoFilterMode = False 'turn off autofilter
> End With
>
> Semoga uraian di atas bisa mempermudah penerlusuran jalan proses prosedur
> bernama 'Proses'
>
> Wassalam,
> Kid.
>
>
>
>
>
>
> 2012/11/3 lkm jktind <lkmjktind@gmail.com >
>
>> **
>>
>>
>> Terima kasih atas jawabanannya.
>> Pak Kid
>> sudah sesuai dengan yang saya kehendaki.
>>
>> Tapi untuk dapat memahami cara kerja nya mungkin saya masih butuh
>> semingguan.
>>
>> Salam
>>
>> Lukman
>>
>>
>>
>> 2012/11/3 Mr. Kid <mr.nmkid@gmail.com >
>>
>> **
>>>
>>>
>>> Asumsinya, data inputan seperti dalam sheet coba_proses
>>> Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
>>> 'Proses'
>>>
>>> Bunyi prosedur Proses adalah :
>>> Public Sub Proses()
>>> Dim shtDT As Worksheet
>>> Dim rngDT As Range, rngLoopDT As Range
>>> Dim rngRef As Range, rngLoopRef As Range
>>> Dim rngLibur As Range
>>> Dim sDTSek As String, sDTAcc As String, sDTKode As String
>>> Dim dtDTTglTr As Date
>>> Dim dblRefFee As Double, dblRefTax As Double
>>> Dim lRefNDay As Long
>>>
>>> 'tentukan sheet yang dikerjakan
>>> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
>>> 'bisa diganti dengan worksheets("nama sheetnya")
>>> 'atau merujuk nama object seperti Sheet4 seperti :
>>> Set shtDT = Sheet4
>>>
>>> 'hilangkan baris kosong diantara record data
>>> 'baris kosong membuat dataset tidak berkaidah database
>>> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
>>> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
>>> kolom A
>>> With shtDT
>>> .AutoFilterMode = False 'turn off autofilter
>>>
>>> 'pada area mulai dari a1 sampai cell terakhir data offset 1
>>> With .Range(.Range("a1"),
>>> .Range("a1").SpecialCells(xlCellTypeLastCell).Offset(1))
>>> .AutoFilter 5, "=" 'autofilter kolom
>>> ke-5 dalam dataset yang blank
>>> 'dari header lompat 1 ke bawah (offset 1)
>>> 'pilih yang tampak saja (hasil autofilter)
>>> 'dihapus barisnya (entirerow.delete)
>>> .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
>>> End With
>>> .AutoFilterMode = False 'turn off autofilter
>>> End With
>>>
>>> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
>>> 'karena sudah dihilangkan baris kosongnya
>>> Set rngDT = shtDT.Range("a1").CurrentRegion
>>>
>>> Set rngRef = Sheet5.Range("a1").CurrentRegion
>>> 'tentukan area referensi termasuk header
>>> Set rngRef = rngRef.Offset(1).Resize(rngRef.Rows.Count - 1, 1)
>>> 'area ref tanpa header dan hanya 1 kolom
>>>
>>> Set rngLibur = Sheet5.Range("n1").CurrentRegion.Resize(, 1)
>>> 'area hari libur (1 kolom):kolom pertama
>>>
>>> 'sort hari libur agar ascending (memudahkan formula)
>>> rngLibur.CurrentRegion.Sort rngLibur.Resize(1, 1), xlAscending,
>>> Header:=xlYes
>>>
>>> 'rngllibur dibuat tanpa header
>>> Set rngLibur = rngLibur.Offset(1).Resize(rngLibur.Rows.Count - 1)
>>>
>>> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
>>> baris)
>>> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
>>> For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
>>> With rngLoopDT 'pada range yang sedang
>>> diproses (di kolom E loh ya)
>>> If LenB(.Value) <> 0 Then 'gak blank ?
>>> 'ambil data DT untuk cari nilai di referensi database
>>> sDTSek = UCase$(.Offset(0, -4).Value) 'ada di kolom A
>>> (offset -4 kolom = 4 kolom kekiri dari E)
>>> sDTAcc = UCase$(.Offset(0, -3).Value) 'di kol B
>>> sDTKode = UCase$(.Offset(0, 1).Value) 'di kol F
>>> (offset 1 kolom = 1 kolom kekanan dari E)
>>> dtDTTglTr = .Offset(0, -2).Value
>>>
>>> 'cari di referensi database, untuk kondisi yang sesuai
>>> data DT yang diambil
>>> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
>>> merujuk ke baris diproses
>>> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
>>> dan sudah tanpa header
>>> dblRefFee = 0
>>> dblRefTax = 0
>>> lRefNDay = 0
>>> For Each rngLoopRef In rngRef
>>> With rngLoopRef 'pada range yang diproses
>>> (kol A)
>>> If UCase$(.Value) = sDTSek
>>> Then 'sekuritas sama ?
>>> If UCase$(.Offset(0, 1).Value) = sDTAcc
>>> Then 'No Acc (offset 1 kolom) sama ?
>>> If .Offset(0, 2).Value <= dtDTTglTr
>>> Then 'tgltr data >= tgl berlaku mulai ?
>>> If .Offset(0, 3).Value >= dtDTTglTr
>>> Then 'tgltr data <= tgl berlaku sampai ?
>>> If UCase$(.Offset(0, 4).Value) =
>>> sDTKode Then 'No Acc (offset 1 kolom) ?
>>> 'ambil data referensi
>>> dblRefFee = .Offset(0,
>>> 5).Value
>>> dblRefTax = .Offset(0,
>>> 6).Value
>>> lRefNDay = .Offset(0,
>>> 7).Value
>>>
>>> 'karena sudah dapat, maka
>>> keluar dari loop ref
>>> Exit For
>>> End If
>>> End If
>>> End If
>>> End If
>>> End If
>>> End With
>>> Next rngLoopRef
>>>
>>> 'isi data
>>> '>> ganti dengan hasil UCase
>>> .Offset(0, -4).Value = sDTSek
>>> 'kol A
>>> .Offset(0, -3).Value = sDTAcc
>>> 'kol B
>>> .Offset(0, -1).Value = UCase$(.Offset(0, -1).Value)
>>> 'kol D
>>> .Value = UCase$(.Value)
>>> 'kol E
>>> .Offset(0, 1).Value = sDTKode
>>> 'kol F
>>>
>>> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
>>> offset 2 kolom; H : offset 3 kolom]
>>> .Offset(0, 5).Value = Abs(.Offset(0, 2).Value) *
>>> .Offset(0, 3).Value * dblRefFee
>>>
>>> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
>>> offset 2 kolom; H : offset 3 kolom]
>>> .Offset(0, 6).Value = Abs(.Offset(0, 2).Value) *
>>> .Offset(0, 3).Value * dblRefTax
>>>
>>> '>> tgl_jt (offset 8 kolom) :
>>> =Workday(C2,ndaydb,range_liburnas) [C : offset -2 kolom]
>>> .Offset(0, 8).Value = _
>>> Application.WorksheetFunction.WorkDay(.Offset(0,
>>> -2).Value, lRefNDay, rngLibur)
>>> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>>> Else
>>> 'clear kolom fee,tax, dan tgl_jt
>>> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
>>> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
>>> .Offset(0, 5).ClearContents
>>> .Offset(0, 6).ClearContents
>>> .Offset(0, 8).ClearContents
>>> End If
>>> End With
>>> Next rngLoopDT
>>> End Sub
>>>
>>> Wassalam,
>>> Kid.
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2012/11/2 lkm jktind <lkmjktind@gmail.com >
>>>
>>>> **
>>>>
>>>>
>>>> Mohon maaf.
>>>> sedang berhalangan.
>>>> Baru sempat membalas email saat ini.
>>>>
>>>> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki
>>>> hasil nya seperti si sheet hasil.
>>>> dan mau nya diselesaikan dengan cara loopping.
>>>>
>>>>
>>>> Sebelum nya saya ucapkan terima kasih.
>>>>
>>>>
>>>> Salam Lukman
>>>>
>>>>
>>>> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
>>>> Lamanya tenggang waktu berikut jadwal hari libur .
>>>> Data tersebut ada di sheet database
>>>>
>>>>
>>>>
>>>
>>
>
>
Tanya :
Set rngRef = Sheet5.Range(
kenapa sheet 5 ? (bukankah sheet database adanya di sheet 2)
Set rngLibur = Sheet5.Range(
kenapa di sheet 5 ? cell N1 --- daftar hari libur.
For Each rngLoopDT In rngDT.Resize(
With rngLoopDT
If LenB(.Value) <> 0
Then --- kok bisa di namai
B len*B*
.Offset(0, -1).Value = UCase$(.Offset(
huruf $ ini mewakili apa dan apa gunanya ?
Dim rngDT As Range, rngLoopDT As Range --
dengan memakai as range -- mungkin arti nya bila data bertambah akan di
loop mengikuti jumlah rows yg ada ?
-- beda nya rngDT dengan rngLoopDT
mungkin kah artinya : rngDT --- data yg ada akan di loop
sebanyak rngLoopDT ?
Dim dblRefFee As Double
-- Pakai double dan Long beda nya dimana ?
sekian dulu pertanyan dari saya .
Mohon di koreksi .
Kalau nga keberatan . mohon di tampilkan no row nya di work sheet - agar
lebih mudah saya mempelajari nya .
Karena saya mau tambahkan dengan nilai beli , jual dan total transaksi
per konfirmasi.
Terima kasih.
Salam
Lukman
2012/11/3 Mr. Kid <mr.nmkid@gmail.
> **
>
>
> Secara singkat :
>
> 1. Untuk sebuah data (misalkan saja data input hanya berisi 1 record saja)
> >> perlu loop terhadap sheet database untuk mencari yang sesuai dengan
> kondisi data di sheet inputnya berdasar nilai-nilai tertentu.
> >> loop itu adalah bagian :
>
> sDTSek = UCase$(.Offset(
> 4 kolom kekiri dari E)
> sDTAcc = UCase$(.Offset(
> sDTKode = UCase$(.Offset(
> 1 kolom = 1 kolom kekanan dari E)
> dtDTTglTr = .Offset(0, -2).Value
>
> 'cari di referensi database, untuk kondisi yang sesuai
> data DT yang diambil
> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
> merujuk ke baris diproses
> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
> dan sudah tanpa header
> dblRefFee = 0
> dblRefTax = 0
> lRefNDay = 0
> For Each rngLoopRef In rngRef
> With rngLoopRef 'pada range yang diproses (kol
> A)
> If UCase$(.Value) = sDTSek
> Then 'sekuritas sama ?
> If UCase$(.Offset(
> Then 'No Acc (offset 1 kolom) sama ?
> If .Offset(0, 2).Value <= dtDTTglTr
> Then 'tgltr data >= tgl berlaku mulai ?
> If .Offset(0, 3).Value >= dtDTTglTr
> Then 'tgltr data <= tgl berlaku sampai ?
> If UCase$(.Offset(
> sDTKode Then 'No Acc (offset 1 kolom) ?
> 'ambil data referensi
> dblRefFee = .Offset(0,
> 5).Value
> dblRefTax = .Offset(0,
> 6).Value
> lRefNDay = .Offset(0, 7).Value
>
> 'karena sudah dapat, maka
> keluar dari loop ref
> Exit For
> End If
> End If
> End If
> End If
> End If
> End With
> Next rngLoopRef
>
> >> range referensi di sheet database adalah rngRef, yang didefinisikan setelah
> baris-baris deklarasi variabel (setelah dim blabla yang banyak). Proses
> inisialisasi si rngRef berbunyi :
>
> Set rngRef = Sheet5.Range(
> 'tentukan area referensi termasuk header
> Set rngRef= rngRef.Offset(
> ref tanpa header dan hanya 1 kolom
>
> >> nah ternyata rngref cukup didasarkan pada kolom *A *saja. Artinya,
> kolom A pasti harus ada datanya.
>
>
> 2. Setelah didapatkan baris data di sheet database yang dibutuhkan dan
> disimpan dalam variabel yang di hijau,
> proses berikutnya adalah mengkalkulasi untuk menulis di sheet inputan
> untuk kolom Fee,Tax, dan tgl_jt
>
> >> Kalkulasi tgl_jt memanfaatkan fungsi WorkDay.
> Pada proses kalkulasi tgl_jt, dibutuhkan data hari-hari libur nasionalyang sudah ada di sheet database. Maka range data ini didefinisikan dengan :
> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G : offset 2 kolom; H
> : offset 3 kolom]
> .Offset(0, 5).Value = Abs(.Offset(
> .Offset(0, 3).Value * dblRefFee
>
> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
> offset 2 kolom; H : offset 3 kolom]
> .Offset(0, 6).Value = Abs(.Offset(
> .Offset(0, 3).Value * dblRefTax
>
> '>> tgl_jt (offset 8 kolom) :
> =Workday(C2,
> .Offset(0, 8).Value = _
> Application.
> -2).Value, lRefNDay, rngLibur)
> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>
>
> Set rngLibur= Sheet5.Range(
> hari libur (1 kolom):kolom pertama
>
>
> 'sort hari libur agar ascending (memudahkan formula)
>
> rngLibur.CurrentReg
> Header:=xlYes
>
>
> 'rngllibur dibuat tanpa header
> Set
> rngLibur= rngLibur.Offset(
>
> >> range hari libur nasional yang dibutuhkan (rngLibur) adalah data
> tanggal tanpa teks header.
> >> data tanggal* diurutkan* Ascending, siapa tahu membantu mempercepat
> kerja Excel dalam menentukan batas libur nasional untuk proses fungsi Workday
> yang digunakan untuk menentukan tgl_jt.
>
>
> 3. Cell lain di sheet inputan yang bertipe text ingin dibuat seragam
> menggunakan huruf kapital seluruhnya, maka ada proses :
>
> 'isi data
> '>> ganti dengan hasil UCase
> .Offset(0, -4).Value = sDTSek
> 'kol A
> .Offset(0, -3).Value = sDTAcc
> 'kol B
> .Offset(0, -1).Value = UCase$(.Offset(
> 'kol D
> .Value = UCase$(.Value)
> 'kol E
> .Offset(0, 1).Value = sDTKode
> 'kol F
>
> 4. Proses 1 sampai 3 di atas, boleh dikerjakan kalau ada data Ticker-nya.
> Maka butuh kondisi yang bunyinya :
>
>
> If LenB(.Value) <> 0 Then 'gak blank ?
> 'diisi proses 1 sampai 3 diatas
>
> Else
>
> 'kalau ticker gak ada isinya, pengen
> dikosongkan saja nilai kolom Fee,Tax, dan tgl_jt
> 'sehingga bisa jadi kolom cek bahwa baris itu
> harus dikonfirmasi dengan pengirim data inputan
> 'karena isi fee,tax, dan tgl_jt nya blank
> (bukan 0 atau nullstring, tapi blank)
>
> End If
>
> 5. Pada bagian kondisi nomor 4 yang salah (kondisi Else), butuh proses
> yang berbunyi :
>
> 'clear kolom fee,tax, dan tgl_jt
> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
> .Offset(0, 5).ClearContents
> .Offset(0, 6).ClearContents
> .Offset(0, 8).ClearContents
>
> 6. Proses 1 sampai 5 baru berlaku untuk 1 baris data inputan. Karena data
> inputan ada lebih dari 1, maka perlu proses loop terhadap setiap baris
> data inputan. *Setiap proses dalam loop, akan bekerja pada sebuah baris
> proses*. Bagian ini adalah :
>
> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
> baris)
> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
> For Each rngLoopDT In rngDT.Resize(
>
> 'isi proses 1 sampai 5 ada disini
>
>
> *With rngLoopDT* 'pada range yang sedang
> diproses (di kolom E loh ya)
>
> *End With*
> Next rngLoopDT
>
> >> proses loop terhadap setiap baris data inputan adalah didasarkan pada
> nilai di kolom Ticker (kolom E atau kolom ke-5 dari tabel inputan) tapi
> tanpa header, karena kolom ini yang menjadi pokok data.
> >> range data inputan secara keseluruhan didefinisikan dengan :
>
> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
> 'karena sudah dihilangkan baris kosongnya
> Set rngDT = shtDT.Range(
>
> 7. Ternyata, data inputan memiliki baris-baris kosong. Hal ini membuat
> data inputan kurang memenuhi kaidah database. Oleh sebab itu diperlukan
> proses sebelum pendefinisian setiap range yang digunakan (rngLibur,
> rngRef, rngDT).
> >> Untuk contoh ini, digunakan basis pemeriksaan berdasar kolom Ticker (bisa
> jadi tidak berdasar kolom Ticker).
> >> Artinya, jika kolom Ticker kosong, maka diasumsikan baris itu kosong
> (tidak ada data sama sekali).
> >> Hal ini bisa berakibat bahwa bagian ELSE dalam pengkondisian nomor 4,
> tidak perlu ada.
> >> Bagian ELSE tetap dibuat, karena kriteria penetapan baris kosong bisa
> jadi berubah dan proses konfirmasi data akibat nilai Ticker kosong
> (bagian ELSE) juga harus tetap ada.
> >> Untuk menghilangkan baris kosong :
>
> 'tentukan sheet yang dikerjakan
> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
> 'bisa diganti dengan worksheets("
> 'atau merujuk nama object seperti Sheet4 seperti :
> Set shtDT = Sheet4
>
> 'hilangkan baris kosong diantara record data
> 'baris kosong membuat dataset tidak berkaidah database
> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
> kolom A
> With shtDT
> .AutoFilterMode = False 'turn off autofilter
>
> 'pada area mulai dari a1 sampai cell terakhir data offset 1
> With .Range(.Range(
> .Range("a1")
> .AutoFilter 5, "=" 'autofilter kolom ke-5
> dalam dataset yang blank
> 'dari header lompat 1 ke bawah (offset 1)
> 'pilih yang tampak saja (hasil autofilter)
> 'dihapus barisnya (entirerow.delete)
> .Offset(1).SpecialC
> End With
> .AutoFilterMode = False 'turn off autofilter
> End With
>
> Semoga uraian di atas bisa mempermudah penerlusuran jalan proses prosedur
> bernama 'Proses'
>
> Wassalam,
> Kid.
>
>
>
>
>
>
> 2012/11/3 lkm jktind <lkmjktind@gmail.
>
>> **
>>
>>
>> Terima kasih atas jawabanannya.
>> Pak Kid
>> sudah sesuai dengan yang saya kehendaki.
>>
>> Tapi untuk dapat memahami cara kerja nya mungkin saya masih butuh
>> semingguan.
>>
>> Salam
>>
>> Lukman
>>
>>
>>
>> 2012/11/3 Mr. Kid <mr.nmkid@gmail.
>>
>> **
>>>
>>>
>>> Asumsinya, data inputan seperti dalam sheet coba_proses
>>> Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
>>> 'Proses'
>>>
>>> Bunyi prosedur Proses adalah :
>>> Public Sub Proses()
>>> Dim shtDT As Worksheet
>>> Dim rngDT As Range, rngLoopDT As Range
>>> Dim rngRef As Range, rngLoopRef As Range
>>> Dim rngLibur As Range
>>> Dim sDTSek As String, sDTAcc As String, sDTKode As String
>>> Dim dtDTTglTr As Date
>>> Dim dblRefFee As Double, dblRefTax As Double
>>> Dim lRefNDay As Long
>>>
>>> 'tentukan sheet yang dikerjakan
>>> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
>>> 'bisa diganti dengan worksheets("
>>> 'atau merujuk nama object seperti Sheet4 seperti :
>>> Set shtDT = Sheet4
>>>
>>> 'hilangkan baris kosong diantara record data
>>> 'baris kosong membuat dataset tidak berkaidah database
>>> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
>>> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
>>> kolom A
>>> With shtDT
>>> .AutoFilterMode = False 'turn off autofilter
>>>
>>> 'pada area mulai dari a1 sampai cell terakhir data offset 1
>>> With .Range(.Range(
>>> .Range("a1")
>>> .AutoFilter 5, "=" 'autofilter kolom
>>> ke-5 dalam dataset yang blank
>>> 'dari header lompat 1 ke bawah (offset 1)
>>> 'pilih yang tampak saja (hasil autofilter)
>>> 'dihapus barisnya (entirerow.delete)
>>> .Offset(1).SpecialC
>>> End With
>>> .AutoFilterMode = False 'turn off autofilter
>>> End With
>>>
>>> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
>>> 'karena sudah dihilangkan baris kosongnya
>>> Set rngDT = shtDT.Range(
>>>
>>> Set rngRef = Sheet5.Range(
>>> 'tentukan area referensi termasuk header
>>> Set rngRef = rngRef.Offset(
>>> 'area ref tanpa header dan hanya 1 kolom
>>>
>>> Set rngLibur = Sheet5.Range(
>>> 'area hari libur (1 kolom):kolom pertama
>>>
>>> 'sort hari libur agar ascending (memudahkan formula)
>>> rngLibur.CurrentReg
>>> Header:=xlYes
>>>
>>> 'rngllibur dibuat tanpa header
>>> Set rngLibur = rngLibur.Offset(
>>>
>>> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
>>> baris)
>>> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
>>> For Each rngLoopDT In rngDT.Resize(
>>> With rngLoopDT 'pada range yang sedang
>>> diproses (di kolom E loh ya)
>>> If LenB(.Value) <> 0 Then 'gak blank ?
>>> 'ambil data DT untuk cari nilai di referensi database
>>> sDTSek = UCase$(.Offset(
>>> (offset -4 kolom = 4 kolom kekiri dari E)
>>> sDTAcc = UCase$(.Offset(
>>> sDTKode = UCase$(.Offset(
>>> (offset 1 kolom = 1 kolom kekanan dari E)
>>> dtDTTglTr = .Offset(0, -2).Value
>>>
>>> 'cari di referensi database, untuk kondisi yang sesuai
>>> data DT yang diambil
>>> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
>>> merujuk ke baris diproses
>>> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
>>> dan sudah tanpa header
>>> dblRefFee = 0
>>> dblRefTax = 0
>>> lRefNDay = 0
>>> For Each rngLoopRef In rngRef
>>> With rngLoopRef 'pada range yang diproses
>>> (kol A)
>>> If UCase$(.Value) = sDTSek
>>> Then 'sekuritas sama ?
>>> If UCase$(.Offset(
>>> Then 'No Acc (offset 1 kolom) sama ?
>>> If .Offset(0, 2).Value <= dtDTTglTr
>>> Then 'tgltr data >= tgl berlaku mulai ?
>>> If .Offset(0, 3).Value >= dtDTTglTr
>>> Then 'tgltr data <= tgl berlaku sampai ?
>>> If UCase$(.Offset(
>>> sDTKode Then 'No Acc (offset 1 kolom) ?
>>> 'ambil data referensi
>>> dblRefFee = .Offset(0,
>>> 5).Value
>>> dblRefTax = .Offset(0,
>>> 6).Value
>>> lRefNDay = .Offset(0,
>>> 7).Value
>>>
>>> 'karena sudah dapat, maka
>>> keluar dari loop ref
>>> Exit For
>>> End If
>>> End If
>>> End If
>>> End If
>>> End If
>>> End With
>>> Next rngLoopRef
>>>
>>> 'isi data
>>> '>> ganti dengan hasil UCase
>>> .Offset(0, -4).Value = sDTSek
>>> 'kol A
>>> .Offset(0, -3).Value = sDTAcc
>>> 'kol B
>>> .Offset(0, -1).Value = UCase$(.Offset(
>>> 'kol D
>>> .Value = UCase$(.Value)
>>> 'kol E
>>> .Offset(0, 1).Value = sDTKode
>>> 'kol F
>>>
>>> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
>>> offset 2 kolom; H : offset 3 kolom]
>>> .Offset(0, 5).Value = Abs(.Offset(
>>> .Offset(0, 3).Value * dblRefFee
>>>
>>> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
>>> offset 2 kolom; H : offset 3 kolom]
>>> .Offset(0, 6).Value = Abs(.Offset(
>>> .Offset(0, 3).Value * dblRefTax
>>>
>>> '>> tgl_jt (offset 8 kolom) :
>>> =Workday(C2,
>>> .Offset(0, 8).Value = _
>>> Application.
>>> -2).Value, lRefNDay, rngLibur)
>>> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>>> Else
>>> 'clear kolom fee,tax, dan tgl_jt
>>> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
>>> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
>>> .Offset(0, 5).ClearContents
>>> .Offset(0, 6).ClearContents
>>> .Offset(0, 8).ClearContents
>>> End If
>>> End With
>>> Next rngLoopDT
>>> End Sub
>>>
>>> Wassalam,
>>> Kid.
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2012/11/2 lkm jktind <lkmjktind@gmail.
>>>
>>>> **
>>>>
>>>>
>>>> Mohon maaf.
>>>> sedang berhalangan.
>>>> Baru sempat membalas email saat ini.
>>>>
>>>> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki
>>>> hasil nya seperti si sheet hasil.
>>>> dan mau nya diselesaikan dengan cara loopping.
>>>>
>>>>
>>>> Sebelum nya saya ucapkan terima kasih.
>>>>
>>>>
>>>> Salam Lukman
>>>>
>>>>
>>>> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
>>>> Lamanya tenggang waktu berikut jadwal hari libur .
>>>> Data tersebut ada di sheet database
>>>>
>>>>
>>>>
>>>
>>
>
>
Sat Nov 3, 2012 6:21 am (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Bagaimana ya cara menjelaskannya...
Mungkin lihat file terlampir saja ya...
Tapi, cuplikannya seperti ini :
Tanya Set rngRef =
Sheet5.Range("a1").CurrentRegion --- kenapa sheet 5 ?
(bukankah sheet database adanya di sheet 2) Tanya Set rngLibur =
Sheet5.Range("n1").CurrentRegion.Resize(, 1) -- kenapa di sheet 5 ?
cell N1 --- daftar hari libur. Jawab Sheet5 (bukan sheet 5) adalah nama
object class dari worksheet. Lihat di VBE frame VBA Project (Project
Explorer) Jawab
Tanya If LenB(.Value) <> 0
Then --- kok bisa di namai
B lenB Jawab LenB( bla ) dan bukan Len B atau LenB. Jawab LenB
adalah sebuah fungsi untuk menghitung jumlah karakter suatu nilai data
bertipe string (teks) dalam satuan byte. Jawab Yang umum dikenal adalah
fungsi Len, yang menghitung jumlah karakter suatu nilai data. Jadi, hasil
LenB akan diubah oleh VB engine menjadi hasil Len. Jawab Fungsi selalu
diikuti buka kurung. Coba lihat semua fungsi dalam worksheet yang dipakai
di formula, seperti : Jawab =VLookUp( bla , bla, bla,bla ) atau =Sum(
bla:bla ) Jawab Selalu diikuti buka kurung bukan ? Jawab
Tanya .Offset(0, -1).Value = UCase$(.Offset(0, -1).Value) ---
huruf $ ini mewakili apa dan apa gunanya ? Jawab UCase$ adalah nama
fungsi. Sedangkan .Offset(0, -1).Value adalah nilai inputan ke parameter
yang diminta si fungsi Jawab Coba perhatikan ketika membuat formula di
worksheet, seperti =VLookUp( , maka user harus mengisi suatu nilai yang
diminta oleh VLookUp bukan ? Jawab Itu namanya nilai untuk inputan bagi
input parameter fungsi. Jawab Fungsi UCase$ adalah fungsi untuk mengubah
seluruh karakter menjadi huruf kapital (seperti UCase), tetapi input
parameternya adalah string (teks) Jawab Jadi, pada fungsi UCase, input
parameter adalah bertipe variant. Jawab Coba perhatikan di VBE ketika
menulis : Jawab UCase$( akan muncul tooltip berbunyi Ucase$( String as
string ) as string Jawab ketika menulis : Jawab UCase( akan muncul
tooltip berbunyi Ucase( String ) as string Jawab Karena tidak ada
definisi jelas seperti yang diberi warna merah, maka tipe data pada Ucase
adalah Variant. Jawab Tipe data variant memakan ruang memori lebih banyak,
sehingga relatif lebih lambat diproses. Jawab
Tanya Dim rngDT As Range, rngLoopDT As Range --
dengan memakai as range -- mungkin arti nya bila data bertambah akan di
loop mengikuti jumlah rows yg ada ? Jawab Tidak. Jawab Tidak ada
hubungannya penggunaan tipe data range dengan bertambah atau berkurangnya
data dimanapun berada. Jawab Dipilih menggunakan tipe data range, karena
akan memproses memanfaatkan bendanya. Excel adalah kumpulan range, bukan
kumpulan nomor baris dan nomor kolom. Jawab Untuk membuat variabel bertipe
range dapat menyesuaikan dengan jumlah record yang ada, Jawab dibutuhkan
perintah yang detil dalam menentukan area range yang harus disimpan dalam
variabel bertipe range itu. Jawab Artinya, variabel selalu bersifat
pasifkarena memang tugasnya hanya menyimpan sesuatu yang diamanahkan
kepadanya
untuk disimpan Jawab
Tanya Dim rngDT As Range, rngLoopDT As Range --
dengan memakai as range -- mungkin arti nya bila data bertambah akan di
loop mengikuti jumlah rows yg ada ? Tanya -- beda nya rngDT dengan
rngLoopDT ? mungkin kah artinya : rngDT --- data yg ada akan di loop
sebanyak rngLoopDT ? Jawab rngDT :: rencananya sih (jadi ini alasan
pribadi, dan bukan aturan baku) akan digunakan untuk menyimpan data disuatu
range yang ada di sheet inputan Jawab rngLoopDT :: untuk menyimpan data di
rngDT yang sedang diproses saat loop dengan for each nanti Jawab Jadi,
rngDT bukan berarti data yang akan di loop sebanyak rngLoopDT Jawab tapi
rngLoopDT adalah wadah untuk menyimpan range dari rngDT yang sedang diproses
ketika melakukan loop dengan For Each Jawab
Tanya Dim dblRefFee As
Double -- Pakai double
dan Long beda nya dimana ? Jawab Coba pelajari (lihat di Help atau
browsing internet dengan key Data Type) tentang tipe data. Jawab Tipe data
skalar jenis Double dapat menyimpan bilangan pecahan pada interval nilai
tertentu. Jawab Tipe data skalar jenis Long dapat menyimpan bilangan bulat
pada interval nilai tertentu. Jawab Pertanyaannya, kapan suatu bilangan
Anda sebut bilangan pecahan ? Dan kapan akan Anda sebut bahwa suatu
bilangan itu bilangan bulat ? Jawab Setelah dapat kepastian nilai datanya
bertipe numerik sebagai bilangan bulat atau pecahan, maka bisa ditentukan
apakah akan menggunakan Double atau Long. Jawab
Permintaan Kalau nga keberatan . mohon di tampilkan no row nya di work
sheet - agar lebih mudah saya mempelajari nya . Permintaan Karena saya mau
tambahkan dengan nilai beli , jual dan total transaksi per konfirmasi.
Jawab Keberatan sih nggak Jawab Bukannya malah akan lebih bermanfaat
ketika Anda bisa melakukannya sendiri ? Jawab Dengan memahami nomor row
apa yang dikehendaki, maka bisa diketahui nomor row itu adalah nomor row di
data yang mana. Jawab Dengan tahu data yang mana yang akan diambil
row-nya, maka dapat diketahui baris-baris script yang mana yang memproses
data tersebut Jawab Dengan diketahui bari-baris script yang memproses data
tersebut, bisa diketahui apakah nilai (bisa bertipe apa saja) yang diproses
atau benda yang diproses Jawab Dengan diketahui apa yang diproses, maka
akan ada ide untuk mendapatkan nilai row yang diharapkan Jawab Kemudian
ditulis bagaimana cara mendapatkan nilai row itu Jawab Ketika sudah
didapat, maka akan ada proses pengambilan keputusan untuk menyimpan dimana
dalam bentuk apa Jawab Apakah langsung sebagai nilai rownya yang ditulis
dalam sebuah cell, atau akan disimpan disebuah variabel lebih dulu
Jawab Ketika
akan menulis di cell tertentu, cell yang manakah ? Bagaimana cara sampai ke
cell tersebut dari cell-cell data inputan yang sedang diproses ?
Jawab Kemudian
ditulis deh script hasil karya pemikiran tersebut. Jawab Hal ini memang
panjang, butuh kesabaran (pintu pertama ilmu pengetahuan), dan penuh
kesulitan (tidak ada perwujudan kebaikan akan melalui jalan yang mudah)
Jawab tapi hasilnya adalah suatu pemberian (kata orang adalah anugerah)
yang sulit diambil oleh pihak lain Jawab Bagaimana ? Mau mencoba sampai
puyeng dulu ? Jawab Alasan sudah dekat deadline adalah alasan klise. Jadi,
kalau alasannya sudah dekat deadline, pakai formula dulu saja wakakakka
Jawab
Wassalam,
Kid.
2012/11/3 lkm jktind <lkmjktind@gmail.com >
> **
>
>
> Pak Kid
> Tanya :
>
> Set rngRef = Sheet5.Range("a1").CurrentRegion
> --- kenapa sheet 5 ? (bukankah sheet database adanya di sheet 2)
> Set rngLibur = Sheet5.Range("n1").CurrentRegion.Resize(, 1) --
> kenapa di sheet 5 ? cell N1 --- daftar hari libur.
>
>
> For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
> With rngLoopDT
> If LenB(.Value) <> 0
> Then --- kok bisa di namai
> B len*B*
>
> .Offset(0, -1).Value = UCase$(.Offset(0, -1).Value) ---
> huruf $ ini mewakili apa dan apa gunanya ?
>
> Dim rngDT As Range, rngLoopDT As Range --
> dengan memakai as range -- mungkin arti nya bila data bertambah akan di
> loop mengikuti jumlah rows yg ada ?
>
> -- beda nya rngDT dengan rngLoopDT
>
>
> mungkin kah artinya : rngDT --- data yg ada akan di loop
> sebanyak rngLoopDT ?
> Dim dblRefFee As
> Double -- Pakai double
> dan Long beda nya dimana ?
>
> sekian dulu pertanyan dari saya .
>
> Mohon di koreksi .
>
> Kalau nga keberatan . mohon di tampilkan no row nya di work sheet - agar
> lebih mudah saya mempelajari nya .
>
> Karena saya mau tambahkan dengan nilai beli , jual dan total transaksi
> per konfirmasi.
>
>
>
> Terima kasih.
>
>
> Salam
>
> Lukman
>
>
Mungkin lihat file terlampir saja ya...
Tapi, cuplikannya seperti ini :
Tanya Set rngRef =
Sheet5.Range(
(bukankah sheet database adanya di sheet 2) Tanya Set rngLibur =
Sheet5.Range(
cell N1 --- daftar hari libur. Jawab Sheet5 (bukan sheet 5) adalah nama
object class dari worksheet. Lihat di VBE frame VBA Project (Project
Explorer) Jawab
Tanya If LenB(.Value) <> 0
Then --- kok bisa di namai
B lenB Jawab LenB( bla ) dan bukan Len B atau LenB. Jawab LenB
adalah sebuah fungsi untuk menghitung jumlah karakter suatu nilai data
bertipe string (teks) dalam satuan byte. Jawab Yang umum dikenal adalah
fungsi Len, yang menghitung jumlah karakter suatu nilai data. Jadi, hasil
LenB akan diubah oleh VB engine menjadi hasil Len. Jawab Fungsi selalu
diikuti buka kurung. Coba lihat semua fungsi dalam worksheet yang dipakai
di formula, seperti : Jawab =VLookUp( bla , bla, bla,bla ) atau =Sum(
bla:bla ) Jawab Selalu diikuti buka kurung bukan ? Jawab
Tanya .Offset(0, -1).Value = UCase$(.Offset(
huruf $ ini mewakili apa dan apa gunanya ? Jawab UCase$ adalah nama
fungsi. Sedangkan .Offset(0, -1).Value adalah nilai inputan ke parameter
yang diminta si fungsi Jawab Coba perhatikan ketika membuat formula di
worksheet, seperti =VLookUp( , maka user harus mengisi suatu nilai yang
diminta oleh VLookUp bukan ? Jawab Itu namanya nilai untuk inputan bagi
input parameter fungsi. Jawab Fungsi UCase$ adalah fungsi untuk mengubah
seluruh karakter menjadi huruf kapital (seperti UCase), tetapi input
parameternya adalah string (teks) Jawab Jadi, pada fungsi UCase, input
parameter adalah bertipe variant. Jawab Coba perhatikan di VBE ketika
menulis : Jawab UCase$( akan muncul tooltip berbunyi Ucase$( String as
string ) as string Jawab ketika menulis : Jawab UCase( akan muncul
tooltip berbunyi Ucase( String ) as string Jawab Karena tidak ada
definisi jelas seperti yang diberi warna merah, maka tipe data pada Ucase
adalah Variant. Jawab Tipe data variant memakan ruang memori lebih banyak,
sehingga relatif lebih lambat diproses. Jawab
Tanya Dim rngDT As Range, rngLoopDT As Range --
dengan memakai as range -- mungkin arti nya bila data bertambah akan di
loop mengikuti jumlah rows yg ada ? Jawab Tidak. Jawab Tidak ada
hubungannya penggunaan tipe data range dengan bertambah atau berkurangnya
data dimanapun berada. Jawab Dipilih menggunakan tipe data range, karena
akan memproses memanfaatkan bendanya. Excel adalah kumpulan range, bukan
kumpulan nomor baris dan nomor kolom. Jawab Untuk membuat variabel bertipe
range dapat menyesuaikan dengan jumlah record yang ada, Jawab dibutuhkan
perintah yang detil dalam menentukan area range yang harus disimpan dalam
variabel bertipe range itu. Jawab Artinya, variabel selalu bersifat
pasifkarena memang tugasnya hanya menyimpan sesuatu yang diamanahkan
kepadanya
untuk disimpan Jawab
Tanya Dim rngDT As Range, rngLoopDT As Range --
dengan memakai as range -- mungkin arti nya bila data bertambah akan di
loop mengikuti jumlah rows yg ada ? Tanya -- beda nya rngDT dengan
rngLoopDT ? mungkin kah artinya : rngDT --- data yg ada akan di loop
sebanyak rngLoopDT ? Jawab rngDT :: rencananya sih (jadi ini alasan
pribadi, dan bukan aturan baku) akan digunakan untuk menyimpan data disuatu
range yang ada di sheet inputan Jawab rngLoopDT :: untuk menyimpan data di
rngDT yang sedang diproses saat loop dengan for each nanti Jawab Jadi,
rngDT bukan berarti data yang akan di loop sebanyak rngLoopDT Jawab tapi
rngLoopDT adalah wadah untuk menyimpan range dari rngDT yang sedang diproses
ketika melakukan loop dengan For Each Jawab
Tanya Dim dblRefFee As
Double -- Pakai double
dan Long beda nya dimana ? Jawab Coba pelajari (lihat di Help atau
browsing internet dengan key Data Type) tentang tipe data. Jawab Tipe data
skalar jenis Double dapat menyimpan bilangan pecahan pada interval nilai
tertentu. Jawab Tipe data skalar jenis Long dapat menyimpan bilangan bulat
pada interval nilai tertentu. Jawab Pertanyaannya, kapan suatu bilangan
Anda sebut bilangan pecahan ? Dan kapan akan Anda sebut bahwa suatu
bilangan itu bilangan bulat ? Jawab Setelah dapat kepastian nilai datanya
bertipe numerik sebagai bilangan bulat atau pecahan, maka bisa ditentukan
apakah akan menggunakan Double atau Long. Jawab
Permintaan Kalau nga keberatan . mohon di tampilkan no row nya di work
sheet - agar lebih mudah saya mempelajari nya . Permintaan Karena saya mau
tambahkan dengan nilai beli , jual dan total transaksi per konfirmasi.
Jawab Keberatan sih nggak Jawab Bukannya malah akan lebih bermanfaat
ketika Anda bisa melakukannya sendiri ? Jawab Dengan memahami nomor row
apa yang dikehendaki, maka bisa diketahui nomor row itu adalah nomor row di
data yang mana. Jawab Dengan tahu data yang mana yang akan diambil
row-nya, maka dapat diketahui baris-baris script yang mana yang memproses
data tersebut Jawab Dengan diketahui bari-baris script yang memproses data
tersebut, bisa diketahui apakah nilai (bisa bertipe apa saja) yang diproses
atau benda yang diproses Jawab Dengan diketahui apa yang diproses, maka
akan ada ide untuk mendapatkan nilai row yang diharapkan Jawab Kemudian
ditulis bagaimana cara mendapatkan nilai row itu Jawab Ketika sudah
didapat, maka akan ada proses pengambilan keputusan untuk menyimpan dimana
dalam bentuk apa Jawab Apakah langsung sebagai nilai rownya yang ditulis
dalam sebuah cell, atau akan disimpan disebuah variabel lebih dulu
Jawab Ketika
akan menulis di cell tertentu, cell yang manakah ? Bagaimana cara sampai ke
cell tersebut dari cell-cell data inputan yang sedang diproses ?
Jawab Kemudian
ditulis deh script hasil karya pemikiran tersebut. Jawab Hal ini memang
panjang, butuh kesabaran (pintu pertama ilmu pengetahuan)
kesulitan (tidak ada perwujudan kebaikan akan melalui jalan yang mudah)
Jawab tapi hasilnya adalah suatu pemberian (kata orang adalah anugerah)
yang sulit diambil oleh pihak lain Jawab Bagaimana ? Mau mencoba sampai
puyeng dulu ? Jawab Alasan sudah dekat deadline adalah alasan klise. Jadi,
kalau alasannya sudah dekat deadline, pakai formula dulu saja wakakakka
Jawab
Wassalam,
Kid.
2012/11/3 lkm jktind <lkmjktind@gmail.
> **
>
>
> Pak Kid
> Tanya :
>
> Set rngRef = Sheet5.Range(
> --- kenapa sheet 5 ? (bukankah sheet database adanya di sheet 2)
> Set rngLibur = Sheet5.Range(
> kenapa di sheet 5 ? cell N1 --- daftar hari libur.
>
>
> For Each rngLoopDT In rngDT.Resize(
> With rngLoopDT
> If LenB(.Value) <> 0
> Then --- kok bisa di namai
> B len*B*
>
> .Offset(0, -1).Value = UCase$(.Offset(
> huruf $ ini mewakili apa dan apa gunanya ?
>
> Dim rngDT As Range, rngLoopDT As Range --
> dengan memakai as range -- mungkin arti nya bila data bertambah akan di
> loop mengikuti jumlah rows yg ada ?
>
> -- beda nya rngDT dengan rngLoopDT
>
>
> mungkin kah artinya : rngDT --- data yg ada akan di loop
> sebanyak rngLoopDT ?
> Dim dblRefFee As
> Double -- Pakai double
> dan Long beda nya dimana ?
>
> sekian dulu pertanyan dari saya .
>
> Mohon di koreksi .
>
> Kalau nga keberatan . mohon di tampilkan no row nya di work sheet - agar
> lebih mudah saya mempelajari nya .
>
> Karena saya mau tambahkan dengan nilai beli , jual dan total transaksi
> per konfirmasi.
>
>
>
> Terima kasih.
>
>
> Salam
>
> Lukman
>
>
Sat Nov 3, 2012 5:57 am (PDT) . Posted by:
"him mah"
sudah. berhasil pak. makasih. tapi saya kadang masih bingung dengan
offset resize. curenntregion
offset resize. curenntregion
Sat Nov 3, 2012 7:08 am (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Oh... tentang methods Offset dan Resize milik Range dan juga properti
CurrentRegion milik Range...
1. Tentang properti CurrentRegion milik Range.
>> Sudah pernah coba Goto Special Current Region ?
Coba deh :
disebuah tabel data mana saja, klik sebuah cell header (misal A1), tekan
CTRL G, tekan Special, pilih Current Region, tekan OK
scriptnya :
range("a1").currentregion
hasil script adalah object range
Mau coba ? File terlampir menyediakan ruang untuk mencobanya.
2. Tentang methods Offset dan Resize milik Range.
>> Sudah kenal fungsi Offset dalam worksheet ?
>> Kalau belum, sudah pernah dengarkah ?
>> Kalau belum juga, berarti harus rajin baca deh...
Garis besarnya begini :
=Offset( *rujukan_range* *,* *lompat_baris , lompat_kolom* * **
,** * *luasan_baris_hasil , luasan_kolom_hasil** * ) *Range(
alamat_range_rujukan )**.**Offset( lompat_baris , lompat_kolom )**.**
Resize( luasan_baris_hasil , luasan_kolom_hasil )* Hasil keduanya (ketika
worksheet menggunakan fungsi Offset atau ketika script menggunakan
Range.Offset.Resize sesuai kebutuhan) adalah object range.
File terlampir disertai sedikit contoh data yang bisa digunakan untuk
mencobanya.
Wassalam,
Kid.
2012/11/3 him mah <himmah.mlg@gmail.com >
> **
>
>
> sudah. berhasil pak. makasih. tapi saya kadang masih bingung dengan
> offset resize. curenntregion
> _
>
>
CurrentRegion milik Range...
1. Tentang properti CurrentRegion milik Range.
>> Sudah pernah coba Goto Special Current Region ?
Coba deh :
disebuah tabel data mana saja, klik sebuah cell header (misal A1), tekan
CTRL G, tekan Special, pilih Current Region, tekan OK
scriptnya :
range("a1").
hasil script adalah object range
Mau coba ? File terlampir menyediakan ruang untuk mencobanya.
2. Tentang methods Offset dan Resize milik Range.
>> Sudah kenal fungsi Offset dalam worksheet ?
>> Kalau belum, sudah pernah dengarkah ?
>> Kalau belum juga, berarti harus rajin baca deh...
Garis besarnya begini :
=Offset( *rujukan_range* *,* *lompat_baris , lompat_kolom* * **
,** * *luasan_baris_
alamat_range_
Resize( luasan_baris_
worksheet menggunakan fungsi Offset atau ketika script menggunakan
Range.Offset.
File terlampir disertai sedikit contoh data yang bisa digunakan untuk
mencobanya.
Wassalam,
Kid.
2012/11/3 him mah <himmah.mlg@gmail.
> **
>
>
> sudah. berhasil pak. makasih. tapi saya kadang masih bingung dengan
> offset resize. curenntregion
> _
>
>
Sat Nov 3, 2012 6:37 am (PDT) . Posted by:
"ghozi alkatiri" ghozialkatiri
row(2:2) akan menghasilkan angka 2 ketika formula dicopikan ke baris di bawahnya akan beruba menjadi row(3:3) dan menghasilkan angka 3 demikian seterusnya.
wassalam
Ghozi Alkatiri
____________
Dari: Agus Erwanto <erwanto_agus@
Kepada: belajar-excel@
Dikirim: Sabtu, 3 November 2012 13:45
Judul: Bls: [belajar-excel] tanya vlookup
Â
Dear Pak Ghozi,
Â
saya mengikuti milis ini,
saya sudah mencoba solusi pak ghozi, tetapi saya kurang begitu mengerti untuk formula
ROW(2:2)Â itu fungsinya apa ya?
Â
regard,
Â
Agus erw
--- Pada Sen, 29/10/12, ghozi alkatiri <ghozialkatiri@
>Dari: ghozi alkatiri <ghozialkatiri@
>Judul: Bls: [belajar-excel] tanya vlookup
>Kepada: "belajar-excel@
>Tanggal: Senin, 29 Oktober, 2012, 8:44 AM
>
>
>Â
>seperti yang lainnya pengisian nama pada nama siswa menggunakan data validation.
>formula pengisian nilai raport dibuat satu kali di cell G10
>=VLOOKUP($C$
>dicopy ke bawah sampai G40 .
>angka nol pada nilai yang kosong dihilangkan dengan menggunakan conditional formating opsi font tanpa warna
>
>
>
>untuk mengisi keterangan rangking ke berapa dari sekian siswa di cell B40 formulanya:
>="RANGKING TINGKATAN "&G40&"Â DARI 48 SISWA"
>
>
>wassalam
>
>
>
>Ghozi Alkatiri.
>
>
>
>
>
>___________
> Dari: Muhfit Komputer <muhfitkomputer@
>Kepada: "belajar-excel@
>Dikirim: Senin, 29 Oktober 2012 10:45
>Judul: [belajar-excel] tanya vlookup
>
>
>Â
>
>dari muhfit, ini mau tanya, dan mohon bantuanya ya..
>- yang say atanyakan ialah, misal mau membuat raport, dan memakai hlookup ato vlookup begitu. dan misal saya ketik angka kuncinya, lalu muncul daftar nama beserta yang lainya.terima kasih
>
>
GROUP FOOTER MESSAGE
---------------------------------------------------------------------
bergabung ke milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com
posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com
berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages
melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/
menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com
keluar dari membership milis (UnSubscribe):
kirim mail kosong ke belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------
bergabung ke milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com
posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com
berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages
melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/
menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com
keluar dari membership milis (UnSubscribe):
kirim mail kosong ke belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------
Tidak ada komentar:
Posting Komentar