Mainan Macro Yuk… (Part 3 – Habis)

Sambil menunggu yang mau segera terbit (jadi ngerasa kayak kampanye, janji-janji terus molor-molor terus… sepertinya bakat jadi pejabat ya), mari simak dahulu sekuel terakhir dari seri tulisan tentang Macro Excel berikut ini.

Pada Part 1 sudah puas bermain dengan function untuk membuat rumus sendiri, dan pada Part 2 melakukan pengolahan input dan menampilkan hasilnya pada sel Excel secara langsung. Sekarang, pada bagian terakhir ini, lakon utama pun akhirnya bisa menang… Duh, memangnya novel? Maksudnya, sekarang saatnya bermain-main dengan obyek gambar. Istilah kerennya: visualisasi. Ya iya lah, melototin angka melulu kan bosan. Lagipula, bicara bidang teknik tanpa gambar ibarat nasi tanpa lauk, kenyang tapi hambar (kecuali pakai nasi goreng). Atau malah bisa-bisa mispersepsi (alias salah pengertian, bukan temannya miss universe lho).

Basis atau dasar datanya memakai dari Part 2 sebelumnya, yaitu contoh perhitungan reaksi untuk balok sederhana alias simple beam. Berdasar file tersebut selanjutnya ditambahkan obyek gambar sebagai sarana visualisasi, sehingga bisa jelas tampilan posisi pembebanan pada struktur. Jadi, setelah input data jarak dan besar beban dimasukkan, akan langsung bisa terlihat tampilannya pada gambar. Selain bisa menambah daya tarik (misal mau dibuat program), juga bermanfaat untuk pengecekan, siapa tahu ada yang salah input data akan lebih jelas dengan adanya visualisasi. Pada layar Excel, dilakukan sedikit perubahan dari sebelumnya yaitu penggeseran sel-sel input dan keterangan guna penempatan gambar. Untuk file versi lengkap yang sudah jadi bisa download di sini.

Visualisasi

Setelah sel-sel input digeser (pada contoh ini digeser ke sebelah kanan, sebenarnya mau dipindah mana pun bisa asal gambarnya bisa muat di layar), selanjutnya ditambahkan gambar atau lebih tepatnya dipakai istilah shape, berupa garis, kotak, lingkaran, dst. untuk merepresentasikan obyek simple beam, pembebanan, dan gaya reaksi. Terserah mau dipakai bentuk atau warna seperti apa, yang penting harus ada beberapa obyek utama berikut :

  • Kotak sebagai beban merata
  • Panah sebagai beban titik (ada 4 buah karena pada input juga ditentukan maksimum 4 beban titik)
  • Kotak teks (text box) sebanyak 4 buah untuk notasi besar beban titik dan 2 buah untuk notasi reaksi tumpuan

Beberapa obyek utama tersebut nantinya yang akan dimanipulasi misal ukuran dan penempatan serta isi teksnya sehingga sesuai dengan input data, sedangkan obyek-obyek lainnya bisa dibuat sesuai selera masing-masing, mau ditambahi, dikurangi, dikali, dibagi, dst. terserah deh… Kalau di Excel versi 2007, untuk menggambar klik pada tab Insert, berikutnya klik Shapes. Nah, terlihat beberapa pilihan obyek gambar, silakan pilih salah satu, lalu gambarkan pada layar.

Insert Shapes

Setelah obyek tergambar (atau klik pada salah satu obyek gambar yang sudah ada), sekarang perhatikan pada kotak status nama di sudut kiri atas. Di situ akan tertera nama dari obyek yang bersangkutan. Nama obyek ini penting karena akan digunakan sebagai identitas saat manipulasi dengan Macro. Sebagai contoh terlihat di sini obyek panah gaya reaksi tumpuan sendi bernama “Up Arrow 36”. Lazimnya berupa nama tipe obyek diikuti nomor angka. Nama obyek ini juga bisa diganti secara manual, dan akan dilakukan guna mempermudah identifikasi saat penulisan perintah Macro. Caranya, klik pada kotak nama, lalu ketikkan teks/nama yang diinginkan.

Edit Name

Untuk contoh ini, yang perlu diganti nama obyeknya adalah beberapa obyek utama seperti yang telah disebutkan (penamaan bebas). Sebenarnya tidak diganti juga boleh, asal nama obyek yang dimaksud sesuai. Adapun nama-nama obyek yang diganti adalah :

  • Kotak sebagai beban merata : diganti menjadi O_BM
  • Panah sebagai beban titik : O_P1, O_P2, O_P3, O_P4
  • Kotak teks untuk notasi besar beban titik : O_T1, O_T2, O_T3, O_T4
  • Kotak teks untuk notasi reaksi tumpuan : O_TR1, O_TR2

Edit Name 2

Selesai berkutat dengan obyek gambar, sekarang tiba waktunya untuk mengutak-atik perintah Macro di VBE (Visual Basic Editor). Klik tombol Visual Basic pada tab Developer, lalu akan muncul jendela VBE.

VBE

Selanjutnya di jendela VBE terlebih dahulu dilakukan penyuntingan pada alamat sel input. Ingat sel-sel input digeser letaknya sehingga perintah di VBE juga harus disesuaikan lokasi selnya.

Code Hitungan

Code Gambar

Berikutnya, saatnya lakon utama muncul… yaitu baris perintah untuk modifikasi penampakan obyek-obyek gambar utama. Sebagai contoh, pertama untuk tampilan panah (dan teks) beban titik.

If P1 > 0 Then
        With ActiveSheet.Shapes(“O_P1”)
            .Left = 50
            …
            .Left = 50 + ((xP1 / L) * 300)
        End With
        With ActiveSheet.Shapes(“O_T1”)
            .Visible = True
            …
            .Height = 18
            .Left = 35 + ((xP1 / L) * 300)
            .TextFrame.Characters.Text = P1 & ” ” & Unit_P
        End With
    Else
        ActiveSheet.Shapes(“O_P1”).Visible = False
        ActiveSheet.Shapes(“O_T1”).Visible = False

Maksud blok perintah tersebut, jika nilai P1 (beban titik ke-1) ada (nilai >0), maka obyek panah (O_P1) dan teks (O_T1) akan ditampilkan (Visible=True). Untuk obyek teks (O_T1) dilakukan juga penyesuaian nilai/teks beserta satuannya (TextFrame.Characters.Text = P1 & ” ” & Unit_P).  ‘P1’ dan ‘Unit_P’ masing-masing adalah variabel besar beban titik dan satuan hasil pembacaan nilai sel. Sedangkan bila nilai P1 tidak ada atau tidak diisi (kosong), maka obyek panah dan teks tidak akan ditampilkan (Visible = False). Ketentuan perintah ini berlaku untuk semua beban titik yang lain (P2 sampai P4), termasuk pula untuk beban merata (O_BM) . Hanya yang berisi saja (nilai > 0) yang akan ditampilkan.

Baris perintah seperti Left atau Top berguna untuk menentukan posisi awal obyek, sedangkan Width dan Height untuk menentukan dimensi. Hal yang penting di sini adalah posisi obyek panah beban dan teksnya, karena penempatan harus sesuai (proporsional) dengan jaraknya. Misal pada obyek O_P1, pertama ditentukan posisi awal dari kiri sebesar 50 satuan. Nilai ini kemudian dimodifikasi menjadi 50+(xP1 / L*300). ‘xP1’ adalah nilai jarak beban titik dan ‘L’ adalah panjang batang. Angka ‘300’ adalah panjang obyek batang, sehingga xP1 / L*300 menyatakan perbandingan jarak/letak obyek panah terhadap panjang obyek batang. Dengan demikian maka posisi panah akan selalu sesuai dengan input jaraknya. Untuk obyek beban merata (O_BM) prinsipnya sama, hanya ada sedikit perbedaan karena selain penentuan awal batas kiri posisi obyek, perlu diformat juga lebar beban merata sesuai input jarak yang dimasukkan (Width = 0 + ((xW2 – xW1) / L * 305)).

Untuk pemakaian perintah berulang, blok With-End With sangat bermaanfaat sehinga tidak perlu menulis ulang kata yang sama. Sebagai contoh, baris perintah awal di atas bila ditulis tanpa blok With akan menjadi :

ActiveSheet.Shapes(“O_P1”).Visible = True
ActiveSheet.Shapes(“O_P1”).Left = 50

Dengan memakai blok With, maka penulisan bisa menjadi lebih ringkas.

Terakhir, modifikasi nilai teks yang berisi reaksi tumpuan. Baris perintahnya sederhana saja, tinggal mengganti isi teks (obyek O_TR1 dan O_TR2) menyesuaikan dengan hasil hitungan reaksi (nilai R1 dan R2). Baris berikut sengaja ditulis tanpa blok With karena cuma dua baris saja.


ActiveSheet.Shapes(“O_TR1″).TextFrame.Characters.Text = R1 & ” ” & Unit_P
ActiveSheet.Shapes(“O_TR2″).TextFrame.Characters.Text = R2 & ” ” & Unit_P

Nah, sudah jadi lengkaplah mainan Macro kita. Tinggal input data pada sel-sel yang sesuai, klik tombol ‘HITUNG’ dan simsalabim… akan tampil visualisasi pembebanan dan besar reaksi tumpuan.

Contoh 1

Contoh 2

Contoh 3

Kesimpulannya, dengan memanfaatkan Macro maka obyek pada Excel, baik berupa sel maupun obyek yang ada (dalam contoh ini gambar atau shape) bisa dimodifikasi, untuk isi maupun format (warna, ukuran, dst.). Ingat, yang penting nama obyek yang dimodifikasi harus sesuai. Masih banyak lagi hal yang bisa diutak-atik dengan Macro dan VBE.

Selamat mencoba dan berkreasi !

2 tanggapan untuk “Mainan Macro Yuk… (Part 3 – Habis)”

    1. Seingat saya (maklum sudah lama artikelnya) itu menyatakan panjang obyek persegipanjang yang mewakili simple beam-nya (bukan panjang batang simple beam dalam perhitungan), jadi 300 dalam satuan pixel di layar. Angka tersebut pengaruhnya hanya ke tampilan saja, dan mestinya bisa diambil nilai yang lain asal nanti konsisten dipakai nilai yang sama dalam baris-baris perintah selanjutnya.

Tinggalkan komentar

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.