Mainan Macro Yuk… (Part 1)

Dalam dunia teknik sipil -khususnya bidang struktur- software spreadsheet MS Excel mungkin termasuk salah satu program yang populer setelah program-program semacam SAP2000, STAAD, dkk. Disebut “populer” karena kemampuannya dalam memproses hitungan, atau untuk lebih gampangnya bisa dibuat ngitung gitu… Iya lah, kan bidang ini memang banyak berisikan hitungan -mulai dari rumus-rumus nan njlimet sampai rupiahnya- jadi semua yang bisa dijadikan alat hitung ya pasti laris. Mau bikin hitungan tulangan sampai rincian RAB alias hitungan duitnya bisa dilayani program ini. Faktor lain adalah karena “menemukannya” juga (relatif) mudah, maksudnya di -hampir- semua komputer mesti sudah ada program yang masih sekerabat MS Word dan Power Point ini, malah kadang mungkin sudah bawaan dari komputernya. Jadi, tinggal langsung tancap gas saja tanpa perlu repot cari “master”-nya kalau ternyata belum ada hehehe… Selain menghitung dengan cara biasa (lewat rumus macam =A4/B4*100 atau function seperti =MAX(C:C)), dalam MS Excel dibekali juga dengan kemampuan programming, yaitu lewat Macro. Nah, kemampuan yang disebut terakhir inilah yang terutama membuat MS Excel menjadi lebih “asyik” lagi, dan karena itu pulalah penulis bahas di kesempatan kali ini. Asyik gimana maksudnya?

Pernah menemui -atau membuat- formula atau function nan njlimet? =IF(AND(C3>0;C4<10); INDEX(F:K;MATCH(R8;K:K;0);5) dst… atau =A3/(192*(A4/1000)*A5*A6)*((5*(A4/1000)^2)-(4*(C3/1000)^2)* dst… atau… coba bayangkan sendirilah hehehe… Baru mengetiknya saja sudah pusing apalagi kalau ternyata ada yang salah, wah ruarrr briasa pusringnya.  Misalnya bisa dibuat simpel seperti dengan function =MOMEN(A3;A4;D3;D4;D5) tanpa harus memasukkan rumus nan panjang, atau menghitung momen pelat dengan berbagai variasi parameter dengan sekali klik, mau kan…?

Contoh Macro

Pada bagian pertama ini, kita bahas dulu mengenai function, atau lebih tepatnya adalah user-defined function. Sesuai namanya, user-defined function adalah function yang didefinisikan sendiri oleh pemakai; atau dalam bahasa yang lebih sederhana, function yang kita buat sendiri. Function semacam MAX(), IF(), STDEV(), dan saudara-saudaranya adalah contoh built-in function alias function bawaan dari programnya, tinggal disantap eh dipakai saja, ibarat beli makanan siap saji. Kalau user-defined function, kita mesti harus masak sendiri alias harus disusun sendiri rumusnya. Nah, tempat memasak alias dapurnya ada di Visual Basic Editor.

Visual Basic itu apa to? Itu lho salah satu software untuk programming semacam Pascal atau Delphi. Program ini yang dulu penulis pakai untuk membuat program PPPURG, yang sekelumit kisahnya bisa diikuti di sini. Waduhnggak ada program Visual Basic-nya di komputer, nggak bisa lanjut donk… Sabar dulu, meski menyandang nama ‘marga’ Visual Basic, bukan berarti harus punya programnya secara terpisah kok. Visual Basic editor ini sudah termasuk dalam program MS Office. Di Excel versi 2007 (termasuk di Word dan PowerPoint juga sama lho), klik pada tab Developer, lalu klik tombol Visual Basic. Catatan : pada beberapa komputer/laptop yang sudah dibundel dengan Office, untuk feature tingkat lanjut seperti Macro mungkin saja dibatasi, misal pada Office Starter (bukan full version).

Tombol Visual Basic Editor

Tab Developer-nya ndak ketemu? Coba klik di tombol Office (tombol bundar sudut kiri atas) lalu klik Excel Options di bagian bawah menu. Selanjutnya pastikan pilihan Show Developer tab in the Ribbon aktif, dan klik OK.

Excel OptionsShow Developer Tab

Nah, kalau sudah nongol tampilan seperti gambar di bawah, berarti sudah masuk ke jendela Visual Basic Editor yang kita bicarakan.

Visual Basic Editor

Oke, kita kembali sebentar ke jendela program MS Excel-nya. Sebagai contoh di sini akan dihitung respon balok sederhana (simple beam) sendi-rol dengan sebuah beban titik berjarak sembarang. Respon yang akan dicari meliputi momen maksimum, lendutan maksimum, dan  jarak titik tempat terjadinya lendutan maksimum. Misal dibuat sheet untuk input data seperti gambar berikut.

Macro Simple Beam

Gambar dan keterangan rumus hanya sebagai pelengkap saja, yang terutama adalah input yang diperlukan a.l.: panjang bentang, modulus elastis bahan, momen inersia penampang, besar beban dan jarak pembebanan (sel C6-C12). Output hasil hitungan akan ditempatkan berturut-turut di sel C14-C16. Males membuatnya? Ya sudah, download di sini aja… tapi tetap lanjut baca lho ya. Oh ya, rumus momen maksimumnya adalah P.a.b/L, sudah hapal kan🙂 . Harap perhatikan juga satuan yang dipakai harus konsisten, dalam contoh ini semua dalam kN dan m, sehingga modulus elastis adalah dalam kN/m2, inersia dalam m4, dst.

Nah sekarang kembali ke dapurnya alias Visual Basic editor. Baris perintah programming dituliskan pada module. Buat dahulu module baru lewat menu Insert > Module. Kemudian pada layar kosong sebelah kanan, baru diketikkan perintah-perintahnya. Bagi yang mungkin pernah mempelajari programming dengan Visual Basic, beberapa perintah memang mirip, misal bentuk struktur perulangan If-Then, penulisan properties, dsb. Sesuai bahasan kita, di sini digunakan function yang secara garis besar memiliki struktur sbb. (yang dalam kurung [] adalah yang kita isikan) :

Function [nama]([variabel])
[perintah]
End Function

Sebagai contoh, untuk hitungan momen maksimum yang rumusnya sederhana, dengan input berupa variabel P (beban); a, b (jarak beban); dan L (bentang) diberi nama function M_max dengan rumus P.a.b/L maka yang dituliskan adalah seperti berikut :

Function M_max(P, a, b, L)
M_max = P * a * b / L
End Function

Cukup sederhana kan… Sekarang coba kita tes di Excel (kembali ke layar Excel). Di sel C14 (output momen maksimum) tinggal kita ketikkan function yang sudah kita buat tadi :

=M_max(C9;C11;C12;C6)

Perhatikan bahwa isian variabel dalam kurung mengacu input harus sesuai lokasi selnya masing-masing (C9 untuk P, C11 untuk a, dst.). Nah, sudah paham kan, intinya pada editor rumus dimasukkan dalam baris perintah blok function, sesuaikan variabel-variabel yang terkait, dan di Excel tinggal dipanggil seperti function biasa. Kalau tidak atau belum hapal urutan variabel yang dipakai dalam function, bisa juga lewat tab Formulas lalu klik Insert Function (bisa juga Shift+F3). Pada bagian category pilih User Defined dan dibawahnya akan muncul nama function buatan kita. Pilih yang dikehendaki lalu klik OK. Selanjutnya akan muncul kotak dialog dengan masing-masing nama variabel tertera pada isian. Bisa juga saat penulisan perintah function kita tulis nama variabel tidak hanya satu huruf tetapi dengan kata, misal M_max(Beban, Jarak_1, Jarak_2, Bentang) agar lebih mudah mengingatnya.

Insert FunctionFunction Argument

Kemudian untuk hitungan yang lain yaitu lendutan maksimum dan jarak titik lendutan maksimum juga dibuat perintah function-nya dengan prinsip yang sama. Satu hal yang membedakan adalah pada penggunaan rumusnya, karena rumus yang tercantum hanya berlaku untuk a > b. Untuk itu diperlukan sedikit modifikasi pada penulisan perintah, jika input yang diberikan nilai a lebih kecil daripada b maka nilai variabel b diganti sebagai nilai a atau (L-b). Yang diganti adalah variabel b karena dalam rumus yang ada adalah variabel tersebut, bukan variabel a. Guna mengakomodasi keperluan ini, dimanfaatkan struktur perulangan If-Then sbb. :

If (L – b) < b Then
b = L – b
End If

Maksudnya jika nilai a (=L-b) < b maka nilai b diganti sebagai L-b, namun jika a > b maka tidak ada perubahan apa-apa. Selanjutnya tinggal dimasukkan saja rumusnya pada Visual Basic editor, dan function selanjutnya bisa dipanggil di Excel.

Function d_max(P, b, L, E, I)
If (L – b) < b Then
b = L – b
End If
d_max = P * b * (L ^ 2 – b ^ 2) ^ (3 / 2) / (9 * 3 ^ 0.5 * L * E * I)
End Function

Untuk hitungan jarak titik lendutan maksimum (diukur dari sebelah kiri), prinsip pemakaian rumus sama seperti hitungan lendutan maksimum (hanya berlaku untuk a > b), namun karena output yang dihasilkan dalam bentuk jarak maka nilai output juga perlu sedikit dimodifikasi memanfaatkan struktur If-Then-Else. Hampir sama dengan yang sebelumnya, tapi di sini ada tambahan blok Else yang akan memuat perintah yang dilakukan jika kondisi pada blok If tidak terpenuhi. Intinya, jika nilai a < b, maka nilai b dimasukkan sebagai a (=L-b) dan output jarak adalah sebagai L-x_max (dengan x_max adalah hasil hitungan jarak titik lendutan maksimum). Namun bila a > b (sesuai peruntukan rumus aslinya), maka tinggal langsung diproses rumus untuk x_max.

Function x_max(L, b)
If (L – b) < b Then
b = L – b
x_max = L – (((L ^ 2 – b ^ 2) / 3) ^ 0.5)
Else
x_max = ((L ^ 2 – b ^ 2) / 3) ^ 0.5
End If
End Function

Perhatikan bedanya dengan sebelumnya, bahwa pada rumus lendutan maksimum (d_max) yang dimodifikasi/disesuaikan adalah hanya variabel b saja alias input, namun untuk x_max selain nilai b (input) juga perlu dimodifikasi nilai x_max sendiri (output), sehingga dipakai blok If-Then-Else tidak hanya If-Then seperti sebelumnya.

Output M_maxOutput d_maxOutput x_max

Sampai di sini bisa dicermati bahwa pada function variabel yang terlibat bisa banyak dan rumus yang dipakai bisa kompleks, namun pada layar Excel tinggal dipanggil saja function-nya dengan input yang ringkas. Bandingkan jika harus menulis dengan rumus biasa di Excel langsung, misal untuk rumus lendutan maksimum sebagai = C9*C12*(C6^2–C12^2)^3/2)/(9*3^0.5*C6*C7*C8), itu saja belum termasuk perulangan dengan If. Kelebihan lain, jika terjadi kesalahan melacaknya akan lebih mudah. Coba saja, lebih enak mana mencermati rumus di function dalam Visual Basic editor (yang sudah terstruktur misal dengan blok If-Then) atau memelototi isi sel di Excel yang memuat rumus nan panjang… Di sinilah salah satu letak keunggulan Macro ini.

Nah, selanjutnya, silakan dipelajari, diutak-atik dan dikembangkan sendiri penggunaan Macro lewat user defined function ini. Di sini memang baru ditampilkan sekelumit saja contoh unjuk kerjanya. Masih banyak hal yang bisa digali (kayak timbunan aja… sekalian bisa dipadatkan juga mungkin ya) dan masih beragam pula kemungkinan aplikasinya sampai pada rumus dan hitungan yang kompleks.

Oh ya, sebagai teaser, untuk bagian kedua akan diuraikan pemakaian Macro untuk menghitung respon reaksi simple beam untuk beberapa variasi pembebanan dengan sekali klik. Selamat belajar dan mencoba!

Teaser Macro Part-2

4 responses to “Mainan Macro Yuk… (Part 1)

  1. Wah, selain ilmu SAP ilmu macro juga bisa didapat di blog ini. Jadi semakin mudah mendeclair rumus pada macro. Thanks banget. Ditunggu pelajaran macro berikutnya. Arigatou gozaimashita
    Hiduplah Indonesia Raya (>_^)>

  2. Pingback: Mainan Macro Yuk… (Part 1) « Forum OJT/Magang PT ARUN LNG

  3. Pingback: Mainan Macro Yuk… (Part 2) | The Web Logs of Purbo

  4. Pingback: Mainan Macro Yuk… (Part 3 – Habis) | The Web Logs of Purbo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s