Wa'alaikumussalam wr wb Hehehe... Selama kasusnya jelas dan bisa dibayangkan, maka bisa diusahakan untuk ada hal yang ditambahkan yang bisa bermanfaat buat BeExceller selain penanya.
VBA adalah sarana otomasi. Bahasa yang digunakan adalah pemrograman VB for A atau VB yang ditempelkan ke suatu aplikasi. Berarti fungsi VBA adalah untuk mengotomasi proses di dalam aplikasi tempat tinggalnya. VBA for Excel berarti bisa digunakan untuk mengotomasi proses yang dibuat user di dalam Excel. Contoh otomasi adalah menyalin data dari suatu range ke range lain. Contoh lainnya adalah mengotomasi proses entri data melalui sebuah userform. Jadi pada intinya, semua proses yang tadinya dilakukan manual oleh user digantikan oleh suatu runtime kode-kode pemrograman melalui VBA. Begitulah gambaran umumnya. Wassalamu'alaikum wr wb Kid Sent from my smart enough phone > On Nov 11, 2015, at 19:59, HAIRUL ALAM [email protected] [belajar-excel] > <[email protected]> wrote: > > Assalamualaikum > > Pak Kid > > Terimakasih Banyak Penjelasannya > > Sangat lengkap dan membantu sekali dalam pembelajaran excel saya > Tanya lagi Pak, sebenarnya penggunaan VBA yang sesuai fungsinya selain untuk > memasukkan formula dan database > agar VBA difungsikan sesuai dengan kegunaannya cocoknya apa ya Pak > > Maaf dan Terimakasih > > Wassalamualaikum > > > > Pada Rabu, 11 November 2015 19:36, "'Mr. Kid' [email protected] > [belajar-excel]" <[email protected]> menulis: > > > > Wa'alaikumussalam wr wb > > Hai Hairul, > > Coba tambahkan proses untuk mem-values hasil formula. Bisa berupa copy paste > values atau set value dengan value yang ada. > Contoh : formula berisi fungsi vLookUp dan IFError yang berbunyi : > =IFERROR(VLOOKUP(D2,PIPE!$B$3:$L$20000,2,FALSE),"") > akan dipasang pada area range : e2:e20000 di sheet bernama 'data' > 'paksa kalkulasi excel automatic bila tidak mengurangi kecepatan proses > 'application.screenupdating=false 'jika proses terasa melambat karena > refresh layar, aktifkan baris ini > application.calculation=xlCalculationAutomatic 'jika prosesnya > melambat, ganti dengan manual xlcalculationmanual > > 'pasang formula > > sheets("data").range("e2:e20000").formula="=IFERROR(VLOOKUP(D2,PIPE!$B$3:$L$20000,2,FALSE),"""")" > 'cara merujuk range di atas bisa juga menggunakan range("e2" , > "e20000" ) > > 'sheets("data").calculate 'jika calculation di set manual, aktifkan > baris ini agar formula di kalkulasi excel > > 'proses mem-values formula di dalam cells > > sheets("data").range("e2:e20000").value=sheets("data").range("e2:e20000").value > 'tidak pakai Selection karena tidak ada cells yang di-select selama > proses ini > 'bisa juga dengan proses copy lalu paste values dengan kode berikut > : (aktifkan bila akan digunakan) > 'sheets("data").range("e2:e20000").copy 'proses copy > 'sheets("data").range("e2:e20000").pastespecial xlpastevalues > 'bisa pilih opsi lain, seperti values n number format, dsb > 'kalau pakai proses copas, kosongkan clipboard dengan : > 'application.cutcopymode=false > > 'kalau calculation di atas sana di set manual, set automatic disini > 'application.calculation=xlCalculationAutomatic > > 'kalau screenupdating diaktifkan untuk diset false di atas sana, maka > kembalikan lagi ke true > 'application.screenupdating=true > > 'selesai > > Andai diperhatikan dengan lebih seksama, bagian 2 baris ini : > > sheets("data").range("e2:e20000").formula="=IFERROR(VLOOKUP(D2,PIPE!$B$3:$L$20000,2,FALSE),"""")" > > sheets("data").range("e2:e20000").value=sheets("data").range("e2:e20000").value > bisa dinaikkan sedikit performanya dengan memanfaatkan blok with. Syntax with > : > with objectnya > 'pemanfaatan object disini > end with > untuk contoh baris di atas : > with sheets("data").range("e2:e20000") > .formula="=IFERROR(VLOOKUP(D2,PIPE!$B$3:$L$20000,2,FALSE),"""")" > .value=.value > end with > jadi lebih simpel dan meningkat dikit performanya. > > Kalau proses pemasangan nilai hasil vlookup dengan methods Evaluate, maka > harus diperintah satu per satu langsung dari VBA alias tidak bisa langsung > banyak cells. > Pemasangan formula di atas juga dilakukan satu per satu, tetapi dilakukan > oleh runtime di dalamnya si Excel dan bukan oleh si script VBA buatan user, > sehingga terkesan lebih cepat. > > Pasang pakai evaluate dilakukan dengan loop. > dim lRow as long > for lRow=2 to 20000 > sheets("data").cells(lrow,"e").value=evaluate("=IFERROR(VLOOKUP(D" & > lrow & ",PIPE!$B$3:$L$20000,2,FALSE),"""")") > next lrow > > Jika akan memanfaatkan methods worksheetfunction alias sarana untuk > memanfaatkan fungsi-fungsi bawaan Excel dari VBA, maka bagian kode di atas > sana yang berbunyi : > > sheets("data").range("e2:e20000").formula="=IFERROR(VLOOKUP(D2,PIPE!$B$3:$L$20000,2,FALSE),"""")" > > sheets("data").range("e2:e20000").value=sheets("data").range("e2:e20000").value > bisa diganti dengan : > sheets("data").range("e2:e20000").value = _ > application.worksheetfunction.iferror( _ > > application.worksheetfunction.vlookup( sheets("data").range("d2:d20000") _ > > , sheets("pipe").range("b3:L20000") _ > > , 2 , 0 ) _ > , vbnullstring ) > > Jika akan memanfaatkan array formula, baris kode yang di atas sana yang > berbunyi : > > sheets("data").range("e2:e20000").formula="=IFERROR(VLOOKUP(D2,PIPE!$B$3:$L$20000,2,FALSE),"""")" > > sheets("data").range("e2:e20000").value=sheets("data").range("e2:e20000").value > bisa diubah menjadi : > > sheets("data").range("e2:e20000").formulaarray="=IFERROR(VLOOKUP(D2:d20000,PIPE!$B$3:$L$20000,2,FALSE),"""")" > > sheets("data").range("e2:e20000").value=sheets("data").range("e2:e20000").value > > Kira-kiranya begitu... > > Wassalamu'alaikum wr wb > Kid > > > On Wed, Nov 11, 2015 at 5:44 PM, HAIRUL ALAM [email protected] > [belajar-excel] <[email protected]> wrote: > > Terimakasih para Master > > Cara ini > Sub TRACE_HEAT() > Worksheets("DATA").Range("E2").Value = > Evaluate("=IFERROR(VLOOKUP(D2,MAIN!$B$3:$L$5,2,FALSE),"""")") > End Sub > > berhasil namun harus masukkan formula per satu2, apakah bisa bila rangenya > banyak misal yang saya beri warna kuning agar seperti range > > (E2) menjadi E2 sd E20000 dan $B$3:$L$5 menjadi $B$3 sd $L$20000 > > Maaf & Terimakasih > > > > Pada Rabu, 11 November 2015 17:27, "Hendrik Karnadi [email protected] > [belajar-excel]" <[email protected]> menulis: > > > > Coba ganti: > Formula...... > dengan > Value = Evaluate ("formulanya") > Formualanya tidak perlu diberi tanda =(sama dengan) lagi. > > Salam, > HK > > Sent from Samsung Mobile > > > -------- Original message -------- > From: "HAIRUL ALAM [email protected] [belajar-excel]" > Date:11/11/2015 4:11 PM (GMT+07:00) > To: [email protected] > Subject: [belajar-excel] code Macro tanpa memunculkan formula pada worksheet > > > Assalamualaikum > > Yth. Para Master > > Maaf Saya ingin bertanya, saya mempunyai masalah tentang code VBA, yang saya > ingin agar formula tidak muncul pada cell worksheet misalkan code VBA sebagai > berikut : > Sub NO_HEAT() > Worksheets("DATA").Range("E2", "E20000").Formula = > "=IFERROR(VLOOKUP(D2,PIPE!$B$3:$L$20000,2,FALSE),"""")" > End Sub > > bagaimana codenya agar yang dimunculkan pada worksheet adalah hasil dari > perhitungan sesuai code VBA diatas dan tidak memunculkan formula pada cell > worksheet > > Terimakasih Banyak > > Maaf > Hairul Alam > > Wassalamualaikum > > > > > >

