Anda di halaman 1dari 488

Membuat Aplikasi

Penjualan
dengan Macro Excel
Yudhy Wicaksono & Solusi Kantor
Membuat Aplikasi Penjualan dengan Macro Excel
Sanksi Pelanggaran Pasal 113
Undang-Undang Nomor 28 Tahun 2014
tentang Hak Cipta
1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi
sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf i untuk Penggunaan
Secara Komersial dipidana dengan pidana penjara paling lama 1 (satu) tahun
dan/ atau pidana denda paling banyak Rp100.000.000 (seratus juta rupiah).
2. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau
pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta
sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf c, huruf d, huruf f, dan/
atau huruf h untuk Penggunaan Secara Komersial dipidana dengan pidana
penjara paling lama 3 (tiga) tahun dan/atau pidana denda paling banyak
Rp500.000.000,00 (lima ratus juta rupiah).
3. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau
pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta
sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf a, huruf b, huruf e, dan/
atau huruf g untuk Penggunaan Secara Komersial dipidana dengan pidana
penjara paling lama 4 (empat) tahun dan/ atau pidana denda paling banyak
Rp1.000.000.000,00 (satu miliar rupiah).
4. Setiap Orang yang memenuhi unsur sebagaimana dimaksud pada ayat (3)
yang dilakukan dalam bentuk pembajakan, dipidana dengan pidana penjara
paling lama 10 (sepuluh) tahun dan/atau pidana denda paling banyak
Rp4.000.000.000,00 (empat miliar rupiah).

Membuat Aplikasi Penjualan dengan Macro


Excel

YUdhy Wicaksono & Solusi Kantor


PENERBIT PT ELEX MEDIA KOMPUTINDO

Ko.Mp.\.s GR.
Membuat Aplikasi Penjualan dengan Macro Excel
Yudhy Wicaksono & Solusi Kantor
0 2017, PT Elex Media Komputindo, Jakarta
Hak cipta dilindungi undang-undang
Diterbitkan pertama kali oleh
Penerbit PT Elex Media Komputindo
Kelompok Gramedia, Anggota IKAPI, Jakarta 2017

717050310
ISBN: 978-602-04-0144-7

[eEp]

Dilarang keras menerjemahkan, memfotokopi, atau memperbanyak sebagian atau


seluruh isi buku ini tanpa izin tertulis dari penerbit.
Dicetak oleh Percetakan PT Gramedia, Jakarta
Isi di luar tanggung jawab percetakan

KATA PENGANTAR

Buku-buku yang beredar pada umumnya membahas pembuatan


aplikasi penjualan menggunakan software pengembang yang
memang secara khusus digunakan untuk membuat aplikasi, misalnya
Visual Basic, Visual FoxPro atau software pengembang yang lain. Bagi
pengguna awam, software-software tersebut merupakan software
yang kurang familiar, atau malah mungkin baru mereka dengar
(asing).
Buku ini merupakan satu-satunya buku yang membahas pembuatan
aplikasi penjualan dengan Macro Excel. Sebagaimana diketahui, Excel
merupakan software pengolah data yang sudah sangat familiar dan
banyak digunakan di Indonesia. Banyaknya fitur canggih Excel akan
memudahkan dalam membuat aplikasi penjualan. Jika fitur yang akan
kita sertakan dalam aplikasi sudah disediakan Excel, kita tidak perlu
membuat kode program baru untuk menambahkan fitur tersebut
dalam aplikasi.
Penulis menyadari bahwa tidak ada karya yang sempurna. Oleh
karena itu, penulis mengharapkan adanya masukan, saran ataupun
kritikan dari pembaca yang bersifat membangun. Apabila Anda
berniat memberi masukan, saran ataupun kritikan, silahkan
menghubungi saya melalui email dengan alamat:
yudhy_wicakson02000@yahoo.com atau kantorsolusi@gmail.com
Kepada PT Elex Media Komputindo saya mengucapkan terima kasih
karena bersedia menerbitkan buku karya saya yang ke-64. Terima
kasih juga saya ucapkan untuk Bapak AS Pratisto (Eep) dan Tim Elex
Media Komputindo yang telah banyak membantu hingga buku ini
bisa terbit.

Salatiga, 17 Januari 2017

Yudhy
Wicaksono yudhy
wicakson02000@yahoo.com
www.solusi-kantor.com
vi
DAFTAR ISI

KATA PENGANTAR

DAFTAR ISI

BAB
1
Penggunaan

Menonaktifl<an

MENGENAL MACRO EXCEL DAN MENGOPTIMALKANNYA


1.1
1 .2 Forrnat File
1 .3
1 .4 Keamanan Macro
1 .5 Visual Basic Editor
1 .5. 1 Project Explorer
1 .5.2 Window Properties ... ..... .. 1
0
1 .5.3 Window Code
..... .... .. 1 1
1 .5.4 Window Object ..... .. 12
1 .5.5 Object Browser ..... ... ..... .... ..
12
1 .6 Kode Macro 14
1 .6. 1 Komentar . 15
1 .6.2 Memenggal Kode Macro ..... .. 1 6
1 .6.3 Fitur Auto List Members. . 16
1 .6.4Kesalahan Penulisan Kode Macro. .... .... 1 7
1 .6.5 Fitur Auto Quick Info ..... .. 18
1 .6.6 Pengaturan Format Font Kode Macro ..... ..... ...... 18
7 Objek ..... .. 19
1 .8 Properti .. ......20
1.8.1 Mengubah Properti Melalui Window Properties ...........
20
1.8.2 Mengubah Properti Saat Runtime. ........... 23
1.8.3 Properti yang Sering Digunakan. ...........23
1 .9 Method
........... 28

vii
1.10 Operator VBA ..........
28
1 . 10. 1 Operator Aritmatika. ..........
28
1 . 10.2 Operator Perbandingan ... .. .. ......
29
1 . 10.3 Operator Teks ..........
29
1 . 10.4 Operator Referensi ... ... ... ... ..
...... 30
1 . 10.5 Operator Logika..................
...... 30 1 . 11
Variabel ...... 30
ı . 12 Konstanta ... .. ... ..
31 ı . 13 Array ......
32 14 Tipe Data ......
33 ı . 15 Bekerja dengan Nama Range ...
......35
1 . 15. 1 Membuat Nama Range Melalui Name Box .. ... .. ......35
1 . 15.2 Membuat Nama Range Melalui Kotak Dialog Create
Names form Selection .......... 36
1 . 15.3 Membuat Nama Range Melalui Kotak dialog New
Name ... ......37
1 . 15.4 Edit Nama Range ..........39
1 . 15.5 Menghapus Nama Range
1 . 15.6 Membuat Nama Range Dinamis
ı . 16 Pengaturan Setting Regional Komputer.........
MENAMBAH İNTERAKTIVITAS MACRO 49
2. 1 Kotak Pesan (Message Box)...............................
................49
2.1.1 Membuat Kotak Pesan ............................... ......51
2.1.2 Nilai Kotak Pesan ...... 53
2.2 Kotak Input (Input Box) ...................... ......
55
2.3 Built İn Kotak Dialog . ......
58
2.4 OserForm . ... ..
60
2.4. 1 ToolBox ................ 60
2.4.2 Menambahkan Kontrol................. ......
62
2.4.3 Mengubah Okuran dan Posisi Kontrol........... ........
63
2.4.4 Menyalin Kontrol ......
65
2.4.5 Menghapus Kontrol ......
66
2.4.6 Membuat Kotak Dialog..
...... 66
2.4.7Ekspor Kotak Dialog . .. ...... 72
2.4.8Impor Kotak Dialog . ... ..
74
2.5 ActiveX Controls .... ...
76
2.5. ı Pengaturan Keamanan ActiveX Controls .. .. .. ................ 77
2.5.2 Menambahkan Kontrol . ... ..
78
2.5.3 Kotak Dialog Forrnat Control .. .. ... ... ... ..
79
2.5.4 Memasukkan Nilai SpinButton ke TextBox ... ................
82
2.6 Form Control dan Shape .... .. .. ... ...
84

viii
MENYIAPKAN WORKSHEET APLIKASI 89
3.1 Worksheet TabelBantu ..
90
3.2 Worksheet DatabaseBarang . ..
93
3.3 Worksheet DatabasePemasok
.. 97
3.4 Worksheet DatabasePelanggan ..
100
3.5 Worksheet HeaderPembelian ..
103
3.6 Worksheet DetailPembelian ..
106
3.7 Worksheet HeaderPenjualan ..
109
3.8 Worksheet DetailPenjualan .. 1
12
3.9 Worksheet PembayaranHutang 1
14
3.10 Worksheet PenerimaanPiutang. 1
17
BAB 4 MEMB(.IAT FORM APLIKASI
121
4.1 Membuat Form Barang ..
121
4.2 Membuat Form Pemasok. ..
146
4.3 Membuat Form Pelanggan.
162
4.4 Membuat Form Cari Barang.
178
4.5 Membuat Form Cari Pemasok
185
4.6 Membuat Form Transaksi Pembelian
191
4.7 Membuat Form Cari Pelanggan
218
4.8 Membuat Form Transaksi Penjualan
224
4.9 Membuat Form Kasir

256
4.10 Membuat Form Pembayaran Hutang
...273
4.1 1 Membuat Form Penerimaan Piutang
...286
4.12 Membuat Form Cetak
...299
4.13 Membuat Form Cetak Barang
...303
4.14 Membuat Form Cetak Pemasok.
...308
4.15 Membuat Form Cetak Pelanggan .
...312
4.16 Membuat Form Cetak Pembelian .
...316
4.17 Membuat Form Cetak Penjualan
...329
MEMB(.IAT TAMPILAN (ITAMA APLIKASI
339 5.1 Desain Tampilan Otama Aplikasi ..
339
5.2 Menambahkan Macro ..
343
5.3 Menambahkan Tombol Kelompok Database. ..
345
5.4 Menambahkan Tombol Kelompok Fitur ..
349
5.5 Proteksi Aplikasi Penjualan .
.. 352
5.5.1 Proteksi Worksheet .. 352
5.5.2 Proteksi Macro .. 354
PENGG(.INAAN APLIKASI PENJ(.IALAN
357
6.1 Menggunakan Form Barang 357
6.1.1 Input Data Barang 357
6.1.2 Pencarian Barang 361
6.1.3 Edit dan Hapus Record Data
363
6.2 Menggunakan Form Pemasok 364
6.2.1 Input Data Pemasok 365
6.2.2 Pencarian Pemasok 368
6.2.3 Edit dan Hapus Record Data 370
6.3 Menggunakan Form Pelanggan 371
6.3.1 Input Data Pelanggan 371
6.3.2 Pencarian Pelanggan 375
6.3.3 Edit dan Hapus Record Data 377
6.4 Menggunakan Form Transaksi Pembelian 378
6.5 Menggunakan Form Transaksi Penjualan 385
6.6 Menggunakan Form Kasir
389
6.7 Menggunakan Form Pembayaran Hutang 391
6.8 Menggunakan Form Penerimaan Piutang 394
6.9 Menggunakan Form Cetak Barang 396
6.10 Menggunakan Form Cetak Pemasok 398
6.11 Menggunakan Form Cetak Pelanggan 399
6.12 Menggunakan Form Cetak Pembelian 400
6.13 Menggunakan Form Cetak Penjualan 402
TENTANG PENOLIS 405
MENGENAL MACRO
EXCEL
DAN MENGOPTIMALKANNYA

Visual Basic for Application (VBA) atau biasa dikenal dengan istilah
Macro, merupakan pengembangan bahasa pemrograman Visual Basic
yang diterapkan dalam aplikasi Excel. Berbeda dengan program
pengembang Visual Basic, pemrograman yang dibuat menggunakan
Macro hanya dapat dibangun dan digunakan pada aplikasi Excel.
Program yang dibuat menggunakan Macro tidak dapat berjalan,
sebelum Anda menjalankan Excel terlebih dahulu. Pemrograman
Macro Excel mempunyai beberapa keuntungan sebagai berikut:
> Menghemat waktu. Penyelesaian pekerjaan menggunakan Macro
lebih cepat dibandingkan dengan cara manual, karena prosesnya
dikerjakan secara otomatis.
> Menghemat tenaga. Selain menghemat waktu, penyelesaian
pekerjaan menggunakan Macro juga dapat menghemat tenaga.
> Mengurangi tingkat kesalahan. Kemungkinan adanya kesalahan
dalam menyelesaikan pekerjaan secara manual dapat saja terjadi,
meskipun Anda seorang yang sangat ahli dalam menggunakan
Excel. Penyelesaian pekerjaan menggunakan Macro secara
1
konsisten akan menyelesaikan suatu pekerjaan berdasarkan
perintah yang tertulis dalam kode Macro sehingga tingkat
kesalahan yang mungkin timbul sangat kecil. Kesalahan hanya
dapat terjadi jika ada kesalahan perintah pada kode Macro.
1.1 Penggunaan Fitur Macro
Sebelum menggunakan fitur Macro, Anda harus menampilkan tab
Developer dalam Ribbon terlebih dahulu. Berikut langkah-langkah
untuk mengaktifkan tab Developer:
1. Ontuk pengguna Excel 2007, klik Office Button kemudian pilih
Excel Options. Muncul kotak dialog Excel Options.

Gambar 1.1 Menampilkan tab Developer Excel 2007.

2. Pilih opsi Popular. Beri tanda contreng pada pilihan Show


Developer tab in the Ribbon kemudian klik tombol OK. Tampilan
tab Developer dalam Ribbon terlihat seperti pada Gambar 1.2.

Gambar 1.2 Tab Developer dalam Ribbon.


3. Ontuk menampilkan tab Developer pada Ribbon Excel 2010, klik
kanan area Ribbon kemudian pilih menu Customize the Ribbon...
Muncul kotak dialog Excel Options pada pilihan Customize
Ribbon.

Gambar 1.3 Menu klik kanan area Ribbon.

4. Anda juga dapat menampilkan kotak dialog Excel Options


dengan cara klik tab File kemudian pilih Options. Muncul kotak
dialog Excel Options. Pilih opsi Customize Ribbon.

Gambar 1.4 Menampilkan tab Developer Excel 2010.

3
5. Pilih Main Tabs pada kotak pilihan Customize the Ribbon: Beri
tanda contreng tab Developer dalam daftar di sebelah kanan.
Klik tombol OK.

1.2 Format File


Workbook standar Excel Excel 2007 dan Excel 2010 dengan forrnat
XLSX tidak mendukung Macro. Ontuk menyimpan workbook Excel
2007 atau Excel 2010 yang mengandung Macro, Anda harus
menggunakan format XLSM atau XLS (Excel 97-2003).
1. Klik tombol Office Button kemudian pilih menu Save As untuk
menyimpan workbook. Bagi pengguna Excel 2010 klik tab File
kemudian pilih menu Save As. Muncul kotak dialog Save As. Jika
Anda menyimpan workbook yang mengandung Macro dengan
format file XLSX, muncul kotak pesan seperti pada Gambar 1.5.
2. Klik tombol Yes jika workbook akan tetap disimpan dalam format
file XLSX tanpa mengaktifl<an Macro. Jika opsi ini yang Anda
pilih, Macro dalam workbook akan dihapus.

Gambar 1.5 Kotak pesan format penyimpanan workbook.

3. dntuk menyimpan workbook dengan Macro klik tombol No.


Muncul kotak dialog Save As. Ketikkan nama file pada kotak isian
File name: Pada kotak pilihan Save as Ype: pilih format file Excel
Macro-Enabled Workbook(*.xlsm) atau Excel 97-2003
Workbook(*.xls) kemudian klik tombol Save.
Libor*' Oc.:ument.s Hui*

New folder

5
Gambar 1.6 Kotak dialog Save As.
1.3 Menonaktifkan Penyimpanan Workbook
Otomatis
Excel menyediakan fitur yang digunakan untuk menyimpan workbook
secara otomatis setiap interval waktu tertentu. Cara ini memang
sangat bermanfaat untuk menghindari kejadian yang tidak diinginkan,
misalnya listrik yang tiba-tiba padam. Namun demikian, penyimpanan
secara otomatis dalam bentuk workbook backup tidak mendukung
fitur Macro sehingga terkadang malah menyebabkan error. Oleh
karena itu, untuk sementara fitur tersebut kita non-aktifl<an.

1. Bagi pengguna Excel 2007 klik Office Button kemudian pilih Excel
Options. Ontuk pengguna Excel 2010 klik tab File kemudian pilih
menu Options. Muncul kotak dialog Excel Options.
2. Pilih opsi Save kemudian hilangkan tanda contreng pada pilihan
Save AutoRecover information every. Jika sudah, klik tombol OK.

Gambar 1.7 Menon-aktifkan penyimpanan workbook otomatis

6
1.4 Keamanan Macro
Otomatisasi Macro Excel terkadang disalahgunakan oleh pengguna
yang tidak bertanggung jawab untuk menyebarkan kode Macro yang
berpotensi menimbulkan kerugian, misalnya kode Macro untuk
menghapus data. Ontuk mengantisipasi hal tersebut, Excel secara
default memberi peringatan jika pengguna membuka workbook berisi
Macro. Excel 2007 secara otomatis akan menon-aktifkan Macro saat
workbook yang berisi Macro pertama kali dibuka. Muncul peringatan
keamanan seperti terlihat pada Gambar 1.8.

Gambar 1.8 Peringatan keamanan Macro Excel 2007.

Klik tombol Options... Muncul kotak dialog Microsoft Office Security


Options. Ontuk mengaktifkan Macro pilih opsi Enable this content
kemudian klik tombol OK.

7
Gambar 1.9 Kotak dialog Microsoft Office Security Options.

Excel 2010 secara otomatis akan menon-aktifkan Macro ketika


workbook yang berisi Macro dibuka. Muncul peringatan seperti
terlihat pada Gambar 1.10. Klik tombol Enable Content untuk
mengaktifl<an Macro.

Gambar 1.10 Peringatan keamanan Macro Excel 2010.

Excel 2010 selanjutnya akan menampilkan kotak dialog Microsoft


Office Excel Security Notice jika Anda membuka workbook yang berisi
Macro. Apabila Anda tidak mengenal Macro pada workbook tersebut,
klik tombol Disable Macros untuk menonaktifkan Macro. Ontuk
mengaktifl<an Macro klik tombol Enable Macros.

Gambar 1.11 Kotak dialog Microsoft Office Excel Security Notice.

Ontuk mengatur keamanan Macro klik tombol Macro Security dalam


tab Developer group Code. Muncul kotak dialog Trust Center pada
pilihan Macro Settings. Anda dapat melakukan pengaturan keamanan
Macro sebagai berikut:

8
Disable all macros without notification. Apabila opsi ini dipilih,
Macro dalam workbook tidak akan dijalankan ketika dibuka.
Disable all macros with notification. Apabila opsi ini dipilih, Excel
akan menampilkan informasi peringatan ketika Anda membuka
workbook yang berisi Macro. Dijalankan atau tidaknya Macro
selanjutnya tergantung pada pilihan Anda.
Disable all macros except digitally signed macros. Jika opsi ini
dipilih, Macro dalam workbook tidak akan dijalankan ketika
dibuka, kecuali untuk Macro yang disimpan dalam folder
terpercaya, yang sudah ditentukan. Folder terpercaya dapat kita
masukkan, kita ubah atau kita hapus melalui kotak dialog Trust
Center opsi Trusted Locations.
Enabled all macros (not recommended; potentially dangerous code
can run). Apabila opsi ini dipilih, Macro yang ada dalam workbook
akan selalu dijalankan, tanpa melalui informasi peringatan. Opsi ini
tidak direkomendasikan, terutama untuk macro dalam workbook
yang tidak Anda kenal, karena berpotensi menimbulkan kerugian.
Jika Anda tetap memilih opsi ini, beri tanda contreng pada pilihan
Trust access to the VBA project object model. Ontuk
memperlancar dalam pembuatan aplikasi yang dibahas dalam
buku, untuk sementara pilih opsi ini.

9
Gambar 1.12 Kotak dialog Trust Center.

1.5 Visual Basic Editor


Visual Basic Editor merupakan lingkungan kerja, tempat di mana
Macro Excel dibuat. Tampilan Visual Basic Editor sangat berbeda
dengan tampilan utama Excel. dntuk menampilan Visual Basic Editor,
klik tombol Visual Basic dalam tab Developer group Code. Visual Basic
Editor juga dapat ditampilkan menggunakan kombinasi tombol
Alt+F11 pada keyboard.

10
Gambar 1.13 Tampilan Visual Basic Editor.

1.5.1 Project Explorer


Project Explorer digunakan untuk melakukan navigasi terhadap
seluruh objek yang ada dalam proyek VBA workbook. Secara garis
besar objek dikelompokkan ke dalam Microsoft Excel Objects, Forms,
Modules dan Class Modules.

Gambar 1.14 Tampilan Project Explorer.


Ontuk menampilkan atau mengaktifkan Project Explorer, pilih menu
yew > eroject Explorer (atau tekan kombinasi Ctrl+R). Anda juga dapat
menampilkan Project Explorer dengan cara klik tombol Project
Explorer yang terdapat dalam toolbar Standard.

Gambar 1.15 Daftar menu klik kanan Project Explorer.

Melalui Project Explorer, Anda dapat menampilkan kode Macro,


menampilkan objek, mengatur properti VBA, menambahkan objek,
mencetak objek dan kode yang terdapat didalamnya serta melakukan
impor dan ekspor objek. Klik kanan Project Explorer pada objek yang
Anda inginkan kemudian muncul daftar menu seperti terlihat pada
Gambar 1.15.

1.5.2 Window Properties


Window Properties digunakan untuk menampilkan properti yang
dimiliki objek. dntuk menampilkan atau mengaktifkan window
Properties, pilih menu yew > Properties Window atau klik tombol
Properties Window (E) pada toolbar Standard. Hasil yang sama juga
dapat dilakukan dengan cara menekan tombol F4 pada keyboard.
Properti objek pada window Properties dapat dilihat berdasarkan
urutan abjad (Alphabetic) ataupun bedasarkan kategori (Categorized).
Window Properties secara otomatis akan menampilkan properti objek
yang sedang aktif (terpilih).

12
Properties - UserFormI Properties - UserFormI

Alphabeåc I Categonzed I

E
Left E (Name)

Gambar 1.16 Tampilan Window Properties.

1.5.3 Window Code


Window Code digunakan untuk melihat, membuat
atau melakukan modifikasi kode Macro. Pada
window Code, terdapat kotak pilihan Object
Selector dan Event Selector. Kotak pilihan
Object Selector digunakan untuk memilih objek
atau koleksi objek yang akan ditampilkan kode
Macro-nya, sedangkan kotak pilihan Event
Selector digunakan untuk memilih event pada
objek terpilih.

13
Gambar 1.17 Tampilan Window Code.

1.5.4 Window Object


Window Object merupakan tempat yang digunakan untuk
menampilkan, membuat dan mengatur objek OserForm serta objek
kontrol dalam OserForm secara visual. Ontuk menampilkan window
Object, pilih menu yew > OYect. Anda juga dapat menampilkan
window Object dengan menekan kombinasi tombol Shift+F7 pada
keyboard.

Toolbox

Gambar 1.18 Tampilan Window Object.

1.5.5 Object Browser


Object Browser digunakan untuk menampilkan atau melakukan
pencarian terhadap semua objek, koleksi objek, properti, method
atau event yang terdapat dalam VBA. Ontuk menampilkan Object
Browser, pilih menu Yiew > Object Browser, atau tekan tombol F2.
Anda juga dapat menampilkan Object Browser dengan cara klik
tombol Object Browser 4' dalam toolbar Standard.

14
Gambar 1.19 Tampilan Object Browser.

Ontuk mencari inforrnasi objek, properti, method atau event tertentu


menggunakan Object Browser, lakukan langkah-langkah sebagai
berikut:
1. Ketikkan objek, properti, method atau event yang akan Anda cari
pada kotak pilihan Search Text. Dalam contoh kali ini ketikkan
Italic, untuk mencari informasi mengenai properti Italic.
<AII Libraries>

Italic
Gambar 1.20 Menggunakan fasilitas pencarian.

2. Klik tombol Search atau tekan tombol Enter pada keyboard. Hasil
pencarian kemudian ditampilkan seperti terlihat pada Gambar
1.21.

15
Gambar 1.21 Tampilan hasil pencarian.

3. Klik salah satu item hasil pencarian yang Anda inginkan, misalnya
pilih properti Italic pada Library Excel dan Class Font. Informasi
properti yang Anda pilih akan ditampilkan di bagian pojok kiri
bawah Object Browser.
4. dntuk mengcopy properti yang Anda pilih klik tombol Copy to
Clipboard h . Tekan kombinasi Ctrl+V untuk menyalin properti
yang sudah Anda copy.
Object Browser menggunakan ikon yang berbeda untuk
memudahkan Anda dalam membedakan objek, properti, method
atau event. Berikut ikon yang digunakan Object Browser untuk
membedakan objek, properti, method atau event:
ikon objek.
ikon properti.
ikon event.
ikon method.
ikon predifened constant, yaitu konstanta yang secara default
sudah disediakan. Konstanta untuk VBA diawali dengan prefiks vb,
misalnya vbYes. dntuk Excel, konstanta diawali dengan prefiks xl,
misalnya xlChart.

1.6 Kode Macro


Kode Macro merupakan serangkaian tulisan perintah yang akan
dilaksanakan ketika Macro dijalankan. Kode Macro akan mengontrol
dan menentukan dijalankannya sebuah Macro. Kode Macro dapat
16
ditulis pada objek workbook, worksheet, Module, dserForm atau
Class Module.
1.6.1 Komentar
Anda dapat menambahkan komentar untuk memberi keterangan
pada baris kode Macro tertentu. Komentar dapat ditambahkan pada
suatu baris dengan menuliskan tanda petik satu (') di depan
statement yang ingin dinyatakan sebagai komentar. Komentar tidak
dianggap sebagai perintah sehingga tidak akan dijalankan. Perhatikan
contoh berikut ini:
' Membuat worksheet baru
Worksheets . Add

'Membuat worksheet baru dianggap bukan perintah melainkan


komentar sehingga tidak akan dijalankan. Worksheets.Àdd dianggap
sebagai perintah sehingga akan dijalankan. Ontuk membuat
komentar dengan mudah, pilih atau blok baris kode yang akan dibuat
menjadi komentar kemudian klik ikon Comment Block pada toolbar
Edit.

Gambar 1.22 Menambahkan komentar.

Apabila toolbar Edit belum ditampilkan, pilih menu Yiew > Toolbar >
Edit untuk menampilkan toolbar Edit.

17
Gambar 1.23 Menampilkan toolbar Edit.

1.6.2 Memenggal Kode Macro


Kode Macro dapat dipenggal ke baris berikutnya, jika Anda merasa
kode Macro terlalu panjang. Anda juga dapat melakukan
pemenggalan pada komentar. Pemenggalan dilakukan dengan spasi
yang diikuti garis bawah (_). Perhatikan contoh kode Macro yang
dipenggal berikut:
MsgBox "Nama worksheet sudah ada atau bel um diisi "
vbOKOn1y + vbCritica1 , " Error Nama Worksheet "

Penulis lebih menyukai jika hasil pemenggalan Kode Macro


ditempatkan lebih menjorok ke dalam menggunakan tombol Indent
pada toolbar Edit. Kode Macro yang lebih menjorok ke dalam tidak
berpengaruh saat Macro dijalankan.
MsgBox "Nama worksheet sudah ada atau bel um diisi
" , vbOKOn1y + vbCritica1, "Error Nama Worksheet
"

Selain pemenggalan kode Macro, penulis juga menuliskan kode


Macro lebih menjorok ke dalam untuk memudahkan penulis saat
menelusuri kode Macro yang jumlahnya cukup banyak, misalnya
statement dalam struktur If Then berikut:
' Jika selLeve1Akses berisi Admin
If selLeve1Akses . Text = "Admin" Then
Menampilkan Form Akun Pengguna
f ormAkun . Show
End If

18
1.6.3 Fitur Auto List Members
Saat menuliskan kode Macro, Anda dapat memanfaatkan fitur Auto
List Members yaitu fitur yang akan menampilkan daftar objek, koleksi
objek, properti atau method yang dimiliki sebuah objek. Dengan
menggunakan fitur Auto List Members, kesalahan penulisan objek,
koleksi objek, properti ataupun method dapat diminimalkan. VBA
secara default mengaktifl<an fitur Auto List Members. Apabila tidak
aktif, Anda dapat mengaktifl<annya melalui kotak dialog Options.
Berikut langkah-langkah pengaturan fitur Auto List Members:
1. Pilih menu 1001s > Qptions... kemudian muncul kotak dialog
Options. Pilih tab Editor.

Gambar 1.24 Kotak dialog Options — tab Editor.

2. Beri tanda contreng pada pilihan Auto List


Members kemudian klik tombol OK.
Ontuk menampilkan fitur Auto List Members tekan
kombinasi Ctrl+J. Daftar objek, koleksi objek,
properti atau method yang dimiliki objek akan
terlihat seperti pada Gambar 1.25. Anda dapat
menekan tombol Esc pada keyboard untuk
menyembunyikan fitur Auto List Members. Ontuk
memilih salah satu opsi yang ditampilkan daftar
Auto List Members tekan tombol Tab pada
keyboard, atau klik ganda opsi yang ingin Anda
pilih.

19
Gambar 1.25 Tampilan fitur Auto List Members.

1.6.4 Kesalahan Penulisan Kode


Macro
Apabila kode Macro yang Anda tulis salah, VBA
secara default akan menampilkan kotak pesan
peringatan. Klik tombol OK jika Anda mengetahui
solusi untuk menangani kesalahan yang terjadi.
Jika Anda memerlukan informasi bantuan untuk
menangani kesalahan yang terjadi, klik tombol
Help. VBA secara default mengaktifl<an fitur
ini. Jika tidak aktif, Anda dapat
mengaktifl<annya melalui kotak dialog Options
tab Editor pilihan Auto Syntax Check.

Gambar 1.26 Kesalahan penulisan kode Macro.

1.6.5 Fitur Auto Quick Info


Fitur Auto Quick Info digunakan untuk
menampilkan informasi argumen dari fungsi,

20
properti atau method. VBA secara default
mengaktifl<an fitur Auto Quick Info. Apabila
tidak aktif, Anda dapat mengaktifl<annya
melalui kotak dialog Options tab Editor pilihan
Auto Quick Info.
(General)

Sub TarohahSheets ( )

Sheets . Add
[Aftetj, [Couno, [Type]) As
Object
End Sub
Gambar 1.27 Informasi yang ditampilkan Auto Quick
Info.

1.6.6 Pengaturan Format Font Kode


Macro
Secara subyektif, penulis merasa nyaman dengan
pengaturan default forrnat font kode Macro.
Jika Anda kurang merasa nyaman dengan
pengaturan default format font kode Macro, Anda
dapat melakukan pengaturan forrnat font kode
Macro sendiri.
1 . Pilih menu 1001s > Qptions... kemudian muncul kotak dialog
Options. Pilih tab Editor Format.
2. Elemen kode Macro yang akan diatur dapat Anda pilih melalui
daftar pilihan yang tersedia. Berikut pilihan pengaturan format
font kode Macro yang dapat Anda terapkan:
o Code Colors. Pada pilihan ini, Anda dapat mengatur warna
font kode Macro (Eoreground), background teks kode Macro
(Background) atau indikator kode Macro (Indicator) elemen
kode Macro pada daftar pilihan yang tersedia.
o Eont. Pada kotak pilihan Eont: Anda dapat mengatur jenis
font elemen kode Macro pada daftar pilihan yang tersedia.

21
o Size. Pada kotak pilihan Size: Anda dapat mengatur ukuran
font elemen kode Macro pada daftar pilihan yang tersedia.
o Margin Indicator Bar. Beri tanda contreng pada pilihan ini
untuk menampilkan indikator visual saat debugging Macro.

Gambar 1.28 Kotak dialog Options — tab Editor Format.

1.7 Objek
Objek merupakan komponen dalam Macro yang mempunyai properti
dan method sehingga dapat diubah atau dimanipulasi. Suatu objek
dapat berupa satu objek atau kumpulan dari beberapa objek (koleksi
objek). Sebuah koleksi juga merupakan objek sehingga mempunyai
properti dan method yang dapat diubah (dimanipulasi). Objek dalam
Macro mempunyai tingkatan dari yang paling umum sampai
tingkatan yang paling khusus. Excel merupakan Objek yang paling
umum (Application) yang mempunyai tingkatan Objek dibawahnya
sebagai koleksi Objek, misalnya Workbook, WorksheetFunction dan
koleksi Objek lainnya.
Saat menuliskan kode Macro, Objek dan koleksi Objek dipisahkan
menggunakan tanda titik (.). Ontuk kondisi tertentu, Anda dapat
menuliskan Objek tanpa perlu menyebutkan Objek tingkatan di
atasnya, misalnya kode Macro untuk menyeleksi worksheet Data
sebagai berikut:

22
Sheets( "Data II
) . Select

Apabila dalam waktu bersamaan terdapat dua buah workbook yang


dibuka, di mana masing-masing workbook mempunyai worksheet
Data, maka Anda harus menyebutkan Objek tingkatan di atasnya
(workbook) dalam kode Macro. Jika tidak disebutkan, workbook yang
dipilih adalah workbook yang sedang aktif. Berikut contoh kode
Macro yang harus Anda tuliskan jika workbook yang Anda maksud
adalah Analisis.xls:
Workbooks ( "Analisi s . XI s n
) . Sheets( "Data" ) . Select

1.8 Properti
Properti merupakan karateristik yang dimiliki Objek. Seperti halnya
benda yang memiliki beberapa identitas, suatu Objek juga memiliki
beberapa properti yang menunjukkan identitas Objek tersebut.
Apabila suatu benda memiliki identitas panjang, lebar, tebal, warna
dan identitas lainnya, maka Objek VBA memiliki beberapa properti
yang menunjukkan identitas misalnya Name, Height, Width,
BackColor atau Caption. Pengaturan properti Objek sangat penting
untuk membedakan satu Objek dengan Objek yang lain. Properti
Objek dapat diatur melalui window Properties atau melalui kode
Macro saat runtime (saat Macro dijalankan).

1.8.1 Mengubah Properti Melalui Window Properties


Ontuk mengubah properti Objek melalui window Properties, pastikan
Objek dalam keadaan terpilih. Hal ini perlu Anda perhatikan karena
window Properties akan menampilkan daftar properti Objek yang
dipilih.
Pengaturan properti melalui window Properties dilakukan dengan
salah satu cara sebagai berikut:
Mengetikkan secara langsung nilai properti yang akan dimasukkan.
Setelah Anda mengetikkan nilai properti tekan tombol Enter.
Contoh pengaturan properti yang dilakukan dengan cara

23
mengetikkan secara langsung adalah Name, Height, Width, Left,
Top.

Gambar 1.29 Mengetikkan secara langsung properti Name.

Memilih salah satu opsi yang disediakan dalam bentuk kotak


pilihan. Contoh properti yang ditentukan dengan cara seperti ini
adalah Enabled atau Visible.

Gambar 1.30 Memilih opsi pengaturan properti Enabled.

Memilih salah satu opsi yang disediakan dalam bentuk daftar panel.
Contoh properti yang ditentukan dengan cara seperti ini adalah
BackColor, BorderColor, ForeColor.

24
Gambar 1.31 Memilih opsi pengaturan properti ForeColor.

Menggunakan kotak dialog. Contoh properti yang pengaturannya


ditentukan melalui kotak dialog adalah Font. Klik tombol -J yang
terletak pada properti Font kemudian muncul kotak dialog Font.
Atur properti Font yang Anda inginkan. Jika sudah, klik tombol OK.

Gambar 1.32 Pengaturan properti Font melalui kotak dialog.

1.8.2 Mengubah Properti Saat Runtime


Properti objek juga dapat diubah saat runtime menggunakan kode
Macro. Saat menuliskan kode Macro, objek dan properti dipisahkan

25
menggunakan tanda titik (.). Anda dapat memanfaatkan fitur Auto
List Members untuk menampilkan daftar properti sebuah objek.
(General)

Tebal
. Bo
Range ( "Al") . Font
End

ESt Italic
Name

Gambar 1.33 Daftar properti yang ditampilkan.

1.8.3 Properti yang Sering Digunakan


Beberapa properti dimiliki oleh seluruh objek, namun beberapa
properti yang lain hanya dimiliki objek tertentu secara khusus. Berikut
daftar properti objek penting yang sering digunakan:
Name merupakan properti untuk menentukan nama objek. Properti
Name dimiliki semua objek. Nama objek yang Anda ubah harus
sesuai dengan aturan dalam Visual Basic, misalnya nama objek
tidak boleh menggunakan karakter < atau >. Selain adanya aturan
tersebut, nama objek juga harus bersifat unik (tidak ada nama
objek yang sama dalam sebuah workbook).
BackStyle merupakan properti yang digunakan untuk menentukan
style objek, apakah transparan atau tidak. Pilihan yang disediakan
adalah:
Konstanta Nilai Keterangan
fmBackStyleTransparent o Objek terlihat transparan. Pada
pilihan ini pengaturan properti
BackColor tidak berlaku.
fmBackStyleOpaque 1 Objek telihat solid (tidak
transparan). Pada pilihan ini

26
pengaturan properti BackColor
berlaku.
BackColor merupakan properti yang digunakan untuk menentukan
warna latar belakang (background) objek. Warna latar belakang
objek ditampilkan jika properti BackStyle diatur ke
fmBackStyleOpaque. Ontuk mengubah properti BackColor melalui
window Properties klik drop down properti BackColor kemudian
pilih warna yang Anda inginkan. Ontuk mengubah properti
BackColor melalui kode Macro, Anda dapat memilih warna
konstan yang disediakan Visual Basic:
Konstanta Nilai Keterangan
vbBlack Warna hitam

vbRed OxFF Warna merah


vbGreen OxFFOO Warna hijau
vbYellow Warna kuning

vbBlue OxFFOOOO Warna biru


vbMagenta OxFFOOFF Warna magenta
vbCyan OxFFFFOO Warna biru muda
vbWhite OxFFFFFF Warna putih
Anda juga dapat mengubah warna latar belakang objek
menggunakan kombinasi warna merah, hijau dan biru (RGB). Nilai
masing-masing warna berkisar antara 0 sampai 255. Berikut
contoh kode Macro untuk mengubah warna latar belakang objek
menggunakan RGB:
Sheets( "Sheetl" ) . chkPria . BackC010r = RGB( 100, O, 10 )

Cara termudah untuk mengubah properti BackColor menggunakan


kode Macro adalah dengan teknik copy paste properti BackColor
pada window Properties. Teknik ini juga dapat Anda terapkan
untuk properti lain yang ada hubungannya dengan pengaturan
warna. Blok properti BackColor pada window Properties. Tekan
kombinasi tombol Ctrl+C untuk mengcopy properti BackColor.
Properties - cmdOK

27
cmdOK CommandButton

Alphabetic I Categonzed

(Name) cmdOK

Gambar 1.34 Copy properti BackColor.

Ketikkan kode Macro Sheets ( I' Sheet 1 " ) . chkPria . BackC010r


kemudian tekan kombinasi tombol Ctrl+V. Kode Macro hasil copy
paste dari window Properties dapat dilihat pada contoh berikut
ini:
Sheets( "Sheetl" ) . chkPria . BackC010r = &H80000001

Caption merupakan properti untuk menentukan teks yang


ditampilkan objek. Pengaturan properti Caption (teks yang
ditampilkan) tidak harus sama dengan pengaturan properti Name
(nama objek).
Enabled merupakan properti untuk menentukan apakah objek akan
diaktifkan atau tidak. Apabila objek tidak aktif, objek tidak dapat
merespon event seperti klik atau klik ganda. Pilihan yang
disediakan adalah:
Konstanta Keterangan
True Objek aktif dan dapat merespon event
False Objek tidak aktif dan tidak dapat merespon event.
Objek yang tidak aktif ditandai tampilan teks (nilai)
atau gambar yang menjadi buram.
Font merupakan properti untuk menentukan jenis, style, ukuran,
dan efek font pada teks (nilai) dalam objek. Ontuk mengubah
properti Font melalui window Properties klik tombol -J pada
properti Font kemudian muncul kotak dialog Font. Pilih jenis, style,

28
ukuran, dan efek font yang Anda inginkan. Jika sudah, klik tombol
OK.
Ontuk mengubah properti Font menggunakan kode Macro,
masingmasing sub properti Font memiliki pengaturan tersendiri.
Sub Keterangan
properti
Name dntuk menentukan jenis font. Pengaturan diakukan
dengan menuliskan jenis font yang akan digunakan
dengan diapit tanda petik.
Bold dntuk mengatur apakah Font menampilkan huruf
tebal atau normal. Pilihannya adalah TRUE (huruf
tebal) atau FALSE (huruf normal).
Italic dntuk mengatur apakah Font menampilkan
huruf miring atau normal. Pilihannya adalah
TRUE (huruf miring) atau FALSE (huruf normal).
Underline dntuk mengatur apakah Font menampilkan huruf
dengan garis bawah. Pilihannya adalah TRUE (huruf
dengan garis bawah) atau FALSE (huruf tanpa garis
bawah).
Size dntuk menentukan ukuran font. Pengaturan
diakukan dengan menuliskan ukuran font yang akan
digunakan.
Strikethrough dntuk mengatur apakah Font menampilkan
huruf dengan tanda coret. Pilihannya adalah
TRUE (huruf dengan tanda coret) atau FALSE
(huruf tanpa tanda coret).
Weight dntuk mengatur ketebalan font. Pengaturan
diakukan dengan menuliskan ketebalan font yang
akan digunakan dari 1 sampai 1000.
Berikut contoh kode Macro untuk melakukan pengaturan
masingmasing sub properti font:

29
Sheets ( " Sheet 1 " ) . chkPria. Font . Name = " Times new
Roman "
Sheets ( " Sheet 1 " ) . chkPria.Font . Bold = False
Sheets( " Sheet 1 " ) . chkPria.Font . Italic = True
Sheets ( " Sheet 1 " ) . chkPria. Font . Underline = True
Sheets ( " Sheet 1 " ) . chkPria.Font.Size = 12
Sheets ( " Sheet 1 " ) . chkPria . Font . Strikethrough =
True
Sheets ( " Sheet 1 " ) . chkPria . Font . Weight = 50
ForeColor merupakan properti untuk menentukan warna font
(teks/nilai) pada objek. Ontuk mengubah properti ForeColor
melalui window Properties klik drop down properti ForeColor
kemudian pilih warna yang Anda inginkan. Ontuk mengubah
properti ForeColor melalui kode Macro, Anda dapat memilih
warna yang disediakan Visual Basic. Anda juga dapat mengubah
warna properti ForeColor menggunakan kombinasi warna merah,
hijau dan biru (RGB).
Height merupakan properti untuk mengatur tinggi objek.
Left merupakan properti untuk mengatur jarak tepi bidang kontrol
di sebelah kiri dengan tepi bidang sebelah kiri tempat penampung
kontrol (worksheet atau OserForm).
Picture merupakan properti untuk menentukan gambar yang akan
ditampilkan pada objek. Ontuk menentukan properti Picture
melalui window Properties klik klik tombol -J pada properti Picture
kemudian muncul kotak dialog Load Picture. Pilih file foto
(gambar) yang akan digunakan. Jika sudah, klik tombol Open.

Gambar 1.35 Kotak dialog Load Picture.

30
Selain melalui window Properties, Anda juga dapat menentukan
properti Picture menggunakan kode Macro. Pengaturan properti
dilakukan menggunakan fungsi LoadPicture dengan argumen
alamat penyimpanan file gambar yang dituliskan secara lengkap.
Berikut contoh kode Macro untuk menentukan properti Picture:

> Top merupakan properti untuk mengatur jarak tepi atas bidang
kontrol dengan tepi bidang atas tempat penampung kontrol
(worksheet atau OserForm).
> Visible merupakan properti untuk menentukan apakah objek akan
ditampilkan atau tidak. Pilihan yang disediakan adalah:
Konstanta Keterangan
True Objek ditampilkan.
False Objek tidak ditampilkan.
> Width merupakan properti untuk mengatur lebar objek.

1.9 Method
Method merupakan suatu set perintah seperti halnya Function
Procedure dan Sub Procedure, tetapi sudah tersedia di dalam suatu
objek. Penggunaan method dalam kode Macro akan tergantung
kepada kaitan perintah dan jumlah argumen yang diperlukan serta
apakah method tersebut mengembalikan suatu nilai.

1.10 Operator VBA


Operator merupakan simbol yang digunakan untuk melakukan suatu
operasi nilai data. Simbol operator bisa berupa karakter ataupun kata
khusus.

31
1.10.1 Operator Aritmatika
Operator aritmatika digunakan untuk melakukan kalkulasi operasi
matematika seperti penambahan, pengurangan, perkalian,
pembagian, perpangkatan dan persentase.
Operator aritmatika Simbol Contoh Hasil
Penambahan 10+5 15
Pengurangan 5
10-5

Perkalian 10*5 50

Pembagian 10/5 2

Perpangkatan 10A5 100.000

Persentase 0,10
Apabila dałam suatu proses perhitungan terdapat beberapa operator
aritmatika, urutan prioritas perhitungan adalah sebagai berikut:
> Perhitungan yang diapit tanda kurung dilakukan paling dulu.
> Pada level yang sama, urutan perhitungan dilakukan menurut jenis
operator. Perpangkatan dilakukan lebih dulu baru kemudian
perkalian, pembagian, penambahan dan pengurangan.
> Perhitungan pada level yang sama dilakukan dari sebelah kiri dulu.

1.10.2 Operator Perbandingan


Operator perbandingan digunakan untuk membandingkan dua nilai.
Ketika dua nilai tersebut dibandingkan menggunakan operator
perbandingan, maka akan menghasilkan nilai logika benar (true) atau
salah (false).
Operator perbandingan Simbol Contoh Hasil
Sama dengan 10=5 False

Lebih besar 10>5 True

32
Lebih kecil 10<5 False
Lebih besar sama dengan True
Lebih kecil sama dengan False
Tidak sama dengan True
1.10.3 Operator Teks
Operator teks digunakan untuk menghubungkan atau
menggabungkan dua nilai teks sehingga menghasilkan satu gabungan
nilai teks.
Operator Simbol Contoh Hasil
Menggabungkan dua nilai
Aku
teks sehingga menghasilkan "Aku " & "malu'
malu
satu gabungan nilai teks.
1.10.4 Operator Referensi
Operator referensi digunakan untuk menggabungkan sel (range) atau
sebagai pemisah argumen.
Operator referensi Simbol Contoh
Operator range Bl:B5

Operator pemisah argumen atau


1.10.5 Operator Logika
Operator logika digunakan untuk mengekspresikan satu atau lebih
data logika yang menghasilkan data logika baru. Operator logika juga
dapat digunakan untuk melakukan suatu operasi pengambilan
keputusan pada program yang dijalankan. Operator logika akan
menghasilkan nilai benar (true) atau salah (false).
Operator logika Keterangan Contoh
And Dan Al And
Not Tidak

Or Atau Al Or A2

33
1.11 Variabel
Variabel merupakan tempat dalam memori komputer yang diberi
nama sebagai pengenal dan dialokasikan untuk menampung data.
Sesuai data yang ditampung, variabel harus mempunyai tipe data
yang sesuai dengan isinya. Secara default, tipe data yang digunakan
dalam variabel adalah variant. Jika Anda tidak mengetahui dengan
pasti tipe data dalam variabel yang akan digunakan, tipe data
sebaiknya dikosongkan. Deklarasi variabel harus diletakkan sebelum
baris perintah yang menggunakan variabel tersebut.
Dalam mendeklarasikan variabel, Anda perlu memperhatikan
jangkauan dari variabel tersebut. Jangkauan variabel pada VBA dapat
diketahui dengan kata kunci Public, Private dan Dim pada saat
variabel dideklarasikan. Variabel yang dideklarasikan dengan kata
kunci Public tersedia bagi semua Procedure di semua Module dalam
suatu proyek tempat di mana variabel tersebut dideklarasikan.
Variabel yang dideklarasikan dengan kata kunci Private tersedia bagi
semua Procedure dalam Module tempat di mana variabel tersebut
dideklarasikan. Variabel yang dideklarasikan dengan kata kunci Dim
hanya tersedia dalam Procedure tempat di mana variabel tersebut
dideklarasikan. Format kode Macro dalam mendeklarasikan variabel
adalah sebagai berikut:
Jangkauan NamaVariabe1 As TipeData

Berikut contoh pendeklarasian sebuah variabel:


Public Umur As Single
Private Nama As String
Dim DataProduksi As Range

1.12 Konstanta
Konstanta adalah nama yang menyimpan suatu nilai yang tidak dapat
berubah. Kecepatan proses pada konstanta lebih cepat dibandingkan
variabel karena tidak perlu menunggu pengisian data. Dalam
mendeklarasikan kontanta, Anda perlu memperhatikan jangkauan
dari konstanta tersebut. Jangkauan konstanta pada VBA dapat

34
diketahui dengan kata kunci Public, Private dan Const pada saat
konstanta dideklarasikan. Konstanta yang dideklarasikan dengan kata
kunci Public tersedia bagi semua Procedure di semua Module dalam
suatu proyek tempat di mana konstanta tersebut dideklarasikan.
Konstanta yang dideklarasikan dengan kata kunci Private tersedia
bagi semua Procedure dalam Module tempat di mana konstanta
tersebut dideklarasikan. Konstanta yang dideklarasikan dengan kata
kunci Const hanya tersedia dalam Procedure tempat di mana
konstanta tersebut dideklarasikan. Format kode Macro untuk
mendeklarasikan konstanta adalah sebagai berikut:

Jangkauan NamaKontsanta As TipeData = Ekspresi

Berikut contoh pendeklarasian sebuah konstanta:


Public Const Berat As Integer = 50
Private Const Nama As String = "Yudhy Wicaksono"
Const Penjualan As Integer = 25000

1.13 Array
Array merupakan variabel yang mampu menyimpan beberapa nilai
dengan tipe data yang sama. Kumpulan nilai tersebut satu sama lain
dibedakan dengan indeks dan masing-masing disebut elemen array.
Beberapa nilai data yang mempunyai tipe data sama akan lebih
mudah jika dimasukkan ke dalam sebuah array dibandingkan
dimasukkan dalam beberapa variabel yang berbeda. Ada dua jenis
array, yaitu fixed array dan dynamic array. Fixed array merupakan
array yang ukurannya tetap. Format kode Macro dalam
mendeklarasikan fixed array adalah sebagai berikut:
Jangkauan Nama.Array( Indeks) As TipeData

Indeks merupakan jumlah elemen yang akan digunakan pada array.


Anda dapat menuliskan sebuah fixed array dengan cara berikut ini:
Dim NamaBuah As Single
NamaBuah = Array( 2500, 3500, 5000 )
Anda juga dapat menuliskan fixed array dengan cara berikut ini :
Dim harga (2) As Single
NamaBuah ( 0 ) - 2500
NamaBuah ( 1 ) = 3500

35
NamaBuah ( 2 ) = 5000

Sebuah array dibatasi oleh batas bawah dan batas atas. Secara
default, batas bawah array adalah nol (0). Apabila batas bawah array
adalah nol (O), maka pada Indeks Anda isikan dengan jumlah elemen
dikurangi satu. Misalnya Anda akan menggunakan 3 elemen array,
maka pada saat mendeklarasikan array, Indeks Anda isikan dengan
angka 2.
Selain dengan menggunakan batas bawah nol (O), Anda juga dapat
Anda mengubah batas bawah array dengan angka satu (1). Berikut
cara yang dapat Anda lakukan untuk mendeklarasikan batas bawah
array:
1. Menggunakan pernyataan Option Base. Format kode Macro
dalam menggunakan Option Base adalah sebagai berikut:
Option Base 1

Misalnya, Anda ingin menentukan batas bawah array adalah 1,


maka sebelum pendeklarasian array Anda tuliskan kode Macro:
Option Base 1
Dim namabuah( 3) As String

Anda tidak perlu menuliskan pernyataan Option Base, apabila


Anda menggunakan nol (O) sebagai batas bawah array.
2. Menggunakan pernyataan To. Format kode Macro dalam
menggunakan pernyataa To adalah sebagai berikut:
KataKunci Nama.Array( BatasBawah To BatasAtas) As TipeData

Misalnya, Anda ingin menentukan batas bawah array adalah 1


dan batas atas array adalah 3, maka kode Macro yang Anda
tuliskan untuk mendeklarasikan array adalah sebagai berikut:
Dim namabuah(l To 3) As String

Berbeda dengan fixed array, ukuran dalam dynamic array dapat


berubah. Dynamic array sangat berguna dalam pemrograman yang
jumlah elemen arraynya tidak bisa diketahui sejak awal. Format kode
Macro dalam mendeklarasikan dynamic array adalah sebagai berikut:

36
KataKunci Nama.Array( ) As TipeData

Berikut contoh penulisan sebuah dynamic array:


Dim harga( ) As Single

1.14 Tipe Data


Setiap variabel, konstanta atau array yang dideklarasikan dalam VBA
mempunyai tipe data. Pemilihan tipe data akan menentukan nilai apa
yang dapat ditampung oleh variabel, konstanta atau array. Oleh
karena itu, pemilihan tipe data harus tepat dan sesuai dengan nilai
yang akan ditampung. Secara default, tipe data yang digunakan
dalam variabel, konstanta atau array adalah variant. Jika Anda tidak
mengetahui dengan pasti tipe data yang akan digunakan, maka tipe
data sebaiknya dikosongkan atau diisi dengan tipe data variant.
Berikut beberapa tipe data dalam VBA:

Tipe data (-lkuran Contoh


Integer 2 byte Semua bilangan antara -32.768 sampai 32.767
Semua bilangan antara -2.147.483.648 sampai
Long 4 byte 2.147.483.648
Bilangan negatif antara -3,402823 x 10 38 sampai
1,401298 x 1045
Single 4 byte
Bilangan positif antara 1,401298 x 10-45 sampai
3,402823 x 1038
Bilangan negatif antara -1 , 7976931348623 x 10 308 sampai -
4,940656458623 x 10 324

Double 8 byte Bilangan positif antara 4,940656458623 x 10 324

sampai 1,7976931348623 x 10308

±79228162514264337593543950335 (tanpa
titik desimal)
Decimal 14 byte ± 7,9228162514264337593543950335
(dengan
28 angka di belakang titik desimal)

37
Bilangan dengan nilai antara

Currency 8 byte -922.337.203.685.477 ,5808 sampai


922.337.203.685.477,5808
Untuk menyimpan teks berisi 0 sampai 2 milyar
String 1 byte
karakter.
Byte 1 byte Bilangan antara 0 sampai 255

Boolean 2 byte Berisi nilai True (benar) atau False (salah)


Menyimpan informasi tanggal dan waktu.
Tanggal antara 1 Januari 100 sampai 31
Date 8 byte
Desember 9999. Waktu antara 00:00:00
sampai 23:59:59.
Digunakan untuk mengakses objek apa saja
Object 4 byte yang diperlukan oleh VBA, disimpan dalam
alamat memory objek tersebut.
Seluruh tipe data yang ada. Jika berupa teks,
maka akan disimpan dalam bentuk teks. Jika
Variant 16 byte berupa bilangan, maka akan disimpan dalam
tipe
Double.

1.15 Bekerja dengan Nama Range


Nama range merupakan sebuah nama yang didefinisikan (diberikan)
pada suatu range yang kita pilih. Penggunaan nama range akan
sangat membantu Anda ketika membuat aplikasi menggunakan
Macro Excel. Anda tidak perlu mengubah kode Macro jika range yang
digunakan dalam aplikasi dipindahkan. Hal tersebut tidak akan
berlaku Apabila Anda menggunakan alamat referensi sel atau range.
Nama range dapat dibuat dengan tiga cara yaitu melalui Name Box
pada Formula Bar, kotak dialog Create Names from Selection dan
kotak dialog New Name. Sebelum membuat nama range, Anda
sebaiknya mengetahui beberapa aturan pembuatan nama range
sebagai berikut:
> Karakter yang boleh digunakan dalam nama range adalah tanda titik
(.) dan underscore (_).

38
> Nama range harus dimulai dari huruf atau tanda underscore (_),
bukan angka atau karakter lainnya.
> Nama range yang terdiri dari dua kata atau lebih tidak boleh
dipisahkan dengan spasi. Anda dapat menggunakan tanda
underscore (_) atau titik (.) untuk menggantikan spasi. Misalnya,
Nama barang dapat Anda ganti dengan Nama_barang,
Nama.barang atau NamaBarang.
> Dalam satu workbook, nama range harus bersifat unik (tidak ada
nama range yang sama dalam satu workbook).

1.15.1 Membuat Nama Range Melalui Name Box


Cara termudah untuk membuat nama range adalah melalui Name
Box pada Formula Bar. Walaupun relatif mudah, nama range yang
dibuat melalui Name Box mempunyai beberapa keterbatasan,
misalnya kita tidak dapat membuat nama range yang bersifat
dinamis.
1. Buka workbook Membuat Nama Range.xlsx yang dapat Anda
download di website Solusi Kantor (www.solusi-kantor.com).

Gambar 1.36 Mengetikkan nama range dalam Name Box.

2. dntuk membuat nama range A3:A63 yang berisi data nama


salesman, blok range A3:A63. Arahkan kursor mouse pada Name
Box kemudian ketikkan Salesman. Tekan tombol Enter pada
keyboard.

39
Gambar 1.37 Membuat nama range melalui Name Box

1.15.2 Membuat Nama Range Melalui Kotak Dialog


Create Names form Selection
Kotak dialog Create Names form Selection digunakan untuk membuat
nama pada range yang diseleksi. Nama range yang digunakan adalah
data dalam sel pada baris teratas (top row), baris terbawah (bottom
row), kolom paling kiri (left column) atau kolom paling kanan (right
column) dari range yang diseleksi. Jika data dalam sel yang akan
digunakan sebagai nama range mempunyai spasi, secara otomatis
spasi tersebut akan diganti dengan tanda underscore (_). Dalam
contoh kali ini kita akan membuat nama range Tanggal.
1. Blok range B2:B63 yang berisi data tanggal. Klik tombol Create
from Selection dalam tab Formulas group Defined Names.
Muncul kotak dialog Create Names from Selection. Kotak dialog
Create Names from Selection juga dapat ditampilkan dengan
menekan kombinasi tombol Ctrl+Shift+F3 secara bersamaan.
2. Beri tanda contreng pada pilihan lop row untuk menggunakan
data dalam sel baris paling atas range yang diseleksi sebagai
nama range, yaitu Tanggal. Klik tombol OK.

40
Gambar 1.38 Kotak dialog Create Names from Selection.

1.15.3 Membuat Nama Range Melalui Kotak dialog


New Name
Selain melalui Name Box dan kotak dialog Create Names from
Selection, Anda juga dapat membuat nama range melalui kotak dialog
New Name. Salah satu kelebihan kotak dialog New Name adalah kita
dapat mengatur cakupan (scope) nama range yang akan dibuat.
Kelebihan lainnya adalah adanya pengaturan nama range yang lebih
luas, misalnya kita dapat mengatur apakah nama range yang dibuat
bersifat statis atau dinamis.
Apabila Anda memilih Workbook, maka nama range dapat digunakan
untuk seluruh worksheet. Jika Anda memilih salah satu worksheet
untuk membuat nama range, maka untuk menggunakan nama range
pada worksheet yang berbeda Anda harus menuliskan nama
worksheet diikuti tanda seru (!). Misalnya, Anda membuat nama
range Penjualan pada worksheet Sheetl. Ontuk menghitung jumlah
pada worksheet selain Sheetl, maka formula yang harus Anda
ketikkan adalah = SdM(Sheet1 !Penjualan). Apabila nama worksheet
berisi karakter nonalfabet (seperti spasi), maka Anda harus
menyertakan namanya dalam tanda kutip tunggal ( l), misalnya
Januari'!Penjualan).
1. Tekan kombinasi tombol Ctrl+F3 atau klik tombol Name
Manager dalam tab Fomulas group Defined Names. Muncul
kotak dialog Name Manager.

41
2. dntuk membuat nama range baru, klik tombol New... Muncul
kotak dialog New Name. Anda juga dapat menampilkan kotak
dialog New Name secara langsung dengan cara klik tombol
Define Name dalam tab Formulas group Defined Names.

Gambar 1.39 Kotak dialog New Name.

3. Ketikkan nama range yang akan dibuat pada kotak isian Name:,
misalnya ketikkan Nama_Barang.
4. Pada kotak isian Scope: pilih Workbook, yang berarti nama range
Nama Barang dapat digunakan untuk seluruh worksheet.
5. Ketikkan =Database!$C$3:$C$63 pada kotak isian Refers to:
Dalam contoh tersebut, range yang dibuat adalah range C3:C63
pada worksheet Database. Langkah tersebut juga dapat
dilakukan dengan cara klik tombol pada kotak sebelah kanan
Refers to: Muncul collapse dialog seperti terlihat pada Gambar
1.40.
New Name - Refers to:

-Database! SCS3:SCS631

Gambar 1.40 Collapse dialog New Name — Refers to:

42
6. Blok rance C3:C63 (hasil blok ditandai garis putus-putus). Klik
tombol la-. Muncul kembali kotak dialog New Name kemudian
klik tombol OK.
7. Nama range yang sudah dibuat akan dimasukkan dalam daftar
pada kotak dialog Nama Manager seperti terlihat pada Gambar
1.41. Ontuk membuat nama range yang lain, lakukan dengan
cara yang sama seperti pada langkah 2 sampai 6.

Gambar 1.41 Kotak dialog Name Manager.

1.15.4 Edit Nama Range


Nama range yang sudah Anda buat tidaklah bersifat baku. Anda dapat
mengubah nama range sesuai kebutuhan. Edit nama range dilakukan
melalui kotak dialog Nama Manager.
1. Klik tombol Name Manager dalam tab Fomulas group Defined
Names. Muncul kotak dialog Name Manager.
2. Pilih nama sel atau nama range yang akan diedit kemudian klik
tombol Edit... Muncul kotak dialog Edit Name.

43
Gambar 1.42 Kotak dialog Edit Name.

3. Cara mengedit nama range pada prinsipnya sama dengan cara


membuat nama range. Perbedaannya ialah Anda tidak dapat
mengedit Scope (cakupan) nama range. Lakukan pengeditan
yang diperlukan kemudian klik tombol OK.

1.15.5 Menghapus Nama Range


Apabila Anda sudah tidak membutuhkan nama sel atau nama range,
Anda dapat menghapusnya melalui kotak dialog Name Manager.
Sebelum menghapus nama range, pastikan nama range yang akan
dihapus memang sudah benar-benar tidak digunakan. Jika dalam
workbok masih terdapat formula atau fungsi yang menggunakan
nama range, baik secara langsung ataupun tidak langsung, maka
perhitungan akan menghasilkan error #REF!.
1. Klik tombol Name Manager dalam tab Fomulas group Defined
Names. Muncul kotak dialog Name Manager.
2. Pilih nama sel atau nama range yang akan dihapus kemudian klik
tombol Delete... Muncul kotak pesan seperti terlihat pada
Gambar
1.43.
Microsoft Excel

44
Are you sure you want to delete the name
Tanggal?

Gambar 1.43 Kotak pesan informasi.

3. dntuk menghapus nama range, klik tombol OK. Klik tombol


Cancel untuk membatalkan.

1.15.6 Membuat Nama Range Dinamis


Anda juga dapat membuat nama range yang bersifat dinamis.
Kelebihan nama range dinamis adalah range yang dipilih akan selalu
menyesuaikan dengan data yang baru dimasukkan atau dihapus.
Dalam contoh berikut, kita akan membuat nama range dinamis dser
dan Tabel.
1. Buka file Membuat Nama Range Dinamis.xlsx yang dapat Anda
download di website Solusi Kantor (www.solusi-kantor.com).
2. dntuk membuat nama range Oser klik tombol Define Name
dalam tab Formulas group Defined Names. Muncul kotak dialog
New Name.
3. Ketikkan user pada kotak isian Name: Pilih Workbook pada kotak
isian Scope: Pada kotak isian Refers to: ketikkan formula

2;1). Klik tombol OK. Penjelasan formula pada kotak isian Refers
to: adalah sebagai berikut:
o OFFSET merupakan fungsi yang akan menyalin hasil yang ada
dalam suatu range dengan jumlah baris dan kolom yang
disebutkan jaraknya dari sel acuan.
o TabelBantu!$A$2 merupakan sel acuan (sel A2) yang
dijadikan dasar dalam penggunaan fungsi OFFSET.
0 1 menunjukkan arah baris ke bawah (positiD. Karena nilainya
1, maka sel yang ditunjuk adalah sel 1 baris di bawah sel yang
dijadikan acuan dalam penggunaan fungsi OFFSET.

45
o O merupakan arah kolom. Karena nilainya 0, maka sel yang
ditunjuk terletak dalam kolom yang sama dengan sel yang
dijadikan acuan dalam penggunaan fungsi OFFSET.
o COdNTA(TabelBantu!$A:$A)-2 merupakan tinggi range yang
diwakili jumlah baris pada range dalam kolom A yang tidak
kosong. Karena ada sel yang tidak digunakan dalam range (sel
Al dan A2) maka tinggi range dikurangi 2.
0 1 merupakan lebar range yang diwakili jumlah kolom pada
range.

Gambar 1.44 Membuat nama range User.

4. dntuk membuat nama range Tabel klik tombol Define Name


dalam tab Formulas group Defined Names. Muncul kotak dialog
New Name.
5. Ketikkan Tabel pada kotak isian Name: Pilih Workbook Pada
kotak isian Scope: Pada kotak isian Refers to: ketikkan formula

2;3). Klik tombol OK. Penjelasan formula pada kotak isian Refers
to: adalah sebagai berikut:

46
Gambar 1.45 Membuat nama range Tabel.

o OFFSET merupakan fungsi yang akan menyalin hasil yang ada


dalam suatu range dengan jumlah baris dan kolom yang
disebutkan jaraknya dari sel acuan.
o TabelBantu!$A$2 merupakan sel acuan (sel A2) yang
dijadikan dasar dalam penggunaan fungsi OFFSET.
0 1 menunjukkan arah baris ke bawah (positiD. Karena nilainya
1, maka sel yang ditunjuk adalah sel 1 baris di bawah sel yang
dijadikan acuan dalam penggunaan fungsi OFFSET.
o O merupakan arah kolom. Karena nilainya 0, maka sel yang
ditunjuk terletak dalam kolom yang sama dengan sel yang
dijadikan acuan dalam penggunaan fungsi OFFSET.
o COdNTA(TabelBantu!$A:$A)-2 merupakan tinggi range yang
diwakili jumlah baris pada range dalam kolom A yang tidak
kosong. Karena ada sel yang tidak digunakan dalam range (sel
Al dan A2) maka tinggi range dikurangi 2.
0 3 merupakan lebar range yang diwakili jumlah kolom pada
range. Klik tombol OK.
6. dntuk menguji hasilnya masukkan record data baru ke dalam
tabel. Ketikkan Firman ke dalam sel A7, Firman1234 dalam sel B7
dan Kasir dalam sel C7.

47
7. Ketikkan dser dalam Name Box pada Formula Bar kemudian klik
tombol Enter. Apabila semuanya dijalankan dengan benar, nama
user yang baru dimasukkan akan ikut terseleksi.

Gambar 1.46 Nama user yang baru ikut terseleksi.

8. Ketikkan Tabel dalam Name Box pada Formula Bar kemudian klik
tombol Enter. Jika semuanya dijalankan dengan benar, record
data yang baru dimasukkan akan ikut terseleksi.

Gambar 1.47 Record yang baru dimasukkan ikut terseleksi.

48
1.16 Pengaturan Setting Regional Komputer
Setiap negara mempunyai aturan penggunaan format bilangan, mata
uang, jam dan tanggal sendiri. Aturan pada setiap negara dapat Anda
terapkan melalui pengaturan setting regional komputer. Pengaturan
setting regional komputer juga berpengaruh pada penggunaan tanda
koma (,) dan titik koma (;) sebagai operator pemisah argumen dalam
penulisan formula dan fungsi Excel. dntuk memudahkan dalam
memahami buku ini, sebaiknya Anda menerapkan setting regional
komputer Indonesian (Indonesia), sama dengan setting regional
komputer yang digunakan penulis.
1. dntuk pengguna Windows XP, klik tombol Start. Pilih menu
Control Panel. Muncul jendela Control Panel.

Gambar 1.48 Jendela Control Panel Windows XP.

2. Klik ikon Date, Time, Language, and Regional Options pada


window Control Panel. Muncul jendela Date, Time, Language,
and Regional Options.

49
Gambar 1.49 Jendela Date, Time, L.anguage, and Regional Options

3. Klik ikon Regional and Language Options. Muncul kotak dialog


Regional and Language Options.

Regional and Language Options


Regional
Options Languages Advanced
Standards and formats
This option affects how some programs format numbers.
currencies. dates. and time.
Select an item to match its preferences. or chck Customize to
choose your own formats:
ndn
nesian
Samples
Nurnber

Currency:
Tirne:

Short date: Long date:

Location
To help services provide you with local information. such as news
and weather. select your present location:

Apply

Gambar 1.50 Kotak dialog Regional and L.anguage Options.

4. Pilih tab Regional Options. Pada pilihan Standards and formats,


pilih Indonesian. Pilih Indonesia pada pilihan Location. Klik
tombol OK.

50
5. dntuk pengguna Windows 7, klik tombol Start kemudian pilih
Control Panel. Muncul jendela Control Panel.

Gambar 1.51 Jendela Control Panel Windows 7.

6. Klik Clock, Language, and Region. Muncul jendela Clock,


Language, and Region.

Gambar 1.52 Jendela Clock, L.anguage, and Region.

7. Klik Region and Language. Muncul kotak dialog Region and


Language. Pada kotak isian format pilih Indonesian (Indonesia).
Klik tombol OK.

51
Gambar 1.53 Kotak dialog Region and Language.

52
48

MENAMBAH
INTERAKTIVITAS MACRO

Macro yang Anda buat tentu akan lebih menarik jika dapat
berinteraksi dengan pengguna. Ontuk keperluan tersebut, Anda
dapat membuat kotak pesan, kotak input, kotak dialog atau ActiveX
Control. Pemilihan salah satu model yang digunakan akan sangat
tergantung pada kebutuhan. Macro yang hanya digunakan untuk
membuat worksheet akan lebih tepat jika ditambahkan interaktivitas
menggunakan kotak pesan. Selain lebih mudah, pembuatan kotak
pesan juga tidak memakan banyak waktu. Namun apabila Macro yang
Anda buat membutuhkan kontrol yang tidak tersedia dalam kotak
pesan atau kotak input (misalnya Frame, ComboBox, ListBox), Anda
disarankan untuk membuat kotak dialog menggunakan OserForm.

2.1 Kotak Pesan (Message Box)


Kotak pesan digunakan untuk menampilkan pesan kepada pengguna.
Pesan tersebut dapat berupa pesan kritis, pesan informasi, pesan
peringatan atau pesan pertanyaan. Dengan menggunakan kotak
pesan, Anda dapat memberitahukan kepada pengguna mengenai apa
yang akan dijalankan oleh Macro dan selanjutnya memberikan pilihan
kepada pengguna untuk tetap melanjutkan atau tidak. Contoh lain
penggunaan kotak pesan adalah untuk memberi peringatan kepada
pengguna bahwa terjadi kesalahan dan memberitahukan tindakan
apa yang perlu dilakukan untuk mengatasi kesalahan tersebut.
Anda perlu mengetahui aturan pembuatan kotak pesan sehingga
pesan yang disampaikan dapat dipahami oleh pengguna dengan
gamblang. Apabila pesan yang ingin Anda sampaikan adalah pesan
yang bersifat pertanyaan, akan lebih tepat jika ikon yang digunakan
adalah ikon pertanyaan (vbQuestion). Kode Macro untuk membuat
kotak pesan ditulis dengan format sebagai berikut:

MsgBox( t prompt] , [buttons] , [title] , [helpfile] , [ context] )

> [prompt] merupakan pesan yang akan disampaikan kepada


pengguna. Argumen prompt merupakan argumen yang diperlukan
pada kotak pesan sehingga harus diisi. Panjang pesan maksimal
1024 karakter. Apabila Anda ingin membuat pesan lebih dari 1
baris, pisahkan baris menggunakan kode vbCrLf.
> [buttons] merupakan argumen untuk memilih jenis tombol, memilih
jenis ikon, memilih tombol default dan memilih jenis modal kotak
pesan. Argumen buttons bersifat opsional sehingga dapat diisi
ataupun tidak diisi. Apabila tidak diisi, kotak pesan secara default
hanya menampilkan tombol OK.
Jenis tombol yang dapat ditambahkan pada kotak pesan
menggunakan VBA adalah sebagai berikut:
Jenis tombol Nilai Keterangan
vbOKOnly 0 Tombol OK
vbOKCancel 1 Tombol OK dan Cancel
vbAbortRetryIgnore 2 Tombol Abort, Retry dan Ignore
vbYesNoCancel 3 Tombol Yes, No dan Cancel
vbYesNo 4 Tombol Yes dan No
vbRetryCancel 5 Tombol Retry dan Cancel
Jenis ikon yang dapat dibuat pada kotak pesan menggunakan VBA
adalah sebagai berikut:
Jenis ikon Ikon Nilai Keterangan

54
vbCritical 16 Ikon pesan kritis

vbQuestion 32 Ikon pertanyaan

vbExclamation 48 Ikon peringatan

vblnformation 64 Ikon informasi


Tombol default adalah tombol kotak pesan yang dipilih saat
pengguna menekan tombol Enter pada keyboard. Pilihan tombol
default kotak pesan VBA adalah sebagai berikut:
Tombol default Nilai Keterangan
vbDefaultButton 0 Tombol pertama sebagai default
1
vbDefaultButton2 256 Tombol kedua sebagai default
vbDefaultButton3 512 Tombol ketiga sebagai default
Jenis modal kotak pesan berfungsi untuk mengatur tampilan kotak
pesan, apakah hanya ditampilkan saat Excel aktif atau akan tetap
ditampilkan walaupun Excel tidak aktif. Secara default, kotak
pesan ditampilkan dengan jenis Modal Application. Pilihan jenis
modal kotak pesan VBA adalah sebagai berikut:
Jenis modal Nilai Keterangan
Kotak pesan yang hanya ditampilkan
vbApplicationModal 4096
saat Excel aktif
Kotak pesan ditampilkan tidak hanya
vbSystemModal 16384
saat Excel aktif
> [titlel merupakan judul kotak pesan. Argumen title bersifat opsional
sehingga dapat diisi ataupun tidak diisi. Apabila tidak diisi, secara
default judul kotak pesan adalah Microsoft Excel.
> [helpl dan [contextl merupakan fasilitas bantu VBA yang akan
ditampilkan apabila pengguna menekan tombol FI pada Keyboard.
Argumen help dan context harus digunakan secara bersamaan.

2.1.1 Membuat Kotak Pesan


55
Dalam contoh kali ini kita akan membuat kotak pesan yang
menampilkan informasi biodata penulis. Sesuai dengan tujuannya,
ikon yang ditampilkan kotak pesan yang sesuai ialah ikon informasi
dengan tombol OK.
1. Tekan kombinasi tombol Ctrl+N untuk membuat workbook baru.
Simpan workbook dengan nama Membuat Kotak Pesan.xlsm.
2. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk membuka Visual Basic
Editor.
3. Pada jendela Visual Basic Editor pilih menu Insert > Module.
Ketikkan kode Macro berikut pada window Code Modulel :
Sub KotakPesan( )
MsgBox " Yudhy Wicaksono " & vbCrLf &
"Website: www. solusi—kantor . com" &
vbCrLf & " e—mail:
. com" , vbOKOn1y
+ vblnformation , t' Penulis Buku Ini "

End Sub

4. Kembali ke program utama Excel. Tekan kombinasi tombol


Alt+F8 atau klik tombol Macros dalam tab Developer group Code
untuk menampilkan kotak dialog Macro.

56
Gambar 2.1 Kotak dialog Macro.

5. Pilih Macro KotakPesan kemudian klik tombol Run. Setelah


Macro dijalankan, muncul kotak pesan Penulis Buku Ini.

Gambar 2.2 Tampilan kotak pesan informasi yang dibuat.

2.1.2 Nilai Kotak Pesan


Anda dapat membuat kotak pesan yang ketika direspon (dipilih
tombol tertentu) akan mengembalikan nilai yang digunakan untuk
menentukan kejadian yang akan dilakukan. Misalnya, Anda dapat
membuat kotak pesan untuk memperingatkan kepada pengguna
bahwa Macro yang dijalankan akan menghapus seluruh data dalam
worksheet aktif. Apabila tombol OK diklik, seluruh data akan
terhapus. Namun jika tombol Cancel yang diklik, data tidak jadi
dihapus. Kode Macro untuk membuat kotak pesan yang
mengembalikan nilai ditulis dengan format berikut:

Nilai = MsgBox( t promptl , [buttons] , [title] )

Daftar konstanta dan nilai tombol kotak pesan dapat dilihat pada
tabel. Anda dapat memilih apakah akan menggunakan konstanta atau
nilai untuk merespon tombol yang diklik pengguna.
Konstanta Nilai Tombol yang dipilih
vbOK 1 OK
vbCancel 2 Cancel

57
vbAbort 3 Abort
vbRetry 4 Retry
vblgnore 5 Ignore
vbYes 6 Yes
vbNo 7 No
1. Tekan kombinasi tombol Ctrl+N untuk membuat workbook baru.
Simpan workbook dengan nama Nilai Kotak Pesan.xlsm
2. Ontuk membuka Visual Basic Editor, tekan kombinasi tombol
Alt+F11 pada keyboard atau klik tombol Visual Basic dalam tab
Developer group Code.
3. Pada jendela Visual Basic Editor pilih menu Insert > Module.
Ketikkan kode Macro berikut pada window Code Modulel :
Sub NilaiKotakPesan( )
' Kotak pesan
Hapus = MsgBox( " Macro akan menghapus data "
vbOKCance1 + vbExc1amation + vbDefau1
tButton2 ,
" Hapus Data " )

Apabila tombol OK diklik


If Hapus = vbOK Then
' Menghapus seluruh data dalam worksheet aktif
Cells . ClearContents
' Apabila tombol Cancel diklik
Elself Hapus = vbCance1 Then
' Kotak pesan "Data tidak jadi dihapus "
MsgBox " Data tidak jadi dihapus " ,
vblnformation End If

' Seleksi sel Al


Range ( " Al " ) . Select
End Sub
4. Kembali ke program utama Excel. dntuk menguji hasilnya,
ketikkan sembarang nilai pada sel Al dan C5, misalnya, ketikkan
12 pada sel Al dan 184 pada sel C5.

58
5. Tekan kombinasi tombol Alt+F8 atau klik tombol Macros dalam
tab Developer group Code untuk menampilkan kotak dialog
Macro.
6. Pilih Macro NilaiKotakPesan kemudian klik tombol Run. Setelah
Macro dijalankan, muncul kotak pesan Hapus Data.
Hapus Data

Macro akan menghapus data


OK

Gambar 2.3 Kotak pesan peringatan Hapus Data.

7. Jika tombol OK yang diklik, seluruh data dalam worksheet aktif


akan terhapus, lihat sel Al dan C5. Apabila tombol Cancel yang
diklik, muncul kotak pesan seperti terlihat pada Gambar 2.4. Jika
Anda menekan tombol Enter pada keyboard, maka yang akan
dijalankan adalah tombol Cancel karena yang digunakan sebagai
default adalah tombol kedua.

Gambar 2.4 Data tidakjadi dihapus.

2.2 Kotak Input (Input Box)


59
Kotak input pada dasarnya memiliki kegunaan yang sama dengan
kotak pesan, yaitu untuk mendapatkan nilai dari pengguna.
Perbedaan kotak pesan dan kotak input terletak dari cara yang
dilakukan untuk mendapatkan nilai dari pengguna. Ontuk
mendapatakan nilai dari pengguna, kotak pesan menggunakan
tombol misalnya tombol OK, tombol Cancel atau tombol lain yang
disediakan VBA. Kotak input mendapatkan nilai dari pengguna
setelah pengguna memasukkan nilai pada kotak isian dalam kotak
input.
Seperti halnya dalam membuat kotak pesan, Anda juga perlu
mengetahui aturan penulisan untuk membuat kotak input. Format
kode Macro untuk membuat kotak input adalah sebagai berikut:
InputBox( t prompt , [title] , [default] , [type] )

[prompt] merupakan informasi yang disampaikan kepada


pengguna. Argumen prompt merupakan argumen yang diperlukan
pada kotak input sehingga harus diisi.
[title] merupakan judul kotak input. Argumen title bersifat opsional
sehingga dapat diisi ataupun tidak. Apabila tidak diisi, secara
default judul kotak input adalah Microsoft Excel.
[default] merupakan nilai default pada kotak input. Argumen
default bersifat opsional sehingga dapat diisi ataupun tidak.
[type] merupakan tipe kotak input. Berikut pilihan tipe kotak input
yang disediakan VBA:
Nilai Tipe kotak input
Formula

1 Angka

2 Teks
4 Nilai logika (True atau False)

8 Sel atau range

16 Nilai error

64 Nilai array

60
Pada latihan ini kita akan membuat kotak input berat badan
pengguna. Berat badan yang diisikan pengguna akan ditampilkan
pada kotak pesan serta dimasukkan ke dalam sel Al worksheet aktif.
1. Tekan kombinasi tombol Ctrl+N untuk membuat workbook baru.
Simpan workbook dengan nama Membuat Kotak Input.xlsm.
2. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk membuka Visual Basic
Editor.
3. Pada jendela Visual Basic Editor pilih menu Insert > Module.
Ketikkan kode Macro berikut pada window Code Modulel :
Sub Kotaklnput( )
Kotak input
Berat = InputBox( " Berapa berat badan Anda? t'
& vbCrLf & " Dalam kg" , " Berat Badan 't , 50)
0
' Jika kotak input kosong atau tombol Cancel diklik
If Berat =" Boolean " Then
' Keluar dari Sub Prosedure
Exit Sub
End If

' Menampilkan kotak pesan Berat Badan


I
MsgBox " Berat badan Anda adalah " & Berat &
" kilogram" , vbOKOn1y, " Berat Badan "

' Memasukkan nil ai kotak input ke dalam sel


Al
Range ( " Al " ) . Value = Berat
End Sub

4. Kembali ke program utama Excel. Tekan kombinasi tombol


Alt+F8 atau klik tombol Macros dalam tab Developer group Code
untuk menampilkan kotak dialog Macro.
5. Pilih Macro Kotaklnput kemudian klik tombol Run. Setelah
Macro dijalankan, muncul kotak input Berat Badan.

61
Gambar 2.5 Kotak input Berat Badan.

6. Secara default nilai kotak input adalah 50. Anda dapat


mengubah nilai tersebut sesuai keinginan. Misalnya berat badan
Anda 65 kilogram, ketikkan nilai tersebut pada
kotak input. Klik tombol OK. Data yang Anda
masukkan kemudian ditampilkan pada kotak
pesan Berat Badan.
Berat Badan

Berat badan Anda adalah 65


kilogram
OK

Gambar 2.6 Kotak pesan Berat Badan.

7. Klik tombol OK. Selain ditampilkan kotak


pesan, data berat badan juga dimasukkan ke
dalam sel Al worksheet aktif.

2.3 Built In Kotak Dialog


Salah satu kemudahan dalam menggunakan Macro
Excel adalah tersedianya banyak built in kotak
dialog (kotak dialog siap pakai). Misalnya,
Anda dapat menggunakan kotak dialog Format
Cells: Font Properties untuk mengatur format
font. Anda dapat memanfaatkan fasilitas Auto
List Members untuk menampilkan daftar built in
kotak dialog.

62
Sub BuiltInKotakDiaIog()

' Menggunakan built in kotak dialog


Format Cells: Font Properties
Applicat ion. Dialogs ( l _Defau
End Sub

KIDialogFontPrope
rties
xlDialogFormatAuto
fÄI
XIDialogFormatChart
Gambar xlDialogFormatCharW
pe
2.7 Daftar
built in kotak
dialog.

1. Buka file Built In Kotak Dialog.xlsm yang dapat


Anda download di website Solusi Kantor
(www.solusi-kantor.com).
2. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk membuka Visual Basic
Editor.
3. Pada jendela Visual Basic Editor, pilih menu Insert > Module.
Ketikkan kode Macro berikut pada window Code Modulel :
Sub BuiltInKotakDia10g( )
Built in kotak dialog Format Cells: Font
Properties Application . Dialogs
( xlDia10gFontProperties ) . Show

End Sub

4. Kembali ke program utama Excel. Blok range A3:DIO. Tekan


kombinasi Alt+F8 atau klik tombol Macros dalam tab Developer
group Code untuk menampilkan kotak dialog Macro.
5. Pilih Macro BuiltInKotakDiaIog kemudian klik tombol Run.
Muncul kotak dialog Format Cells: Font Properties.

63
Gambar 2.8 Kotak dialog Format Cells: Font Properties.

6. Pada daftar pilihan Eont: pilih Tahoma. Pada daftar pilihan Font
style: pilih Italic. Pilih 10 pada daftar pilihan Size: Klik tombol OK.
Format font range A3:DIO yang terseleksi kemudian berubah
menyesuaikan hasil pengaturan melalui kotak dialog.

2.4 UserForm
OserForm merupakan tempat penampung objek kontrol. Anda dapat
menggunakan OserForm untuk membuat kotak dialog. Ontuk
menambahkan OserForm, pilih menu Insert > dserForm pada Visual
Basic Editor.

64
Gambar 2.9 Tampilan UserForm.

Pengaturan OserForm secara visual, misalnya mengubah ukuran


OserForm, menambahkan kontrol, mengatur posisi kontrol dan
pengaturan lainnya, dapat dilakukan melalui window Object.
Pengaturan yang lebih detail dilakukan melalui window Properties.

2.4.1 ToolBox
Toolbox merupakan tempat kontrol yang dapat dipilih untuk
kemudian ditambahkan ke dalam OserForm. Ontuk menampilkan
window Toolbox klik tombol Toolbox (E) pada toolbar Standar, atau
pilih menu utama View > Toolbox.
Toolbox

Controls

A abl

Gambar 2.10 Tampilan Toolbox.

Berikut nama kontrol beserta fungsi kontrol yang secara default ada
dalam Toolbox:
Kontrol Gambar Fungsi
dntuk memilih objek kontrol pada
Toolbox, menempatkan kontrol pada
Select Objects dserForm, mengubah ukuran kontrol
dan memindah posisi kontrol dalam
OserForm.
Label dntuk membuat teks berupa informasi
singkat kepada pengguna. Teks yang
ditampilkan tidak dapat diubah
pengguna pada saat dserForm

65
dijalankan.
dntuk membuat kotak isian pada
dserForm. Pengguna dapat
TextBox
memasukkan nilai (dapat berupa angka
ataupun teks) ke dalam kotak isian.
dntuk menampilkan daftar pilihan yang
dikelompokkan dalam TextBox.
Pengguna juga dapat mengetik
ComboBox
pilihannya dalam ComboBox, namun hal
tersebut tergantung pada style yang
digunakan.
dntuk menampilkan pilihan yang
dikelompokkan dalam sebuah daftar
ListBox
pilihan, yang dapat digeser secara
vertikal.
dntuk menampilkan beberapa pilihan
CheckBox
yang dapat dipilih lebih dari satu.
dntuk menampilkan beberapa pilihan
OptionButton yang hanya dapat dipilih salah satu
dalam suatu dserForm atau Frame.
(Jntuk membuat pilihan tombol on atau
ToggleButton
off pada UserForm.
dntuk mengelompokkan kontrol yang
Frame
mempunyai fungsi sama.
dntuk membuat tombol yang akan
CommandButton menjalankan suatu perintah apabila
tombol tersebut ditekan.
dntuk membuat beberapa kotak dialog
TabStrip
pada dserForm.
dntuk membuat satu pengelompokan
MultiPage
kontrol atau lebih dalam satu tampilan.
(Jntuk melakukan pemasukkan data
ScrollBar
secara analog, yaitu dengan melakukan
66
penggeseran pada bidang ScrollBar
ataupun penekanan pada tombol (atas,
bawah, kiri atau kanan).
dntuk menunjukkan nilai yang berurutan
SpinButton
dengan range yang konsisten.
dntuk menampilkan gambar dalam
format bitmaps (*.bmp, *.dib), GIF
Image
(*.gif), JPEG (*.jpeg), Metafiles (*.wmf,
*.emf) dan Icons (*.ico, *.cur).
dntuk mengedit alamat reference pada
RefEdit
Microsoft Excel.
2.4.2 Menambahkan Kontrol
Sebelum menambahkan kontrol, Anda tentu harus menyiapkan
OserForm yang akan dijadikan sebagai tempat penampung kontrol
terlebih dahulu.
1. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk menjalankan Visual Basic
Editor.
2. Pilih menu Insert > (IserForm untuk menambahkan OserForm.
Ketika menambahkan OserForm, secara otomatis Toolbox akan
ditampilkan. Jika belum ditampilkan, pilih menu Yiew > Toolbox.
Toolbox

Controls

Gambar 2.11 Memilih kontrol yang akan ditambahkan.

3. Klik kontrol yang akan ditambahkan ke dalam OserForm, dalam


contoh kali ini pilih TextBox. Klik mouse pada bidang OserForm
untuk menambahkan kontrol ke dalam OserForm.

67
Gambar 2.12 Menambahkan kontrol ke dalam UserForm.

2.4.3 Mengubah Ukuran dan Posisi Kontrol


Saat pertama kali dibuat, ukuran dan posisi kontrol mungkin tidak
sesuai dengan yang kita harapkan. Okuran dan posisi kontrol dapat
diubah menggunakan mouse, melalui window Properties atau melalui
kode Macro. Berikut langkah-langkah untuk mengubah ukuran dan
posisi kontrol menggunakan mouse:
1. Klik kontrol yang akan diubah ukurannya. Arahkan pointer pada
titik yang terdapat di bagian tengah garis kontrol. Ketika mouse
siap digunakan untuk mengubah lebar kontrol bentuk kursor
mouse akan menjadi 49. Mouse yang siap digunakan untuk
mengubah tinggi kontrol bentuk kursornya akan berubah
menjadi t.
2. Klik dan tahan mouse saat siap digunakan untuk mengubah
ukuran kontrol. Tarik titik ke bagian dalam untuk memperkecil
ukuran kontrol atau tarik ke bagian luar untuk memperbesar
ukuran kontrol.
UserForm1

68
Gambar 2.13 Mengubah ukuran kontrol menggunakan mouse.

3. dntuk mengubah posisi kontrol, klik dan tahan mouse pada


bidang kontrol kemudian tarik pada posisi yang diinginkan. Jika
posisi sudah sesuai, lepaskan tombol mouse.
UserForm1

Gambar 2.14 Mengubah posisi kontrol menggunakan mouse.

2.4.4 Menyalin Kontrol


Ontuk menambahkan banyak kontrol yang sama, Anda dapat
melakukannya secara cepat dengan cara menyalin kontrol. Teknik
menyalin kontrol dapat dilakukan dengan dua cara, yaitu dengan
teknik copy paste dan teknik drag and drop.
1. Untuk menyalin kontrol dengan teknik copu paste pilih kontrol
yang akan disalin menggunakan klik mouse.

69
2. Tekan kombinasi tombol CtrI+C atau pilih menu Edit Çopy. Untuk
menyalin kontrol, tekan kombinasi tombol CtrI+V atau pilih
menu Edit Paste.

Gambar 2.15 Menyalin kontrol dengan teknik copy paste.

3. Untuk menyalin kontrol dengan teknik drag and drop tekan dan
tahan tombol Ctrl pada keyboard. Klik dan tahan tombol kiri
mouse kemudian tarik mouse pada posisi yang diinginkan. Saat
menyalin kontrol, pointer mouse akan menampilkan tanda Plus
(+). Jika posisi kontrol sudah sesuai, lepaskan tombol mouse.
UserFcrm1

Gambar 2.16 Menyalin kontrol dengan teknik drag and drop.

2.4.5 Menghapus Kontrol


Kontrol yang sudah tidak digunakan sebaiknya Anda hapus agar tidak
membingungkan pengguna. Pilih kontrol yang akan dihapus
kemudian tekan tombol Delete pada keyboard atau pilih menu Edit
70
Delete. Anda juga dapat menghapus kontrol melalui menu klik kanan.
Klik kanan kontrol yang akan dihapus kemudian pilih menu Delete.

Gambar 2.17 Menghapus kontrol melalui menu klik kanan.

2.4.6 Membuat Kotak Dialog


Pada pembahasan kali ini kita akan membuat kotak dialog yang
digunakan untuk membuat worksheet baru pada workbook aktif.
Melalui kotak dialog, kita dapat memilih akan membuat worksheet
dengan nama default atau dengan nama yang kita tentukan.
1. Tekan kombinasi tombol Ctrl+N untuk membuat workbook baru.
Simpan workbook dengan nama Membuat Kotak Dialog.xlsm.
2. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk membuka Visual Basic
Editor.
3. Pada jendela Visual Basic Editor, pilih menu utama Insert >
userForm. Atur properti OserForm melalui window Properties.
4. Pilih menu utama Yiew > Properties Window, atau tekan tombol
F4. Obah properti dserForm sebagai berikut: Name
BuatWorksheet, Caption = Buat Worksheet, Height = 126, Width
= 201.
Properties - BuatWorksheet
BuatWorksheet UserForm
Alphabetic I Categorized I

71
(Name) BuatWorksheet

Gambar 2.18 Mengubah properti UserForm.

5. Pilih kontrol Frame pada Toolbox kemudian klik mouse pada


bidang dserForm. Langkah tersebut dilakukan untuk menambah
kontrol Frame pada OserForm. Obah properti kontrol Frame
menjadi Name = frmNama, Caption = Nama worksheet, Height =
60, Left = 6, Top = 6, Width = 180.

Gambar 2.19 Menambahkan kontrol Frame.

6. Dengan cara yang sama, tambahkan kontrol lainnya pada


dserForm, sehingga tampilan dserForm menjadi seperti pada
Gambar 2.20.

72
Buat Worksheet
• .Nama

I-Ibah

Batal

Gambar 2.20 Tampilan UserForm.

7. Pengaturan setting properti pada OserForm dan objek kontrol


selengkapnya sebagai berikut:
Objek Setting Properti
Name = BuatWorksheet, Caption = Buat
dserForm
Worksheet, Height = 126, Width = 201
Name = frmNama, Caption = Nama
Frame worksheet, Height = 60, Left = 6, Top = 6,
Width = 180
Name —— optDefault, Caption = Default, Height =
OptionButton
18, Left = 6, Top = 6, Width = 45, Value = True
Name = optdbah, Caption = dbah:, Height = 18, Left
OptionButton
= 6, Top = 30, Width = 45
Name = txtNama, Locked = True, Height = 18, Left =
TextBox
54, Top = 30, Width = 120
Name — cmdOK, Caption = OK, Height = 24, Left =
CommandButton
132, Top = 72, Width = 54
Name = cmdBatal, Caption = Batal, Height = 24,
CommandButton
Left = 72, Top = 72, Width = 54
8. dntuk mementukan urutan pilihan dari satu kontrol ke kontrol
lain menggunakan tombol Tab pada keyboard (Tab Order), klik
kanan bidang OserForm kemudian pilih menu Tab Order.

73
Gambar 2.21 Memilih menu klik kanan Tab Order.

9. Muncul kotak dialog Tab Order. Ontuk mementukan urutan


kontrol, klik tombol Move up atau Move Down. Atur urutan
objek hingga terlihat seperti Gambar 2.22. Jika sudah, klik
tombol OK.
Tab Order

T ab Order

frmNama
OK
cmdOK
cmdB atal
Cancel

Move Up

Move
Down

Gambar 2.22 Tab Order UserForm.

10. dntuk mementukan urutan Tab Order pada frame Nama


worksheet, klik kanan bidang frame Nama worksheet kemudian
pilih menu Tab Order. Muncul kotak dialog Tab Order.
11. Atur urutan objek pada frame Nama worksheet hingga terlihat
seperti Gambar 2.23. Jika sudah, klik tombol OK.
Tab Order

74
Lab Order

o tDefault
optLIbah
OK
txtNama
Cancel

Move up

Move
Down

Gambar 2.23 Tab Order frame Nama worksheet.

12. Pilih menu View > Code atau tekan F7. Ketikkan kode Macro
sebagai berikut:
i
' Kode saat opsi Default dipilih
Private Sub optDefau1 t_Click( )

TextBox Nama terkunci


txtNama . Locked = True

End Sub
Sheets . Add
' Kode saat opsi Ubah dipilih
Private Sub optUbah_C1ick( keadaan
) terpilih
True Then
TextBox Nama tidak terkunci
Prosedur
txtNama. Locked = False
keadaan terpilih
End Sub True Then yang ditulis
bel um ada
o
' Kode apabila tombol ( OK ditekan
txtNama . Text) Is Nothing
Private Sub cmdOK_C1ick(
Then) worksheet txtNama . Text
kotak dialog
' Lanjutkan Macro jika terjadi error
On Error Resume Next
kotak dialog
Membuat worksheet baru
Set NewSheet = Application. nama worksheet sudah
ada worksheet sudah ada " ,
' Jika opsi Default dalam vblnformation
If optDefau1t . Value =
' Keluar dari Sub
Exit Sub
' Jika opsi Ubah dalam
El self optUbah . Value
=
' Jika nama
worksheet
75
If Application .
Sheets ' Memberi
nama
NewSheet . Name =
' Menonaktifkan
Unload Me
Else
' Menonaktifkan
Unload Me
Kotak pesan jika
MsgBox " Nama vbOKOn1y +
End If End If

End Sub

' Kode saat tombol Bata 1


Private Sub cmdBata1_C1ick(

I
' Menonaktifkan kotak
Unload Me

End Sub

13. Agar kotak dialog dapat dijalankan melalui Excel, tambahkan


modul dengan memilih menu utama Insert > Module. Ketikkan
kode Macro pada Modulel sebagai berikut:
Sub LoadBuatWorksheet ( )
' Mengaktifkan kotak
dialog Load BuatWorksheet

o
' Menampilkan kotak
dialog BuatWorksheet .
Show

End Sub

14. Kembali ke program utama Excel. Tekan kombinasi tombol


Alt+F8 atau klik tombol Macros dalam tab Developer group Code
untuk menampilkan kotak dialog Macro.
15. Pilih Macro LoadBuatWorksheet kemudian klik tombol Run.
Muncul kotak dialog Buat Worksheet.
16. Pilih opsi dbah untuk membuat worksheet baru dengan nama
yang kita tentukan. Ketikkan nama worksheet pada kotak isian
yang tersedia kemudian klik tombol OK.

76
Gambar 2.24 Kotak dialog Buat Worksheet.

17. Jika nama worksheet sudah ada, nama workshet secara default
mempunyai format SheetN dan muncul kotak pesan seperti
terlihat pada Gambar 2.25.

Gambar 2.25 Nama worksheet sudah ada.

2.4.7 Ekspor Kotak Dialog


Anda dapat mengekspor kotak dialog (dserForm) yang telah dibuat.
Kotak dialog tersebut kemudian dapat Anda gunakan kembali saat
dibutuhkan untuk proyek Anda yang lain. File yang digunakan dalam
pembahasan kali ini adalah file hasil latihan sebelumnya, Membuat
Kotak Dialog.xlsm.
1. Buka file Membuat kotak dialog.xlsm yang dapat Anda download
di website Solusi Kantor (www.solusi-kantor.com).
2. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk membuka Visual Basic
Editor.
77
3. Pada Project Explorer klik kanan dserForm BuatWorksheet.
Muncul daftar menu seperti terlihat pada Gambar 2.26.

Gambar 2.26 Tampilan menu klik kanan.

3. Pilih menu Export File... Muncul kotak dialog Export File seperti
terlihat pada Gambar 2.27.

78
Gambar 2.27 Kotak dialog Export File.

4. Pastikan pilihan pada kotak combo Saves of Wpe: adalah Form


Files (*.frm). Ketikkan nama file pada kotak isian File name: Jika
sudah, klik tombol Save.

2.4.8 Impor Kotak Dialog


Setelah Anda mengekspor kotak dialog, Anda dapat menggunakan
kotak dialog tersebut untuk digunakan pada proyek (workbook) yang
lain, dengan cara mengimpor file kotak dialog.
1. Tekan kombinasi tombol Ctrl+N untuk membuat workbook baru.
Simpan workbook dengan nama Impor Kotak Dialog.xlsm.
2. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk membuka Visual Basic
Editor.
3. Klik kanan pada sembarang objek dalam Project Explorer.
Muncul daftar menu seperti terlihat pada Gambar 2.26.
4. Pilih menu Import File... Muncul kotak dialog Import File. Pilih
file BuatWorksheet.frm hasil ekspor.

Gambar 2.28 Kotak dialog Import File.

5. Apabila impor kotak dialog berhasil, pada Project Explorer


sekarang terdapat OserForm BuatWorksheet.
79
Gambar 2.29 Impor kotak dialog berhasil.

6. Agar kotak dialog dapat dijalankan melalui Excel, tambahkan


modul dengan memilih menu utama Insert > Module. Ketikkan
kode Macro pada Modulel sebagai berikut:
Sub LoadBuatWorksheet ( )
' Mengaktifkan kotak
dialog Load BuatWorksheet

' Menampilkan kotak


dialog
BuatWorksheet . Show
End Sub

7. Kembali ke program utama Excel. Tekan kombinasi tombol


Alt+F8 atau klik tombol Macros dalam tab Developer group Code
untuk menampilkan kotak dialog Macro.

8. Pilih Macro LoadBuatWorksheet kemudian klik tombol Run. Jika


semuanya dijalankan dengan benar, muncul kotak dialog Buat
Worksheet.

2.5 ActiveX Controls


ActiveX Controls merupakan kumpulan kontrol yang ditempatkan
pada worksheet untuk menambah interaktivitas Macro. ActiveX
Control pada dasarnya mempunyai fungsi yang sama dengan kontrol
80
dalam Toolbox Visual Basic Editor. Perbedaannya adalah kontrol
dalam ActiveX Control ditempatkan pada worksheet, sedangkan
kontrol dalam Toolbox ditempatkan pada OserForm. Perbedaan
penempatan kontrol akan sangat terasa ketika Anda bekerja dengan
lebih dari satu workbook dalam waktu bersamaan. Ketika
mengunakan kontrol yang ditempatkan dalam OserForm, secara
default Anda tidak dapat membuka workbook yang lain dalam waktu
bersamaan. Seluruh kontrol standar dalam ActiveX Controls pada
prinsipnya sama dengan kontrol yang ditempatkan pada OserForm.
Pengaturan ActiveX Controls dilakukan melalui kontrol dalam tab
Developer group Controls.

Gambar 2.30 Tab Developer group Controls.


Kontrol Gambar Fungsi

dntuk menambahkan ActiveX Controls ke


Insert
dalam worksheet.

dntuk memilih kontrol yang sudah


ditempatkan dalam worksheet, mengubah
Design Mode
ukuran kontrol, memindah posisi kontrol
dan mengubah properti kontrol.
dntuk menampilkan window
Properties Properties, untuk mengatur properti
kontrol yang sedang aktif.
dntuk menampilkan kode Macro pada
View Code kontrol yang sedang aktif, melalui window
Code.
2.5.1 Pengaturan Keamanan ActiveX Controls
Seperti halnya Macro, ActiveX Control juga dapat disalahgunakan
pengguna yang tidak bertanggung jawab untuk melakukan tindakan

81
yang merugikan. Ontuk mengatasi masalah tersebut, Excel
menyediakan pilihan pengaturan keamanan ActiveX Controls.
1. Klik tombol Macro Security dalam tab Developer group Code.
Muncul kotak dialog Trust Center.

Gambar 2.31 Kotak dialog Trust Center.

2. Pilih opsi ActiveX Settings. Pilih salah satu dari beberapa opsi
yang disediakan sebagai berikut:
o Disable all controls without notification. Apabila opsi ini
dipilih, ActiveX Controls dalam workbook tidak akan
diaktifkan.
Prompt me before enabling unsafe for Initialization (OFI)
controls with additional restrictions and Safe for Initialization
(SFI) controls with minimal restrictions dan Promt me before
enabling all controls with minimal restrictions. Apabila opsi ini
dipilih, Excel akan menampilkan peringatan dan
menonaktifkan ActiveX Controls ketika workbook yang
mengandung ActiveX Controls dibuka. Diaktifkan atau
tidaknya ActiveX Controls tergantung pada pilihan Anda.
o Enabled all controls without restrictions and without
prompting (not recommended; potentially dangerous
controls can run). Apabila opsi ini dipilih, ActiveX Controls
82
dalam workbook akan selalu diaktifkan. Opsi ini tidak
direkomendasikan karena berpotensi menimbulkan kerugian.
Safe mode (helps limit the control's access to your computer).
Opsi ini digunakan untuk membatasi akses ActiveX Controls
pada komputer, misalnya membatasi ActiveX Controls untuk
mengubah registry sistem operasi. Beri tanda contreng pada
pilihan ini untuk mengal<tifl<an pengaturan safe mode.

2.5.2 Menambahkan Kontrol


Anda dapat menambahkan ActiveX Control melalui tombol Insert
dalam tab Developer group Controls. Dalam contoh kali ini kita akan
menambahkan kontrol ListBox.
1. Klik tombol Insert dalam tab Developer group Controls. Muncul
tampilan seperti terlihat pada Gambar 2.32.

Gambar 2.32 Memilih kontrol yang akan ditambahkan.

2. Klik kontrol List Box (ActiveX Controls). Klik mouse pada bidang
worksheet untuk menambahkan kontrol ke dalam worksheet.

83
Gambar 2.33 Menambahkan kontrol ListBox.

Okuran dan posisi kontrol dapat diubah menggunakan mouse, kotak


dialog Format Control, window Properties atau menggunakan kode
Macro. Ontuk mengubah ukuran dan posisi kontrol menggunakan
mouse, pastikan tombol Design Mode dalam keadaan aktif. Setelah
tombol Design Mode aktif, Anda baru dapat menyeleksi kontrol yang
akan diubah ukuran atau posisinya. Cara megubah ukuran dan posisi
ActiveX Control pada prinsipnya sama dengan cara mengubah ukuran
dan posisi kontrol pada OserForm.

2.5.3 Kotak Dialog Format Control


Kotak dialog Forrnat Control merupakan kotak dialog untuk
melakukan pengaturan berbagai hal yang berkaitan dengan ActiveX
Controls. Berikut pengaturan ActiveX Controls melalui kotak dialog
Format Control.
1. Klik kanan kontrol kemudian pilih menu Eormat Control...
Muncul kotak dialog Format Control. Pilih tab Size untuk
mengatur ukuran kontrol.

84
Gambar 2.34 Kotak dialog Format Control - tab Size.

o Ketikkan tinggi kontrol yang Anda inginkan pada kotak isian


Height: pada pilihan Size and rotate. Anda juga dapat
menentukan tinggi kontrol berdasarkan persentase ukuran
kontrol saat diubah melalui kotak isian Height: pada pilihan
Scale.
o Ontuk menentukan lebar kontrol, ketikkan lebar kontrol pada
kotak isian Width: pada pilihan Size and rotate. Anda juga
dapat menentukan lebar kontrol berdasarkan persentase
lebar kontrol saat diubah melalui kotak isian Width: pada
pilihan Scale.
o Agar perubahan ukuran kontrol selalu proporsional, beri
tanda contreng pada pilihan Lock Aspect ratio. Setelah Anda
melakukan pengaturan tersebut, Anda selanjutnya hanya
tinggal mengubah tinggi atau lebarnya saja. Jika Anda
mengubah tinggi, maka lebarnya akan menyesuaikan dengan
ukuran yang proporsional.
2. Klik tab Protection untuk mengatur apakah kontrol dapat
dimodifikasi atau tidak. Pengaturan baru aktif saat worksheet
dalam keadaan terproteksi. Beri tanda contreng pada pilihan
Locked agar kontrol tidak dapat dimodifikasi pengguna.

85
Gambar 2.35 Kotak dialog Format Control - tab Protection.

3. Klik tab Properties untuk melakukan pengaturan apakah kontrol


akan ikut menyesuaikan jika ada perubahan range yang
ditempati kontrol.

Gambar 2.36 Kotak dialog Format Control - tab Properties.

o Move and ±ize with cells digunakan untuk mengatur agar


kontrol ikut berpindah dan berubah ukurannya menyesuaikan
perubahan range yang ditempati.

86
o Move but don't size with cells digunakan untuk mengatur
agar kontrol ikut berpindah menyesuaikan perubahan range
yang ditempati, namun ukurannya tidak berubah.
o Don't move or size with cells digunakan untuk mengatur agar
kontrol tidak ikut berpindah dan tidak berubah ukurannya
ketika ada perubahan range yang ditempati.
o Ontuk mengatur agar kontrol tidak ikut tercetak, hilangkan
tanda contreng pada pilihan erint object.
4. Klik tab Web atau All Text (Excel 2010) untuk menambahkan teks
alternatif pada web browser. Teks alternatif berfungsi untuk
membantu mesin pencari menemukan kontrol dalam workbook
yang disimpan secara online di internet. Ketikkan teks alternatif
yang Anda inginkan pada kotak isian yang tersedia.

Gambar 2.37 Kotak dialog Format Control — tab Web/All Text.

2.5.4 Memasukkan Nilai SpinButton ke TextBox


Contoh penerapan ActiveX Control berikut digunakan untuk
memasukkan nilai SpinButton ke dalam TextBox. Anda tidak dapat
memasukkan nilai langsung ke dalam TextBox karena properti
Enabled diatur ke nilai False.

87
1. Tekan kombinasi tombol Ctrl+N untuk membuat workbook baru.
Simpan workbook dengan nama Memasukkan Nilai SpinButton
ke TextBox.xIsm.
2. Tambahkan Text Box dan Spin Button ke dalam worksheet
Sheetl. dbah serta atur posisi kontrol seperti terlihat pada
Gambar 2.38.

8
9
10

12
Gambar 2.38 Menambahkan Text Box dan Spin Button.

3. Pengaturan properti masing-masing kontrol dapat dilihat pada


tabel berikut:
Objek Setting Properti
SpinButton Name = spinNilai, Height = 18, Max = 100, Min = 0,
SmallChange = 1, Width = 15
TextBox Name = txtNilai, BackColor =
(kuning), Enabled = False, Height = 18, TextAlign =
3fmTextAlignRight, Width = 90
4. Tekan kombinasi tombol Alt+F11 atau klik tombol Visual Basic
dalam tab Developer group Code untuk membuka Visual Basic
Editor.

5. Pilih objek Sheetl (Sheetl) dalam Project Explorer. Tekan F7 pada


keyboard atau pilih menu yew > Code untuk menampilkan
window Code. Ketikkan kode Macro sebagai berikut:
Private Sub spinNi1ai_Change( )

' TextBox diisi nil ai


SpinButton txtNi1ai . Value =
spinNi1ai . Value

End Sub

88
6. Kembali ke program utama Excel. Jika semuanya dilakukan
dengan benar, Anda tidak dapat memasukkan nilai secara
langsung ke dalam TextBox. Anda hanya dapat memasukkan
nilai ke dalam Text Box melalui Spin Button.

B c D

1
2
3
4
5
Gambar 2.39 Memasukkan nilai Spin Button ke dalam Text Box.

2.6 Form Control dan Shape


Selain menggunakan ActiveX Control, Anda juga dapat menjalankan
Macro melalui objek yang ditempatkan dalam worksheet
menggunakan Form Control atau Shape (kurva terbuka ataupun kurva
tertutup). Excel menyediakan banyak bentuk Shape menarik yang
dapat Anda pilih sesuai kebutuhan.
1. Tekan kombinasi tombol Ctrl+N untuk membuat workbook baru.
Simpan workbook dengan nama Form Control dan Shape.xlsm.
2. Ontuk membuka Visual Basic Editor, tekan kombinasi tombol
Alt+F11 pada keyboard atau klik tombol Visual Basic dalam tab
Developer group Code.
3. Pada jendela Visual Basic Editor pilih menu Insert > Module.
Ketikkan kode Macro berikut pada window Code Modulel :

Sub HapusData( )

89
' Menghapus seluruh data dalam worksheet
aktif Cells . ClearContents

End Sub
4. Kembali ke program utama Excel. Ontuk menambahkan Form
Control, klik tombol Insert dalam tab Developer group Controls.

Gambar 2.40 Memilih kontrol yang akan ditambahkan.

5. Pilih salah satu kontrol yang akan ditambahkan, misalnya klik


Button (Form Control). Ontuk menambahkan kontrol, klik mouse
pada bidang worksheet. Setelah kontrol Button ditambahkan,
muncul kotak dialog Assign Macro. Kotak dialog tersebut
digunakan untuk mengaitkan kontrol Button dengan Macro. Pilih
Macro HapusData kemudian klik tombol OK.

Gambar 2.41 Kotak dialog Assign Macro.

90
6. Ontuk mengubah teks klik kanan Button kemudian pilih menu
Edit Text. Mode edit teks kemudian aktif. Ketikkan Hapus Data.
Jika sudah, klik mouse di luar bidang Button.

Gambar 2.42 Mengubah teks Button.

7. dbah ukuran dan posisi Button sesuai keinginan. Ontuk menguji


hasilnya, ketikkan sembarang nilai pada sel Al dan C5, misalnya,
ketikkan 12 pada sel Al dan 184 pada sel C5. Klik tombol Hapus
Data. Seluruh data dalam worksheet aktif akan terhapus, lihat
sel Al dan C5.
8. Ontuk menambahkan Shape, klik tombol Shapes dalam tab
Insert group Illustrations.

Gambar 2.43 Memilih kontrol yang akan ditambahkan.

9. Pilih salah satu Shape yang akan ditambahkan, misalnya klik


Rounded Rectangle. Ontuk menambahkan Shape, klik mouse
pada bidang worksheet.

91
10. Ontuk mengaitkan Macro, klik kanan Shape kemudian pilih
menu Assign Macro... Muncul kotak dialog Assign Macro. Pilih
Macro HapusData kemudian klik tombol OK.
11. Ontuk mengubah teks klik kanan Shape kemudian pilih menu
Edit Text. Mode edit teks kemudian aktif. Ketikkan Hapus Data.
Kliktombol Center dalam tab Home group Alignment. Jika sudah,
klik mouse di luar bidang Shape.
12. Obah ukuran dan posisi Shape sesuai keinginan. Ontuk menguji
hasilnya, ketikkan sembarang nilai pada sel Al dan C5, misalnya,
ketikkan 12 pada sel Al dan 184 pada sel C5. Klik tombol (Shape)
Hapus Data. Seluruh data dalam worksheet aktif akan terhapus,
lihat sel Al dan C5.

Gambar 2.44 Form Control dan Shape.

92
88

MENYIAPKAN
WORKSHEET
APLIKASI

Aplikasi penjualan mempunyai 12 buah worksheet yaitu Menu0tama,


TabelBantu, DatabaseBarang, DatabasePemasok, DatabasePelanggan,
HeaderPembelian, DetailPembelian, HeaderPenjualan,
DetailPenjualan, PembayaranHutang, PenerimaanPiutang dan Cetak.
Sebuah workbook baru secara default hanya memiliki 3 worksheet,
sehingga Anda perlu menyisipkan 9 worksheet tambahan.
1. Jalankan program Microsoft Excel. Tekan kombinasi tombol
Ctrl+N pada keyboard untuk membuat workbook baru. Simpan
workbook dengan nama Aplikasi Penjualan.xlsm.
2. Ontuk menambahkan worksheet, klik tombol Insert Worksheet
yang terletak di bagian kanan tab worksheet. Dengan cara
yang sama, tambahkan delapan buah worksheet lagi sehingga
workbook mempunyai total 12 buah worksheet.

2
4
2
5
14
Sheetl Sheet2 Sheet3
Read
y
Gambar 3.1 Menambahkan worksheet ke dalam workbook.

3. Obah nama worksheet paling kiri menjadi Menu0tama. Klik


kanan tab nama worksheet paling kiri kemudian pilih menu
Rename.
Ketikkan Menudtama pada tab worksheet yang sudah terseleksi.
Tekan tombol Enter.
15 Insert...
16
17
18
19 View Code
20 Erotect Sheet...
21 Tab Color
22
Hide
23
24 Unhide..
25
S Select All Sheets Sheet4 Sheet5
Gambar 3.2 Mengubah nama worksheet.

4. Dengan cara yang sama, ubah nama seluruh worksheet dalam


workbook, secara urut dari kiri ke kanan menjadi TabelBantu,
DatabaseBarang, DatabasePemasok, DatabasePelanggan,
HeaderPembelian, DetailPembelian, HeaderPenjualan,
DetailPenjualan, PembayaranHutang, PenerimaanPiutang dan
Cetak.

Gambar 3.3 Mengubah nama seluruh worksheet.

3.1 Worksheet TabeIBantu


94
Worksheet TabelBantu digunakan untuk menampung tabel no
transaksi, yaitu tabel yang berisi nomor faktur pembelian dan nomor
faktur penjualan. Nomor faktur secara otomatis akan terisi ketika
Anda melakukan transaksi pembelian atau transaksi penjualan. Ontuk
transaksi pembelian nomor faktur diberi keterangan TBOOO,
sedangkan untuk transaksi penjualan TJOOO.
1. Ketikkan TABEL NO TRANSAKSI pada sel Al kemudian ubah
format font menjadi huruf tebal (bold).
2. Ketikkan Pembelian pada sel A2 dan Penjualan pada sel B2. Blok
range A2:B2. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Column Width... Muncul kotak dialog
Column Width. Pada kotak isian Column width: ketikkan 15. Klik
tombol OK.

Gambar 3.4 Kotak dialog Column Width.

3. Ontuk mengubah format sel pada judul tabel, klik tombol Format
dalam tab Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan yertical:
pilih Center.

95
Gambar 3.5 Pengaturan perataan teks.

Pilih tab Font. Pada daftar pilihan Font style: pilih Bold.

Gambar 3.6 Pengaturan font teks.

Pilih tab Fill. Pada daftar pilihan Background Color: pilih warna
abu-abu kemudian klik tombol OK.

96
Gambar 3.7 Pengaturan warna background sel.

4. Ontuk melakukan format data dalam tabel, blok range A3:B3.


Klik tombol Format dalam tab Home group Cells kemudian pilih
menu Format Cells... Muncul kotak dialog Forrnat Cells. Pilih tab
Number. Pada daftar pilihan Category: pilih Number. Pilih tab
Alignment. Pada kotak pilihan Horizontal: pilih Center kemudian
klik tombol OK.

Gambar 3.8 Tampilan TABEL No TRANSAKSI.

97
3.2 Worksheet DatabaseBarang
Worksheet DatabaseBarang merupakan worksheet untuk
menampung data barang (database barang). Selain database barang,
worksheet DatabaseBarang juga mempunyai tabel filter barang yang
digunakan untuk menyaring data dengan fitur Advanced Filter.
Penyaringan data tersebut akan sangat berrnanfaat ketika Anda
mencari barang berdasarkan kata kunci kode barang atau nama
barang. Ontuk mempermudah penggunaan Macro dalam aplikasi,
Anda perlu membuat nama range pada worksheet DatabaseBarang.
Nama range yang dibutuhkan adalah DatabaseBarang, KodeBarang
dan NamaBarang.
1. Pilih worksheet DatabaseBarang. Ketikkan DATABASE BARANG
pada sel Al dan FILTER BARANG pada sel Ll. Obah format font
pada sel Al dan Ll menjadi huruf tebal (bold).
2. Ketikkan Kode pada sel A2 untuk memberi nama field pada
kolom A. Ontuk mengubah lebar kolom A, tempatkan pointer
pada sembarang sel di kolom A. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Column Width... Muncul
kotak dialog Column Width. Pada kotak isian Column width:
ketikkan 10. Klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai J dan kolom L sampai N dengan
ketentuan sebagai berikut:

Kolom Lebar Sel Judul kolom


kolom
30 Nama Barang

12 Satuan
c
12 Status

12 Harga Beli

12 Harga Jual

8 Diskon
98
H 12 Harga Diskon

10 12 Stok Min

10 Stok

10 1.2 Kode

30 Nama Barang

12 Status

4. dntuk mengubah format sel pada judul database, blok range


A2:J2. Klik tombol Format dalam tab Home group Cells kemudian
pilih menu Format Cells... Muncul kotak dialog Format Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Font style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. dntuk mengubah format sel pada judul tabel filter barang (range
L2:N2), lakukan dengan cara yang sama seperti pada langkah 4.
6. Ontuk melakukan format data dalam database barang dan data
tabel filter barang, lakukan langkah-langkah sebagai berikut:
o Blok range A3:D1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range L3:N3.

99
Gambar 3.9 Format data teks dalam database.

o Blok range E3:J1048576. Klik tombol Format dalam tab Home


group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Beri tanda contreng pada pilihan Use 1000
Separator (.) kemudian klik tombol OK.

Gambar 3.10 Format data angka dalam database.

100
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.
Langkah ini dilakukan agar judul kolom tidak ikut tergulung saat
worksheet digulung ke bawah.

Gambar 3.11 Tampilan worksheet DatabaseBarang.

8. dntuk membuat nama range DatabaseBarang, klik tombol Define


Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
9. Ketikkan DatabaseBarang pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketikkan formula

g!$A:$A)-1 ;10) kemudian klik tombol OK.

101
Gambar 3.12 Membuat nama range DatabaseBarang.

10. dntuk membuat nama range KodeBarang, klik tombol Define


Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
1 1. Ketikkan KodeBarang pada kotak isian Name: Pada kotak pilihan
Scope: pilih Workbook. Pada kotak isian Refers to: ketikkan
formula

g!$A:$A)-2;1) kemudian klik tombol OK.


12. Ontuk membuat nama range NamaBarang, klik tombol Define
Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
13. Ketikkan NamaBarang pada kotak isian Name: Pada kotak pilihan
Scope: pilih Workbook. Pada kotak isian Refers to: ketikkan
formula

g!$B:$B)-1;1) kemudian klik tombol OK.

3.3 Worksheet DatabasePemasok


Worksheet DatabasePemasok merupakan worksheet untuk
menampung data pemasok dan tabel filter pemasok, yaitu tabel
untuk menyaring data pemasok menggunakan fitur Advanced Filter.
Nama range yang dibutuhkan dalam worksheet DatabasePemasok
adalah DatabasePemasok, KodePemasok dan NamaPemasok.
1. Pilih worksheet DatabasePemasok. Ketikkan DATABASE
PEMASOK pada sel Al dan FILTER PEMASOK pada sel Jl. Obah
format font pada sel Al dan Jl menjadi huruf tebal (bold).
2. Ketikkan Kode pada sel A2 untuk memberi nama field pada
kolom A. Ontuk mengubah lebar kolom A, tempatkan pointer
pada sembarang sel di kolom A. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Column Width... Muncul
kotak dialog Column Width. Pada kotak isian Column width:
ketikkan 10. Klik tombol OK.
102
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai H dan kolom J sampai L dengan
ketentuan sebagai berikut:

Kolom Lebar Sel Judul kolom


kolom
25 Nama Pemasok

Alamat
c 35

12 Kota

10 Kode Pos

10 Kontak

12 Telp/HP

H 12 H2 Hutang

10 Kode

25 Nama Pemasok

12 1.2 Hutang
4. dntuk mengubah format sel pada judul database, blok range
A2:H2. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Font style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. dntuk mengubah format sel pada judul tabel filter pemasok
(range J2:L2), lakukan dengan cara yang sama seperti pada
langkah 4.

103
6. dntuk melakukan format data dalam database pemasok dan
data dalam tabel filter pemasok, lakukan langkah-langkah
sebagai berikut:
o Blok range A3:D1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range F3:F1048576 dan
range J3:K3.
o Blok range E3:E1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Text. Pilih tab Alignment. Pada kotak pilihan
Horizontal: pilih Right (Indent) kemudian klik tombol OK.
Lakukan format data yang sama pada range G3:G1048576.
o Blok range H3:H1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Number. Pilih atau ketik O pada
kotak isian Decimal places: Beri tanda contreng pada pilihan
Use 1000 Separator (.) kemudian klik tombol OK. Lakukan
format data yang sama pada sel L3.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.

104
Gambar 3.13 Tampilan worksheet DatabasePemasok.

8. dntuk membuat nama range DatabasePemasok, klik tombol


Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
9. Ketikkan DatabasePemasok pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketikkan formula

masok!$A:$A)-1 ;8) kemudian klik tombol OK.


10. dntuk membuat nama range KodePemasok, klik tombol Define
Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
11. Ketikkan KodePemasok pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

masok!$A:$A)-2;1) kemudian klik tombol OK.


12. Ontuk membuat nama range NamaPemasok, klik tombol Define
Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
13. Ketikkan NamaPemasok pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

masok!$B:$B)-1;1) kemudian klik tombol OK.

3.4 Worksheet DatabasePeIanggan


Worksheet DatabasePelanggan merupakan worksheet untuk
menampung data pelanggan dan tabel filter pelanggan, yaitu tabel
untuk menyaring data pelanggan menggunakan fitur Advanced Filter.
Nama range yang dibutuhkan dalam worksheet DatabasePelanggan
adalah DatabasePelanggan, KodePelanggan dan NamaPelanggan.

105
1. Pilih worksheet DatabasePelanggan. Ketikkan DATABASE
PELANGGAN pada sel Al dan FILTER PELANGGAN pada sel Jl.
dbah format font pada sel Al dan Jl menjadi huruf tebal (bold).
2. Ketikkan Kode pada sel A2 untuk memberi nama field pada
kolom A. Ontuk mengubah lebar kolom A, tempatkan pointer
pada sembarang sel di kolom A. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Column Width... Muncul
kotak dialog Column Width. Pada kotak isian Column width:
ketikkan 10. Klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai H dan kolom J sampai L dengan
ketentuan sebagai berikut:
Kolom Lebar Sel Judul kolom
kolom
25 Nama Pelanggan

35 Alamat
c
12 Kota

10 Kode Pos

10 Kontak

12 Telp/HP

H 12 Piutang

10 Kode
25 Nama Pelanggan

12 1.2 Piutang
4. dntuk mengubah format sel pada judul database, blok range
A2:H2. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
106
o Pilih tab Font. Pada daftar pilihan Font style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. dntuk mengubah format sel pada judul tabel filter pelanggan
(range J2:L2), lakukan dengan cara yang sama seperti pada
langkah 4.
6. dntuk melakukan format data dalam database pelanggan dan
data dalam tabel filter pelanggan, lakukan langkah-langkah
sebagai berikut:
o Blok range A3:D1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range F3:F1048576 dan
range J3:K3.
o Blok range E3:E1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Text. Pilih tab Alignment. Pada kotak pilihan
Horizontal: pilih Right (Indent) kemudian klik tombol OK.
Lakukan format data yang sama pada range G3:G1048576.
o Blok range H3:H1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Number. Pilih atau ketik O pada
kotak isian Decimal places: Beri tanda contreng pada pilihan
Use 1000 Separator (.) kemudian klik tombol OK. Lakukan
format data yang sama pada sel L3.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.

107
Gambar 3.14 Tampilan worksheet DatabasePelanggan.

8. dntuk membuat nama range DatabasePelanggan, klik tombol


Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
9. Ketikkan DatabasePelanggan pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketikkan formula

anggan!$A:$A)-1 ;8) kemudian klik tombol OK.


10. dntuk membuat nama range KodePelanggan, klik tombol Define
Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
11. Ketikkan KodePelanggan pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

anggan!$A:$A)-2;1) kemudian klik tombol OK.


12. Ontuk membuat nama range NamaPelanggan, klik tombol Define
Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.

108
13. Ketikkan NamaPelanggan pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

anggan!$B:$B)-1 ;1) kemudian klik tombol OK.

3.5 Worksheet HeaderPembeIian


Worksheet HeaderPembelian merupakan worksheet untuk
menampung data ringkasan transaksi pembelian. Worksheet
HeaderPembelian mempunyai tabel filter header pembelian yang
berfungsi untuk menyaring ringkasan transaksi pembelian
menggunakan fitur Advanced Filter. Nama range yang dibutuhkan
dalam worksheet adalah DatabaseHeaderPembelian dan
NoFakturHdrPbln.
1. Pilih worksheet HeaderPembelian. Ketikkan DATABASE HEADER
PEMBELIAN pada sel Al dan FILTER HEADER PEMBELIAN pada sel
Jl. Obah format font pada sel Al dan Jl menjadi huruf tebal (bold).
2. Ketikkan No Faktur pada sel A2. dntuk mengubah lebar kolom A,
tempatkan pointer pada sembarang sel di kolom A. Klik tombol
Format dalam tab Home group Cells kemudian pilih menu
Column Width... Muncul kotak dialog Column Width. Ketikkan 10
pada kotak isian Column width: kemudian klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai G dan kolom I sampai M
dengan ketentuan sebagai berikut:
Kolom Lebar Sel Judul kolom
kolom
12 Tanggal

12 Tempo
c
12 Kode Pmsk

12 Total
109
12 Bayar

12 Hutang

10 12 No Faktur

12 Tanggal

12 Tanggal

12 1.2 Kode Pmsk

12 Hutang
4. dntuk mengubah format sel pada judul database, blok range
A2:G2. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Font style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. dntuk mengubah format sel pada judul tabel filter header
pembelian (range 12:M2), lakukan dengan cara yang sama
seperti pada langkah 4.
6. dntuk melakukan format data dalam database header pembelian
dan data tabel filter header pembelian, lakukan langkah-langkah
sebagai berikut:
o Blok range A3:A1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range E3:E1048576, sel
J3 dan sel L3.
o Blok range B3:C1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
110
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Date. Pilih 14/03/2001 pada daftar pilihan
Type: kemudian klik tombol OK. Lakukan format data yang
sama pada range J3:K3.

Gambar 3.15 Format data tanggal dalam database.

o Blok range E3:G1048576. Klik tombol Format dalam tab


Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Number. Pilih atau ketik O pada
kotak isian Decimal places: Beri tanda contreng pada pilihan
Use 1000 Separator (.) kemudian klik tombol OK. Lakukan
format data yang sama pada sel M3.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.

111
Gambar 3.16 Tampilan worksheet HeaderPembelian.

8. Ontuk membuat nama range DatabaseHeaderPembelian, klik


tombol Define Name dalam tab Formulas group Defined Names.
Muncul kotak dialog New Name.
9. Ketikkan DatabaseHeaderPembelian pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketik

ian!$A:$A)-1 ;7) kemudian klik tombol OK.


10. dntuk membuat nama range NoFakturHdrPbln, klik tombol
Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
1 1. Ketikkan NoFakturHdrPbln pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

ian!$A:$A)-2;1) kemudian klik tombol OK.

3.6 Worksheet DetailPembeIian


Worksheet DetailPembelian merupakan worksheet untuk
menampung data detail transaksi pembelian. Worksheet
DetailPembelian mempunyai tabel filter detail pembelian yang

112
berfungsi untuk menyaring detail transaksi pembelian menggunakan
fitur Advanced Filter. Nama range yang dibutuhkan dalam worksheet
DetailPembelian adalah DatabaseDetailPembelian dan
NoFakturDtlPbln.
1. Pilih worksheet DetailPembelian. Ketikkan DATABASE DETAIL
PEMBELIAN pada sel Al dan FILTER DETAIL PEMBELIAN pada sel
Il. Obah format font pada sel Al dan Il menjadi huruf tebal (bold).
2. Ketikkan No Faktur pada sel A2. Ontuk mengubah lebar kolom A,
tempatkan pointer pada sembarang sel di kolom A. Klik tombol
Format dalam tab Home group Cells kemudian pilih menu
Column Width... Muncul kotak dialog Column Width. Ketikkan 10
pada kotak isian Column width: kemudian klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai G dan kolom I dengan
ketentuan sebagai berikut:

Kolom Lebar Sel Judul kolom


kolom
8 No

12 Kode
c
30 Nama Barang

10 Jumlah

12 Harga Beli

12 Total

10 12 No Faktur
4. dntuk mengubah format sel pada judul database, blok range
A2:G2. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.

113
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Font style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. dntuk mengubah format sel pada judul tabel filter detail
pembelian (sel 13), lakukan dengan cara yang sama seperti pada
langkah 4.
6. dntuk melakukan format data dalam database detail pembelian
dan data tabel filter detail pembelian, lakukan langkah-langkah
sebagai berikut:
o Blok range A3:A1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Text kemudian klik tombol OK. Lakukan format
data yang sama pada range C3:D1048576 dan sel 13.
o Blok range B3:B1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Pilih tab Alignment. Pada kotak pilihan
Horizontal: dan yertical: pilih Center kemudian klik tombol
OK. Lakukan format data yang sama pada range E3:E1048576.
o Blok range F3:G1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Beri tanda contreng pada pilihan Use 1000
Separator (.) kemudian klik tombol OK.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.

114
Gambar 3.17 Tampilan worksheet DetailPembelian.

8. dntuk membuat nama range DatabaseDetailPembelian, klik


tombol Define Name dalam tab Formulas group Defined Names.
Muncul kotak dialog New Name.
9. Ketikkan DatabaseDetailPembelian pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketik

10. dntuk membuat nama range NoFakturDtlPbln, klik tombol


Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
11. Ketikkan NoFakturDtlPbln pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

n!$A:$A)-2;1) kemudian klik tombol OK.

3.7 Worksheet HeaderPenjuaIan

115
Worksheet HeaderPenjualan merupakan worksheet untuk
menampung data ringkasan transaksi penjualan. Worksheet
HeaderPenjualan mempunyai tabel filter header penjualan yang
berfungsi untuk menyaring ringkasan transaksi penjualan
menggunakan fitur Advanced Filter. Nama range yang dibutuhkan
dalam worksheet HeaderPenjualan adalah DatabaseHeaderPenjualan
dan NoFakturHdrPjln.
1. Pilih worksheet HeaderPenjualan. Ketikkan DATABASE HEADER
PENJdALAN pada sel Al dan FILTER HEADER PENJdALAN pada sel
K 1. Obah format font pada sel Al dan Kl menjadi huruf tebal
(bold).
2. Ketikkan No Faktur pada sel A2. Ontuk mengubah lebar kolom A,
tempatkan pointer pada sembarang sel di kolom A. Klik tombol
Format dalam tab Home group Cells kemudian pilih menu
Column Width... Muncul kotak dialog Column Width. Ketikkan 10
pada kotak isian Column width: kemudian klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai I dan kolom K sampai O dengan
ketentuan sebagai berikut:
Kolom Lebar Sel Judul kolom
kolom
12 Tanggal

12 Tempo
c
12 Kode Plgn
12 Grand Total

10 Diskon
12 Total
Bayar
H 12 H2
12 12 Piutang

10 No Faktur

116
12 1.2 Tanggal

12 Tanggal

12 Kode Plgn

o 12 02 Piutang
4. Ontuk mengubah format sel pada judul database, blok range
A2:12. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Fent style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. Ontuk mengubah format sel pada judul tabel filter header
penjualan (range K2:02), lakukan dengan cara yang sama seperti
pada langkah 4.
6. Ontuk melakukan format data dalam database header penjualan
dan data tabel filter header penjualan, lakukan langkah-langkah
sebagai berikut:
o Blok range A3:A1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range D3:D1048576, sel
K3 dan sel N3.
o Blok range B3:C1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Date. Pilih 14/03/2001 pada daftar pilihan
Type: kemudian klik tombol OK. Lakukan format data yang
sama pada range L3:M3.
o Blok range E3:11048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
117
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Beri tanda contreng pada pilihan Use 1000 Separator
(.) kemudian klik tombol OK. Lakukan format data yang sama pada sel
03.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.

Gambar 3.18 Tampilan worksheet HeaderPeniualan.

8. Ontuk membuat nama range DatabaseHeaderPenjualan, klik


tombol Define Name dalam tab Formulas group Defined Names.
Muncul kotak dialog New Name.
9. Ketikkan DatabaseHeaderPenjualan pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketik

an!$A:$A)-1 ;9) kemudian klik tombol OK.


10. Ontuk membuat nama range NoFakturHdrPjln, klik tombol
Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
11. Ketikkan NoFakturHdrPjln pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula
118
an!$A:$A)-2;1) kemudian klik tombol OK.

119
3.8 Worksheet DetailPenjuaIan
Worksheet DetailPenjualan merupakan worksheet untuk
menampung data detail transaksi penjualan. Worksheet
DetailPenjualan mempunyai tabel filter detail penjualan yang
berfungsi untuk menyaring detail transaksi penjualan menggunakan
fitur Advanced Filter. Nama range yang dibutuhkan dalam worksheet
DetailPenjualan adalah DatabaseDetailPenjualan dan
NoFakturDtlPjln.
1. Pilih worksheet DetailPenjualan. Ketikkan DATABASE DETAIL
PENJdALAN pada sel Al dan FILTER DETAIL PENJdALAN pada sel K
1. Obah format font pada sel Al dan Kl menjadi huruf tebal
(bold).
2. Ketikkan No Faktur pada sel A2. Ontuk mengubah lebar kolom A,
tempatkan pointer pada sembarang sel di kolom A. Klik tombol
Format dalam tab Home group Cells kemudian pilih menu
Column Width... Muncul kotak dialog Column Width. Ketikkan 10
pada kotak isian Column width: Klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai I dan kolom K dengan
ketentuan sebagai berikut:
Kolom Lebar Sel Judul kolom
kolom
8 No
12 Kode
c
30 Nama Barang

10 Jumlah
12 Harga Jual

10 Diskon

H 12 Harga Diskon
12 12 Total

10 No Faktur
4. Ontuk mengubah format sel pada judul database, blok range
A2:12. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.

112

o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan


yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Fent style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. Ontuk mengubah format sel pada judul tabel filter detail
penjualan (sel K3), lakukan dengan cara yang sama seperti pada
langkah 4.
6. Ontuk melakukan format data dalam database detail penjualan
dan data tabel filter detail penjualan, lakukan langkah-langkah
sebagai berikut:
o Blok range A3:A1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range C3:D1048576 dan
sel K3.
o Blok range B3:B1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Pilih tab Alignment. Pada kotak pilihan
Horizontal: dan yertical: pilih Center kemudian klik tombol
OK. Lakukan format data yang sama pada range E3:E1048576.

121
o Blok range F3:11048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Beri tanda contreng pada pilihan Use 1000
Separator (.) kemudian klik tombol OK.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.

Gambar 3.19 Tampilan worksheet DetailPeQjualan.

8. Ontuk membuat nama range DatabaseDetailPenjualan, klik


tombol Define Name dalam tab Formulas group Defined Names.
Muncul kotak dialog New Name.
9. Ketikkan DatabaseDetailPenjualan pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketik

10. Ontuk membuat nama range NoFakturDtlPjln, klik tombol Define


Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
11. Ketikkan NoFakturDtlPjln pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

$A:$A)-2;1) kemudian klik tombol OK.

3.9 Worksheet PembayaranHutang


Worksheet PembayaranHutang merupakan worksheet untuk
menampung data pembayaran hutang perusahaan kepada pemasok.
Worksheet PembayaranHutang mempunyai tabel filter pembayaran
hutang yang berfungsi untuk menyaring data pembayaran hutang
menggunakan fitur Advanced Filter. Nama range yang dibutuhkan

1 14
dalam worksheet PembayaranHutang adalah DatabaseHutang dan
NoFakturPemHut.
1. Pilih worksheet PembayaranHutang. Ketikkan DATABASE
PEMBAYARAN HOTANG pada sel Al dan FILTER PEMBAYARAN
HOTANG pada sel HI. Obah format font pada sel Al dan HI
menjadi huruf tebal (bold).
2. Ketikkan No Faktur pada sel A2 untuk memberi nama field pada
kolom A. Ontuk mengubah lebar kolom A, tempatkan pointer
pada sembarang sel di kolom A. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Column Width... Muncul
kotak dialog Column Width. Pada kotak isian Column width:
ketikkan 10. Klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai F dan kolom H dengan
ketentuan sebagai berikut:
Kolom Lebar Sel Judul kolom
kolom

123
12 Tanggal

12 Kode Pmsk
c
D 12 Hutang

12 Bayar

12 Sisa

H 10 No Faktur
4. Ontuk mengubah format sel pada judul database, blok range
A2:F2. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Fent style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. Ontuk mengubah format sel pada judul tabel filter pembayaran
hutang (sel H2), lakukan dengan cara yang sama seperti pada
langkah 4.
6. Ontuk melakukan format data dalam database pembayaran
hutang dan data tabel filter pembayaran hutang, lakukan
langkah-langkah sebagai berikut:
o Blok range A3:A1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range C3:C1048576 dan
sel H3.
o Blok range B3:B1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Date. Pilih 14/03/2001 pada daftar pilihan
Type: kemudian klik tombol OK.
o Blok range D3:F1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Beri tanda contreng pada pilihan Use 1000
Separator (.) kemudian klik tombol OK.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.
Langkah ini dilakukan agar judul kolom tidak ikut tergulung saat
worksheet digulung ke bawah.

125
Gambar 3.20 Tampilan worksheet PembayaranHutang.

8. Ontuk membuat nama range DatabaseHutang, klik tombol


Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
9. Ketikkan DatabaseHutang pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketikkan formula

Hutang!$A:$A)-1 ;6) kemudian klik tombol OK.


10. Ontuk membuat nama range NoFakturPemHut, klik tombol
Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
1 1. Ketikkan NoFakturPemHut pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

Hutang!$A:$A)-2;1) kemudian klik tombol OK.

3.10 Worksheet PenerimaanPiutang


Worksheet PenerimaanPiutang merupakan worksheet untuk
menampung data penerimaan piutang dari pelanggan yang
mempunyai hutang kepada perusahaan. Worksheet
PenerimaanPiutang mempunyai tabel filter penerimaan piutang yang
berfungsi untuk menyaring data penerimaan piutang menggunakan
fitur Advanced Filter. Nama range yang diperlukan dalam worksheet
PenerimaanPiutang adalah DatabasePiutang dan NoFakturPenPiu.
1. Pilih worksheet PenerimaanPiutang. Ketikkan DATABASE
PENERIMAAN PIOTANG pada sel Al dan FILTER PENERIMAAN
PIOTANG pada sel HI. Obah format font pada sel Al dan HI
menjadi huruf tebal (bold).
2. Ketikkan No Faktur pada sel A2 untuk memberi nama field pada
kolom A. Ontuk mengubah lebar kolom A, tempatkan pointer

126
pada sembarang sel di kolom A. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Column Width... Muncul
kotak dialog Column Width. Pada kotak isian Column width:
ketikkan 10. Klik tombol OK.
3. Dengan cara yang sama, ubah lebar kolom serta tambahkan
nama field pada kolom B sampai F dan kolom H dengan
ketentuan sebagai berikut:
Kolom Lebar Sel Judul kolom
kolom
12 Tanggal

12 Kode Plgn
c
12 Piutang

12 Bayar

12 Sisa

H 10 No Faktur
4. Ontuk mengubah format sel pada judul database, blok range
A2:F2. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog Format
Cells.
o Pilih tab Alignment. Pada kotak pilihan Horizontal: dan
yertical: pilih Center.
o Pilih tab Font. Pada daftar pilihan Fent style: pilih Bold.
o Pilih tab Fill. Pada daftar pilihan Background Color: pilih
warna abu-abu kemudian klik tombol OK.
5. Ontuk mengubah format sel pada judul tabel filter penerimaan
piutang (sel H2), lakukan dengan cara yang sama seperti pada
langkah 4.

127
6. Ontuk melakukan format data dalam database penerimaan
piutang dan data tabel filter penerimaan piutang, lakukan
langkah-langkah sebagai berikut:
o Blok range A3:A1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Text kemudian klik tombol OK.
Lakukan format data yang sama pada range C3:C1048576 dan
sel H3.
o Blok range B3:B1048576. Klik tombol Format dalam tab
Home group Cells kemudian pilih menu Format Cells...
Muncul kotak dialog Format Cells. Pilih tab Number. Pada
daftar pilihan Category: pilih Date. Pilih 14/03/2001 pada
daftar pilihan Type: kemudian klik tombol OK.
o Blok range D3:F1048576. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Number. Pada daftar pilihan
Category: pilih Number. Pilih atau ketik O pada kotak isian
Decimal places: Beri tanda contreng pada pilihan Use 1000
Separator (.) kemudian klik tombol OK.
7. Tempatkan pointer pada sel A3. Klik tombol Freeze Panes dalam
tab View group Window kemudian pilih menu freeze Panes.
Langkah ini dilakukan agar judul kolom tidak ikut tergulung saat
worksheet digulung ke bawah.

128
Gambar 3.21 Tampilan worksheet PenerimaanPiutang.

8. Ontuk membuat nama range DatabasePiutang, klik tombol


Define Name dalam tab Formulas group Defined Names. Muncul
kotak dialog New Name.
9. Ketikkan DatabasePiutang pada kotak isian Name: Pilih
Workbook pada kotak pilihan Scope: Pada kotak isian Refers to:
ketikkan formula

10. Ontuk membuat nama range NoFakturPenPiu, klik tombol Define


Name dalam tab Formulas group Defined Names. Muncul kotak
dialog New Name.
11. Ketikkan NoFakturPenPiu pada kotak isian Name: Pada kotak
pilihan Scope: pilih Workbook. Pada kotak isian Refers to:
ketikkan formula

Piutang!$A:$A)-2;1) kemudian klik tombol OK.

129
MEMBUAT FORM APLIKASI

Aplikasi yang Anda buat tentu akan lebih menarik jika dapat
berinteraksi dengan pengguna. Anda sebenarnya dapat
menggunakan kotak pesan dan kotak input agar pengguna dapat
berinteraksi dengan aplikasi. Namun demikian, kotak pesan dan
kotak input mempunyai keterbatasan dalam beberapa hal, misalnya
dalam jumlah dan penempatan tombol.
Pada kotak pesan dan kotak input, tombol tidak dapat ditambah atau
diatur sesuai kebutuhan. Pengguna juga tidak dapat menambahkan
objek kontrol seperti ListBox, ComboBox dan objek kontrol lainnya ke
dalam kotak pesan dan kotak input, sehingga pilihan yang dapat
ditawarkan kepada pengguna menjadi terbatas. Ontuk mengatasi
berbagai keterbatasan pada kotak pesan dan kotak input, Anda dapat
membuat form (kotak dialog). Objek yang digunakan untuk membuat
form dalam VBA adalah OserForm.

4.1 Membuat Form Barang


Excel sebenarnya menyediakan fitur Data Form yang digunakan
untuk menambah, mengedit atau menghapus record melalui kotak
dialog. Pada pembahasan kali ini, kita akan membuat Form yang
mempunyai fungsi mirip Data Form. Kelebihan Form yang kita buat
adalah tersedianya fungsi pencarian barang berdasarkan kata kunci
kode barang atau nama barang yang kita masukkan.

130
1. Buka file Aplikasi Penjualan.xlsm hasil latihan Bab 3, atau dapat
Anda download di www.solusi-kantor.com
2. Tekan Alt+F1 latau klik tombol Visual Basic dalam tab Developer
group Code untuk membuka Visual Basic Editor. Pilih menu
utama Insert > dserForm pada jendela Visual Basic Editor.
3. Atur properti OserForm melalui window Properties. Pilih menu
utama yew > Properties Window atau tekan tombol F4. Obah
properti OserForm sebagai berikut: Name = formBarang, Caption
= (kosong), Height = 411 dan Width = 276.
Properties - formBarang
formBarang I-IserForm
Alphabetic Il Categonzed I

(Name) formaarang

yIe O -
frnBorderStyIeNone

-
30rderSt
Capbon
Cycle

O finCydeAlForms

Gambar 4.1 Mengatur properti UserForm.

4. Klik kontrol CommandButton pada Toolbox kemudian klik mouse


pada bidang OserForm. Langkah tersebut dilakukan untuk
menambah kontrol CommandButton pada OserForm.
Toolbox

Gambar 4.2 Menambahkan kontrol CommandButton.

131
5. Obah properti CommandButton menjadi : Name = cmdTambah,
Caption Tambah, PicturePosition 1
frmPicturePositionLeftCenter, Height = 24, Left = 6, Top = 228,
Width = 60, Accelerator T dan Tablndex = 8. Ontuk memberikan
jarak antara judul dengan ikon, tambahkan spasi pada awal
properti Caption (judul CommandButton).

6. Klik tombol -J pada kotak sebelah kanan Picture. Muncul kotak


dialog Load Picture.

Gambar 4.3 Menambahkan gambar ikon.

7. Pilih file Tambah.gif yang dapat Anda download di


www.solusikantor.com. Klik tombol Qpen.

132
Gambar 4.4 Kotak dialog Load Picture.

8. Dengan cara yang sama, tambahkan kontrol lainnya pada


dserForm hingga tampilan Form Barang menjadi seperti pada
Gambar 4.5.

Gambar 4.5 Tampilan Form Barang.

9. Pengaturan properti objek kontrol selengkapnya dapat dilihat


pada tabel berikut:
Objek Setting Properti
Name = cmdTambah, Caption = Tambah, Height
= 24, Left = 6, Top = 228, Width = 60, Accelerator
CommandButton = T, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Tambah.gif, Tablndex = 8

133
Name = cmdEdit, Caption = Edit, Height = 24,
Left = 72, Top = 228, Width = 60, Accelerator = E,
CommandButton PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Edit.gif,
Tablndex = 9

Name = cmdHapus, Caption = Hapus, Height =


24, Left = 138, Top = 228, Width = 60,
CommandButton Accelerator = H, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Hapus.gif, Tablndex = 10
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 204, Top = 228, Width = 60,
Accelerator = K, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
CommandButton Keluar.gif, Tablndex = 1 1
Name = cmdTutup, Caption = Tutup, Height = 24,
Left = 204, Top = 357, Width = 60, Accelerator =
CommandButton u, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Tutup.gif,
Tablndex = 21
Name = cmdCariKode, Caption = (kosong), Height
= 18, Left = 138, Top = 36, Width = 18,
Accelerator = C, PicturePosition = 12 —
frmPicturePositionCenter, Picture =
CommandButton Cari.gif, Tablndex = 16
Name = cmdCariNama, Caption = (kosong),
Height = 18, Left = 246, Top = 60, Width = 18,
CommandButton Accelerator = N, PicturePosition = 12 —
frmPicturePositionCenter, Picture =
Cari.gif, Tablndex = 19
Name = cmdSortAscending, Caption = (kosong),
CommandButton Height = 18, Left = 162, Top = 36, Width = 18,
Accelerator = A, PicturePosition = 12 —

134
frmPicturePositionCenter, Picture = Sort
Ascending.gif, Tablndex = 17
Name = cmdSortDescending, Caption = (kosong),
Height = 18, Left = 186, Top = 36, Width = 18,
Accelerator = D, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
CommandButton Descendin . if, Tablndex = 18
Name = cmdAwal, Caption = (kosong), Height =
18, Left = 6, Top = 204, Width = 18, Accelerator
CommandButton = w, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Awal.gif,
Tablndex = 13
Name = cmdAkhir, Caption = (kosong), Height =
CommandButton 18, Left = 198, Top = 204, Width = 18,
Accelerator = r, PicturePosition = 12 —

frmPicturePositionCenter, Picture = Akhir.gif,


Tablndex = 14
Name = txtKode, Height = 18, Left = 60, Top =
36, Width = 72, Tablndex = 0, BackColor =
TextBox (abu-abu)
Name = txtNama, Height = 18, Left = 60, Top =
60, Width = 180, Tablndex = 1, BackColor =
TextBox (abu-abu)
Name = txtSatuan, Height = 18, Left = 60, Top 84,
Width = 72, Tablndex = 2, BackColor =
TextBox (abu-abu)
Name = txtHargaBeli, Height = 18, Left = 60, Top
= 108, Width = 72, TextAlign =
3fmTextAlignRight, Tablndex = 4, BackColor =
TextBox (abu-abu)
Name = txtHargaJual, Height = 18, Left = 192,
Top = 108, Width = 72, TextAlign = 3 —
fmTextAlignRight, Tablndex = 5, BackColor =
TextBox (abu-abu)

135
Name = txtDiskon, Height = 18, Left = 60, Top =
132, Width = 24, TextAlign = 3 —
fmTextAlignRight,
MaxLength = 2, Tablndex = 6, BackColor = (abu-
TextBox abu)
Name = txtHargaDiskon, Height = 18, Left = 192,
Top = 132, Width = 72, Locked = True, TextAlign =
3 — fmTextAlignRight, BackColor =
TextBox (abu-abu)
Name = txtStokMinimal, Height = 18, Left = 60
Top = 156, Width = 72, TextAlign = 3 —
fmTextAlignRight, Tablndex = 7, BackColor =
TextBox (abu-abu)
Name = txtStok, Height = 18, Left = 192, Top =
156, Width = 72, Locked = True, TextAlign = 3
— fmTextAlignRight, BackC010r =
TextBox (abu-abu)
Name = txtNoRecord, Height = 18, Left = 222,
Top = 204, Width = 42, TextAlign = 3 —
fmTextAlignRight, Tablndex = 15, BackColor =
TextBox (abu-abu)
Name = cmbStatus, Height = 18, Left = 192, Top
= 84, Width = 72, style = 2 fmStyleDro
ComboBox DownList, Tablndex = 3

Name = scrollBarang, Height = 18, Left = 30, Top


ScrollBar = 204, Width = 162, Max = 0, Min = 0, Tablndex =
12
Name = listCari, Height = 81, Left = 6, Top = 264,
Width = 258, BoundColumn = 3, ColumnCount = 3,
ListBox Tablndex = 20
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Barang.gif, PictureAlignment
= 2 — frmPictureAlignmentCenter,
PictureSizeMode
Image = 0 — frmPictureSizeModeCli

136
Name = lblForm, Caption = Form Barang, Height
= 24, Left = 30, Top = 6, Width = 234, Font =
Label (Font = Tahoma; Font style = Bold; Size = 16),
BackColor = (hijau muda),
Forecolor = (merah)
Name = lblKode, Caption = Kode Barang, Height =
Label
12, Left = 6, To = 42, Width = 54
Name = lblNama, Caption = Nama Barang, Height
Label = 12, Left = 6, To = 66, Width = 54
Name = lblSatuan, Caption = Satuan, Height = 12,
Label
Left = 6, To = 90, Width = 54
Name = lblStatus, Caption = Status, Height = 12,
Label Left = 138, To = 90, Width = 54
Name = lblHargaBeli, Caption = Harga Beli, Height
Label = 12, Left = 6, To = 114, Width = 54
Name = lblHargaJual, Caption = Harga Jual,
Label
Hei ht = 12, Left = 138, To = 114, Width = 54
Name = lblDiskon, Caption = Diskon, Height = 12,
Label
Left = 6, To - 138, Width = 54
Name = lblPersen, Caption = %, Height = 12, Left =
Label
90, To = 138, Width = 12
Name = lblHargaDiskon, Caption = Harga Diskon,
Label Height = 12, Left = 138, To = 138, Width = 54
Name = lblStokMinimal, Caption = Stok Min.,
Label
Height = 12, Left = 6, To = 162, Width = 54
Name = lblStok, Caption = Stok, Height = 12, Left =
Label
138, To = 162, Width = 54
Name = lblRecord, Caption = Record, Height = 12,
Label Left = 6, To = 186, Width = 102
Label Name = lblNoRecord, Ca tion = No Record,
Hei ht = 12, Left = 222, To = 186, Width = 42
10. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Saat pertama kali ditampilkan, secara otomatis
muncul kode Macro OserForm atau kontrol yang sedang aktif

137
dengan event klik. Hapus kode Macro tersebut kemudian
ketikkan kode Macro sebagai berikut:
' Kode ketika Form Barang aktlf )
Private Sub UserForm_Activate(
DatabaseBarang
"DatabaseBarang"
' wsDtbsBrg adalah worksheet )
Set wsDtbsBrg = Sheets( database
' jm1hRecord adalah jumlah barang
record jm1hRecord = wsDtbsBrg(wsDtbsBrg . Rows . Count,
. Cells
End(x1Up) . Offset (0, 0) - 2
. Row
I
' Tinggi Form Barang adalah
282 formBarang . He ight =
282 ke dalam ComboBox Status
"
Memasukkan item Produk Laku
cmbStatus . Addltem " Produkke dalam ComboBox Status
Laku 0
' Memasukkan item " dalam ComboBox
Kurang Laku cmbStatus . Add
Item " Kurang Laku ' Status
Memasukkan item Tidak Laku ke
Produk Laku
cmbStatus . Addltem "Tidak "
Laku"
Nil ai ComboBox Status
adalah cmbStatus . Value = " —
Produk Laku
DatabaseKosong
' Jika database barang kosong
If wsDtbsBrg . Range( t' A 3
" ) . Value
' Memanggil Sub Procedure
Call DatabaseKosong '
Keluar dari Sub Procedure merupakan hasi1 penyaringan
Exit Sub
End If dalam worksheet DatabaseBarang

I
' Jika data yang ditampilkan
If wsDtbsBrg . FilterMode
dalam worksheet DatabaseBarang
Then Tampilkan seluruh data
False
wsDtbsBrg . ShowA11Data End
If
1
o
' Menampilkan seluruh baris
banyaknya record
wsDtbsBrg . Cells . Rows .
Hidden =

'Nil ai Scroll Bar minimal Barang , Max


adalah scroll Barang . Min = 1

138
' Nil ai Scroll Bar maksimal adalah
scroll Barang . Max = jm1hRecord
Scroll Bar bernilai maksimal scroll Barang . Value = scroll

139
Sub
' Sub Procedure jika database barang kosong
Sub DatabaseKosong( )

' Menampilkan kotak pesan Database Barang Kosong


MsgBox "Tidak ada data dalam database barang" ,
vbOKOn1y + vblnformation, Database Barang Kosong"

'Nilai minimal ScrollBar


scrollBarang . Min = O '
Nilai maksimal ScrollBar
scrollBarang . Max = O

' Teks pada Label record


Ib1Record. Caption = "Record II & scrollBarang.
Value & II dari II & scrollBarang . Max
' TextBox Kode Barang
dikosongkan txtKode . Value =
' TextBox Nama Barang
dikosongkan
txtNama . Valuedikosongkan
= ' TextBox
Beli
Satuan
txtSatuan. Value
' TextBox Harga
txtHargaBe1i .
Value ' TextBox
Harga dikosongkan
txtHargaJua1. =
Value ' TextBox Jual dikosongkan
Diskon = dikosongkan

txtDiskon. Value
' TextBox Stok
txtStokMinima1.
Va ' TextBox
Stok Minimal dikosongkan
txtStok.
Value = lue dikosongkan
' TextBox No Record dikosongkan
txtNoRecord. Value =
' TextBox Kode Barang menjadi fokus
txtKode . SetFocus

End Sub

' Kode ketika masuk dal am TextBox Kode Barang


Private Sub txtKode_Enter( )
' Warna TextBox Kode Barang menjadi putih
txtKode . BackC010r =
End Sub

' Kode ketika keluar dari TextBox Kode Barang

140
End
Private Sub txtKode_Exit (ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna TextBox Kode Barang menjadi abu—abu
txtKode . BackC010r = &HCOCOCO
End Sub
' Kode ketika masuk dalam TextBox Nama Barang
Private Sub txtNama_Enter( )
' Warna TextBox Nama Barang menjadi putih
txtNama . BackC010r =
End Sub

' Kode ketika keluar dari TextBox Nama Barang


Private Sub txtNama_Exit (ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna TextBox Nama Barang menjadi abu—abu
txtNama . BackC010r = &HCOCOCO
End Sub

' Kode ketika masuk dalam TextBox Satuan


Private Sub txtSatuan_Enter( )
' Warna TextBox Satuan men jadi putih
txtSatuan. BackC010r =
End Sub

' Kode ketika keluar dari TextBox Satuan


Private Sub txtSatuan_Exit (ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna TextBox Satuan menjadi abu—abu
txtSatuan . BackC010r = &HCOCOCO

End Sub
' Kode ketika masuk dalam ComboBox Status
Private Sub cmbStatus_Enter( )
' Warna
ComboBox Status men
jadi put ih
cmbStatus .
BackC010r =

End Sub
' Kode ketika keluar dari ComboBox Status
Private Sub cmbStatus_Exit ( ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna ComboBox Status men jadi abu—abu
cmbStatus . BackC010r = &HCOCOCO
End Sub

' Kode ketika masuk dalam TextBox Harga Beli


Private Sub txtHargaBe1i_Enter( )
' Warna TextBox Harga Beli men jadi putih
txtHargaBe1i . BackC010r =
End Sub

141
' Kode ketika keluar dari TextBox Harga Beli
Private Sub txtHargaBe1i_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean)
' Warna TextBox Harga Beli men jadi abu—abu
txtHargaBe1i . BackC010r = &HCOCOCO
End Sub

' Kode ketika masuk dalam TextBox Harga Jual


Private Sub txtHargaJua1_Enter( )
' Warna TextBox Harga Jual men jadi
putih txtHargaJua1. BackC010r
Sub

' Kode ketika keluar dari TextBox Harga Jual


Private Sub txtHargaJua1_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean)
' Warna TextBox Harga Jual men jadi abu—abu
txtHargaJua1. BackC010r = &HCOCOCO
End Sub

' Kode ketika masuk dalam TextBox Diskon


Private Sub txtDiskon_Enter( )
' Warna TextBox Diskon men jadi putih
txtDiskon. BackC010r =
End Sub

' Kode ketika keluar dari TextBox Diskon


Private Sub txtDiskon_Exit (ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna TextBox Diskon men jadi abu—
abu txtDiskon . BackC010r = &HCOCOCO
' Jika TextBox Diskon kosong
If txtDiskon. Value = Then '
TextBox Diskon bernilai 0
txtDiskon. Value = 0 kosong
' Jika TextBox Diskon tidak
Else
'Nilai TextBox Harga Diskon txtHargaDiskon.
Value = txtHargaJua1. Value — ( txtHargaJua1 . Value * (
txtDiskon . Value 100) )
End If
End Sub

' Kode ketika masuk dalam TextBox Stok Minimal


Private Sub txtStokMinima1_Enter( )
' Warna TextBox Stok Minimal menjadi putih
txtStokMinima1. BackC010r = &H80000005&
End Sub

' Kode ketika keluar dari TextBox Stok Minimal


Private Sub txtStokMinima1_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean)

142
End
' Warna TextBox Stok Minimal menjadi abu—abu
txtStokMinima1. BackC010r = &HCOCOCO
End Sub

' Kode ketika masuk dalam TextBox No Record


Private Sub txtNoRecord_Enter( )
' Warna TextBox No Record men jadi putih
txtNoRecord. BackC010r =
End Sub

' Kode ketika keluar dari TextBox No Record


Private Sub txtNoRecord_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean)
' Warna TextBox No Record menjadi abu—
abu txtNoRecord. BackC010r = &HCOCOCO '
TextBox No Record dikosongkan
txtNoRecord. Value =
End Sub

' Validasi pada TextBox Harga Beli


Private Sub txtHargaBe1i_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )
' Validasi angka TextBox Harga Beli
Select Case KeyAscii
Case Asc( "O") TO Asc( II 9 11 )
Case Else
KeyAsc11
End Select

End Sub

' Validasi pada TextBox Harga Jual


Private Sub txtHargaJua1_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )

' Validasi angka


Select Case
Case Asc(
Case Else

TextBox Harga Jual


KeyAscii
"0") TO Asc( "9")

143
TextBox Diskon
KeyAscii
End Select

End Sub

' Validasi pada


Private Sub txtDiskon_KeyPress ( ByVa1 KeyAscii
As MSForms . Returnlnteger )
' Validasi angka TextBox Diskon
Select Case KeyAscii
Case Asc( "O") TO Asc( II 9 11 )
Case Else
KeyAsc11
End Select

End Sub

' Validasi pada TextBox Stok Minimal


Private Sub txtStokMinima1_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )
' Validasi angka TextBox Stok Minimal
Select Case KeyAscii
Case Asc( "O") TO Asc( II 9 11 )
Case Else
KeyAsc11
End Select
Sub
' Validasi pada TextBox No Record
Private Sub txtNoRecord_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )
' Validasi angka TextBox No Record
Select Case KeyAscii
Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub

' Kode ketika nilai TextBox Harga Beli diubah


Private Sub txtHargaBe1i_Change( ) ' Format TextBox
Harga Beli txtHargaBe1i . Value = Format
( txtHargaBe1i . Value ,

End Sub

' Kode nilai TextBox Harga diub ketika


Private txtHargaJua1_Change Sub '
Format ( ) TextBox Harga
Jual

144
End
txtHargaJua1. Value = Format ( txtHargaJua1.
Value ,

End Sub
' Kode ketika TextBox Harga Diskon berubah
Private Sub txtHargaDiskon_Change ( ) ' Format
TextBox Harga Diskon
txtHargaDiskon.Va1ue = Format ( txtHargaDiskon .
Value ,

End Sub

' Kode ketika nilai TextBox No Record diubah


Private Sub txtNoRecord_Change( )

' wsDtbsBrg adalah worksheet DatabaseBarang


Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

' Jika nilai TextBox No Record kosong


If txtNoRecord. Value = Then
' Keluar dari Sub Procedure
Exit Sub
' Jika nilai TextBox O atau > dari nilai maksimal Scroll
Bar
El self txtNoRecord. Value = O Or
txtNoRecord. Value > scroll Barang . Max
Then ' Menampilkan kotak pesan No Record
Tidak Ada
MsgBox n Nomor record yang Anda masukkan tidak ada" ,
vbOKOn1y + vbCritica1, "No Record Tidak Ada" '
TextBox No Record dikosongkan txtNoRecord. Value =
' TextBox No Record men jadi
fokus txtNoRecord. SetFocus '
Keluar dari Sub Procedure
Exit Sub
Else
'Nilai ScrollBar sama dengan nilai TextBox No Record
scrollBarang. Value = txtNoRecord. Value
End If

End Sub

' Kode ketika CommandButton Sort Ascending di—klik


Private Sub cmdSortAscending_C1ick( )
' wsDtbsBrg adalah worksheet DatabaseBarang

145
Set wsDtbsBrg = Sheets ( " DatabaseBarang n
)

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Memanggil Sub Procedure cmdTutup_C1ick
Call cmdTutup_C1ick

End If
' Mengurutkan Ascending database barang kolom Nama Barang
wsDtbsBrg . Range ( 't DatabaseBarang" ) . Sort
Keyl : = n Nama Barang" ; Orderl : =x1Ascending, Header
: =x1Yes
' ScrollBar bernilai maksimal
scrollBarang . Value — scrollBarang
. Max

' Memanggil Sub Procedure scrollBarang_Change


Call scrollBarang_Change

End Sub

' Kode ketika CommandButton Sort Descending di—klik


Private Sub cmdSortDescending_C1ick( )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then
' Memanggil Sub Procedure cmdTutup_C1ick
Call cmdTutup_C1ick
End If

' Mengurutkan Descending database barang kolom Nama Barang


wsDtbsBrg . Range ( "DatabaseBarang " ) . Sort

146
Keyl : = n
Nama Barang" , Orderl : =x1Descending , Header
: =x1Yes
' ScrollBar bernilai maksimal
scrollBarang . Value = scroll Barang .
Max

' Memanggil Sub Procedure scrollBarang_Change


Call scrollBarang_Change

End Sub

' Kode ketika nilai Scroll Bar diubah


Private Sub scrollBarang_Change( )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( "
DatabaseBarang n ) ' NoRecord adalah
nilai Scroll Bar + 2
NoRecord = scrollBarang . Value + 2
' Jika database barang kosong
If wsDtbsBrg . Range( "A3" ) . Value = n n Then
' Memanggil Sub Procedure DatabaseKosong
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh
data dalam worksheet
DatabaseBarang
wsDtbsBrg .
ShowA11Data
End If

With wsDtbsBrg
' TextBox Kode Barang diisi kode barang sesuai
NoRecord txtKode . Value F .Cells ( NoRecordi 1 Value
' TextBox Nama Barang diisi nama barang txtNama .
Value = . Cells (NoRecord, 2) . Value ' TextBox Satuan
diisi satuan txtSatuan. Value = . Cells (NoRecord,
3) . Value ' ComboBox Status diisi status barang
cmbStatus . Value = . Cells (NoRecord, 4 ) . Value '
TextBox Harga Beli diisi harga beli txtHargaBe1i .
Value = . Cells (NoRecord, 5) . Value ' TextBox Harga
Jual diisi harga jual txtHargaJua1. Value = . Cells
(NoRecord, 6 ) . Value ' TextBox Diskon diisi diskon
record yang sama txtDiskon. Value = . Cells (NoRecord,
7) . Value ' TextBox Harga diskon diisi harga diskon
txtHargaDiskon. Value = . Cells (NoRecord, 8) . Value

147
' TextBox Stok Minimal diisi stok minimal
txtStokMinima1. Value = . Cells (NoRecord, 9 ) . Value
' TextBox Stok diisi stok barang record yang sama
txtStok. Value = . Cells (NoRecord, 10) . Value
End With
' Teks pada Label Record
1b1Record. Caption = "Record " & scrollBarang. Value &
dari n & scrollBarang . Max
End Sub

' Kode ketika CommandButton Awal di—klik


Private Sub cmdAwa1_C1ick( )

' wsDtbsBrg adalah worksheet DatabaseBarang


Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' Jika database barang kosong
If wsDtbsBrg . Range( "A3" ) . Value =
Then ' Memanggil Sub Procedure
DatabaseKosong
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

'Nilai ScrollBar minimal


scrollBarang . Value = scroll Barang
. Min

End Sub CommandButton Akhir di —klik


cmdAkhir_C1ick( )
' Kode ketika
Private Sub
worksheet DatabaseBarang
' wsDtbsBrg adalah Sheets ( " DatabaseBarang
Set wsDtbsBrg = " )
barang kosong
' Jika database
If wsDtbsBrg . Range( "A3" ) . Value =
Then ' Memanggil Sub Procedure
DatabaseKosong
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

' ScrollBar bernilai maksimal


scrollBarang . Value = scroll Barang .
Max

End Sub

148
' Kode ketika CommandButton Tambah di—klik
Private Sub cmdTambah_C1ick( )

' wsDtbsBrg merupakan worksheet DatabaseBarang


Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' RecordAkhir merupakan record terakhir database barang
RecordAkhir = wsDtbsBrg . Cells (wsDtbsBrg . Rows . Count,
"A" ) . End(x1Up) . Offset (O, O) . Row

' Jika TextBox Kode Barang kosong


If txtKode . Value = Then
' Menampilkan kotak pesan Kode Barang Kosong
MsgBox n Kode barang belum diisi n , vbOKOn1y +
vbCritica1 , " Kode Barang Kosong" ' TextBox
Kode Barang men jadi fokus txtKode . SetFocus
' Keluar dari Sub Procedure
Exit Sub
' Jika TextBox Nama Barang kosong
El self txtNama . Value = Then
' Menampilkan kotak pesan Nama Barang Kosong
MsgBox n Nama barang belum diisi n , vbOKOn1y +
vbCritica1 , "Nama Barang Kosong" ' TextBox
Nama Barang men jadi fokus txtNama . SetFocus
' Keluar dari Sub Procedure
Exit Sub
' Jika TextBox Satuan kosong
El self txtSatuan . Value = Then '
Menampilkan kotak pesan Satuan kosong
MsgBox n Satuan belum diisi " , vbOKOn1y
+ vbCritica1 , " Satuan Kosong" ' TextBox
Satuan men jadi fokus
txtSatuan. Procedure
SetFocus ' Keluar dari
Sub kosong
Exit Sub = " Then
' Jika TextBox Harga Beli
El self txtHargaBe1i . Value
' Menampilkan kotak pesan Harga Bel i, Kosong
MsgBox "Harga beli bel um diisi " vbOKOn1y +
vbCritica1, " Harga Beli Kosong" ' TextBox Harga Beli
txtHargaBe1i . SetFocus men
' jadi fokus Keluar
dari Sub Procedure
Exit Sub
' Jika TextBox Harga Jual kosong
El self txtHargaJua1. Value = Then
' Menampilkan kotak pesan Harga Jual Kosong
MsgBox n Harga jual belum diisi n , vbOKOn1y +
vbCritica1, " Harga Jual Kosong" ' TextBox
Harga Jual men jadi fokus txtHargaJua1.
SetFocus ' Keluar dari Sub Procedure
Exit Sub

149
' Jika nilai TextBox Diskon lebih dari 75
El self txtDiskon. Value > 75 Then
' Menampilkan kotak pesan Diskon Ter1a1u Besar
MsgBox n Diskon maksimal " , vbOKOn1y +
vbCritica1, "Diskon Ter1a1u Besar " ' TextBox
Diskon dikosongkan txtDiskon. Value = 11
' TextBox Diskon men jadi
fokus txtDiskon. SetFocus '
Keluar dari Sub Procedure
Exit Sub
End If
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet DatabaseBarang
wsDtbsBrg . ShowA11Data
End If

' Memeriksa apakah kode barang sudah ada


For Cek = 1 To scrollBarang . Max
' Jika kode barang sama dengan isi sel pada kolom A
If txtKode . Value wsDtbsBrg . Cells ( Cek + 2, 1) .
Value Then
' Menampilkan kotak pesan Kode Barang Ganda
MsgBox "Kode barang yang Anda masukkan sudah ada " ,
vbCritica1 + vbOKOn1y , n Kode Barang Ganda " '
TextBox Kode Barang dikosongkan txtKode . Value =
' TextBox Kode Barang men jadi fokus
txtKode . SetFocus
' Keluar dari Sub Procedure
Exit Sub
End If
Next Cek

With wsDtbsBrg
' Masukkan kode barang di bawah record terakhir kolom A
. Cells (RecordAkhir + 1, 1) . Value = txtKode . Value
' Masukkan nama barang pada record yang sama
. Cells (RecordAkhir + 1, 2) . Value = txtNama . Value
' Masukkan satuan pada record yang sama
. Cells (RecordAkhir + 1, 3) . Value = txtSatuan. Value
' Masukkan status barang pada record yang sama
. Cells (RecordAkhir + 1, 4) . Value = cmbStatus . Value
' Masukkan harga beli pada record yang sama
. Cells (RecordAkhir + 1 , 5 ) . Value =
CDb1 ( txtHargaBe1i . Value )
' Masukkan harga jual pada record yang sama
. Cells (RecordAkhir + 1, 6 ) . Value =
CDb1 ( txtHargaJua1. Value )
' Masukkan diskon barang pada record yang sama
. Cells (RecordAkhir + 1, 7) . Value = txtDiskon. Value

150
' Masukkan harga jual diskon pada record yang sama
. Cells (RecordAkhir + 1, 8) . Value =
CDb1 ( txtHargaDiskon . Value )
' Masukkan stok minimal barang pada record yang sama
. Cells (RecordAkhir + 1, 9 ) . Value =
txtStokMinima1. Value
' Masukkan stok barang = O pada record yang sama
. Cells (RecordAkhir + 1, 10) . Value
End With

'Nilai ScrollBar minimal 1


scroll Barang . Min = 1
'Nilai ScrollBar maksimal ditambah 1
scrollBarang . Max = scroll Barang . Max + 1 '
ScrollBar bernilai maksimal scrollBarang .
Value = scrollBarang . Max ' Teks pada Label
record
1b1Record. Caption = "Record " & scroll Barang.
Value & " dari " & scrollBarang . Max
' Menyimpan workbook
ThisWorkbook. Save

End Sub

' Kode ketika CommandButton Edit di—klik


Private Sub cmdEdit_C1ick( )
' wsDtbsBrg merupakan worksheet DatabaseBarang
Set wsDtbsBrg = Sheets( " DatabaseBarang n )
' NoRecord adalah nil ai Scroll Bar + 2
NoRecord = scrollBarang. Value + 2

' Jika database barang kosong


If wsDtbsBrg . Range( "A3" ) . Value = n n Then
' Memanggil Sub Procedure DatabaseKosong
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet DatabaseBarang
wsDtbsBrg . ShowA11Data

End If
kosong
' Jika TextBox Nama Barang
If txtNama . Value — Then
' Menampilkan kotak pesan Nama Barang Kosong

151
MsgBox n Nama barang belum diisi n , vbOKOn1y +
vbCritica1 , "Nama Barang Kosong" ' TextBox
Nama Barang menjadi fokus txtNama . SetFocus
' Keluar dari Sub Procedure
Exit Sub
' Jika TextBox Satuan kosong
El self txtSatuan . Value = Then '
Menampilkan kotak pesan Satuan kosong
MsgBox Satuan belum diisi " , vbOKOn1y +
vbCritica1 , " Satuan Kosong" ' TextBox
Satuan menjadi fokus txtSatuan. SetFocus
' Keluar dari Sub Procedure
Exit Sub
' Jika TextBox Harga Beli kosong
El self txtHargaBe1i . Value = Then
' Menampilkan kotak pesan Harga Beli Kosong
MsgBox n Harga beli belum diisi n ,
vbOKOn1y + vbCritica1, " Harga Beli
Kosong" ' TextBox Harga Beli menjadi fokus
txtHargaBe1i . SetFocus ' Keluar dari Sub
Procedure
Exit Sub
' Jika TextBox Harga Jual kosong
El self txtHargaJua1. Value = Then
' Menampilkan kotak pesan Harga Jual Kosong
MsgBox n Harga jual belum diisi n , vbOKOn1y +
vbCritica1, " Harga Jual Kosong" ' TextBox
Harga Jual menjadi fokus txtHargaJua1.
SetFocus ' Keluar dari Sub Procedure
Exit Sub
' Jika nilai TextBox Diskon lebih dari 75
El self txtDiskon. Value > 75 Then
' Menampilkan kotak pesan Diskon Ter1a1u Besar
MsgBox n Diskon maksimal " , vbOKOn1y +
vbCritica1, "Diskon Ter1a1u Besar " ' TextBox
Diskon dikosongkan txtDiskon. Value = 11
' TextBox Diskon menjadi
fokus
txtDiskon.
SetFocus '
Keluar dari
Sub Procedure
Exit Sub
End If

' Menampilkan kotak pesan sebelum record data diedit


PesanEdit = MsgBox( "Record " & txtNama . Value &
n
akan diedit" - vbOKCance1 + vblnformation,

"Edit Data" )
' Jika tombol Cancel di—klik

152
If PesanEdit = vbCance1 Then
' Keluar dari Sub
Procedure
Exit Sub
' Jika tombol OK di—klik
El self PesanEdit = vbOK Then
With wsDtbsBrg
' Edit nama barang pada record terpilih
. Cells (NoRecord, 2) . Value = txtNama . Value
' Edit satuan pada record terpilih
. Cells (NoRecord, 3) . Value = txtSatuan. Value
' Edit status pada record terpilih
. Cells (NoRecord, 4) . Value = cmbStatus . Value
' Edit harga beli pada record terpilih
. Cells (NoRecord, 5) . Value =
CDb1 ( txtHargaBe1i . Value )
' Edit harga jual pada record terpilih
. Cells (NoRecord, 6 ) . Value =
CDb1 ( txtHargaJua1. Value )
' Edit diskon pada record terpilih
. Cells (NoRecord, 7) . Value = txtDiskon.
Value ' Nilai TextBox Harga Diskon
txtHargaDiskon. Value = txtHargaJua1. Value —
( txtHargaJua1. Value * (txtDiskon. Value /
100 ) )
' Edit harga jual diskon pada record terpilih
. Cells (NoRecord, 8 ) . Value = txtHargaJua1.
Value — ( txtHargaJua1. Value * (txtDiskon.
Value / 100 ) )
' Edit stok barang minimal pada record terpilih
. Cells (NoRecord, 9 ) . Value = txtStokMinima1.
Value
End With
End If

' Menyimpan workbook


ThisWorkbook. Save

End Sub

' Kode ketika CommandButton Hapus di—klik


Private Sub cmdHapus_C1ick( )

' wsDtbsBrg adalah worksheet DatabaseBarang


Set wsDtbsBrg = Sheets( " DatabaseBarang n )
' NoRecord adalah nil ai Scroll Bar + 2
NoRecord = scrollBarang. Value + 2
' SelRecord adalah sel kolom A pada record terpilih
Set SelRecord = wsDtbsBrg. Cells (NoRecord, 1 )

153
' Jika database barang kosong
If wsDtbsBrg . Range( "A3 " ) . Value = _ "
' Memanggil Sub Then
Call Procedure DatabaseKosong DatabaseKosong
' Keluar dari Sub
Exit Sub Procedure
End If

' Jika data yang ditampilkan


merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet DatabaseBarang
wsDtbsBrg . ShowA11Data
End If

' Menampilkan kotak pesan sebelum record data dihapus


PesanHapus = MsgBox( "Record " & txtNama . Value &
n
akan dihapus " , vbOKCance1 + vblnformation ,
n
Hapus Data" )

' Jika tombol Cancel di—klik


If PesanHapus = vbCance1 Then
' Keluar dari Sub Procedure
Exit Sub
' Jika tombol OK di—klik
El self PesanHapus = vbOK Then
' Hapus record barang terpilih
Range ( SelRecord, SelRecord. Offset ( O ,9 ) ) . Delete
Shift : =x1Up
End If

'Nilai ScrollBar maksimal dikurangi 1


scrollBarang . Max = scroll Barang .
Max — 1 ' ScrollBar bernilai maksimal
scrollBarang . Value = scrollBarang .
Max ' Teks pada Label record
1b1Record. Caption = "Record " & scrollBarang.
Value & " dari " & scrollBarang . Max
' Menyimpan workbook
ThisWorkbook. Save

End Sub

' Kode ketika CommandButton Cari Kode di—klik


Private Sub cmdCariKode_C1ick( )

' wsDtbsBrg adalah worksheet DatabaseBarang


Set wsDtbsBrg = Sheets( " DatabaseBarang n )
' rgDtbsBrg adalah range DatabaseBarang
Set rgDtbsBrg = wsDtbsBrg. Range( " DatabaseBarang" )
' rgAdvFi1ter adalah range L2 : N3 worksheet DatabaseBarang

154
Set rgAdvFi1ter = wsDtbsBrg . Range( n
1.2 :N3 TI
)
' Jika database barang
kosong = Then
If wsDtbsBrg . Range( "A3" ) DatabaseKosong . Value
' Memanggil Sub
Procedure
Call

DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet DatabaseBarang
wsDtbsBrg . ShowA11Data .1
End If

' Jika TextBox Kode Barang kosong


If txtKode . Value = Then
' Menampilkan kotak pesan Kode Barang Kosong
MsgBox "Ketikkan kode barang yang akan dicari " ,
vbOKOn1y + vblnformation, n Kode Barang Kosong" '
TextBox Kode Barang menjadi fokus txtKode .
SetFocus
End If

' Pencarian pada range KodeBarang


With wsDtbsBrg . Range( "KodeBarang " )
'c merupakan sel hasil pencarian
Set c = . Find( txtKode . Value, Lookln :
=x1Va1ues ) ' Jika tidak ada sel berisi kata
kunci kode barang
If c Is Nothing Then
' Menampilkan kotak pesan Kode Barang Tidak Ada
MsgBox "Kode barang " & txtKode . Value &
tidak ada " , vbOKOn1y + vblnformation,
n
Kode Barang Tidak Ada
' Menghapus ListBox
listCari . Clear
' Memanggil Sub Procedure cmdAkhir_C1ick
Call cmdAkhir_C1ick
' Keluar dari Sub Procedure
Exit Sub
' Jika ada sel berisi kata kunci kode barang
Else

155
' Memasukkan kode barang ke dalam sel
L3 wsDtbsBrg. Range ( "L3 " ) . Value =
n
& txtKode.Va1ue & n
' Menghapus nil ai dalam range M3 :
N3 wsDtbsBrg . Range ( "M3 : N3 " ) .
ClearContents ' Tinggi Form Barang
adalah 411 f ormBarang . Height = 411
' Penyaringan data menggunakan Advanced Filter
rgDtbsBrg. AdvancedFi1ter Action : =x1Fi1terInP1ace,

Cri t er iaRange : =rgAdvF i 1 ter


' Memanggil Sub Procedure Tampi1kanSemua
Call Tampi1kanSemua
End If
End With

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data
dalam worksheet DatabaseBarang
wsDtbsBrg . ShowA11Data
End If

End Sub

' Menampilkan hasil pencarian dalam _ListBox


Sub Tampi1kanSemua( )

' wsDtbsBrg adalah worksheet DatabaseBarang


Set wsDtbsBrg = Sheets( " DatabaseBarang n )
' Menghapus ListBox
listCari . Clear

With listCari
' Menambahkan judul kolom ListBox
. Addl tem
' Judul ListBox kolom pertama

. List ( • ListCount - 1, " Record n

' Judul ListBox kolom kedua

. List ( • ListCount - 1, " Kode n

' Judul ListBox kolom ketiga

. List ( • ListCount - 1, "Nama Barang "


' Lebar ma sing—masing kolom dalam
ListBox . ColumnWidths = 55 & & 60 & n ;
n
& 135
End With

With wsDtbsBrg

156
' rgTampi1 adalah range kode barang yang ditampilkan
Set rgTampi1 = wsDtbsBrg . Range( n KodeBarang" ) .
SpecialCe11s ( xlCe1 ITypeVi sible )
' sTampi1 merupakan pengulangan setiap sel dalam
rgTampi1
For Each sTampi1 In rgTampi1
With listCari
' Memasukkan item ke dalam ListBox
. Addltem sTampi1. Value
'No record baris sTampi1 dikurangi 2
. List( . ListCount 1 0 ) = sTampi1.Row — 2
' Kode barang berdasarkan nilai dalam sTampi1
. List( . ListCount 1 1 ) = sTampi1. Value
'Nama barang 1 kolom di sebelah kanan
sTampi1
. List( . ListCount
sTampi1. Offset (O, 1 ) . Value
End With
Next sTampi1
End With

' ListBox menjadi fokus


listCari . SetFocus

End Sub
CommandButton Cari Nama di—klik
' Kode ketika cmdCariNama_C1ick( )
Private Sub
adalah worksheet
' wsDtbsBrgDatabaseBarang = Sheets
Set wsDtbsBrg
( "DatabaseBarang " ) adalah
' rgDtbsBrgrange DatabaseBarang
Set rgDtbsBrg = wsDtbsBrg .
Range( "DatabaseBarang" )
' rgAdvFi1ter adalah range L2 :N3 worksheet
DatabaseBarang " )
Set rgAdvFi1ter = wsDtbsBrg . Range ( " L2 :
N3
' Jika database barang kosong
If wsDtbsBrg . Range( "A3 " ) . Value
Then ' Memanggil Sub Procedure
DatabaseKosong
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet DatabaseBarang
wsDtbsBrg . ShowA11Data

157
End If

' Jika TextBox Nama Barang kosong


If txtNama . Value = Then
' Menampilkan kotak pesan Nama Barang Kosong
MsgBox "Ketikkan nama barang yang akan dicari "
vbOKOn1y + vblnformation, n Nama Barang Kosong"
' TextBox Nama Barang menjadi fokus txtNama .
SetFocus
End If
' Pencarian pada range NamaBarang
With wsDtbsBrg . Range( "NamaBarang " )
'c merupakan sel hasil pencarian
Set c = . Find( txtNama. Value, Lookln : =x1Va1ues )
' Jika tidak sel berisi kata kunci nama barang
If c Is Nothing Then
' Menampilkan kotak pesan Nama Barang Tidak Ada
MsgBox "Nama barang " & txtNama . Value &
tidak ada " , vbOKOn1y + vblnformation, n

Nama Barang Tidak Ada ' Menghapus ListBox


listCari . Clear
' Memanggil Sub Procedure cmdAkhir_C1ick
Call cmdAkhir_C1ick
' Keluar dari Sub Procedure
Exit Sub
' Jika ada sel berisi kata kunci nama barang
Else
' Memasukkan nama barang ke dalam sel
M3 wsDtbsBrg. Range ( "M3 " ) . Value =
txtNama. Value & " * "
' Menghapus nila± dalam sel L3
dan N3 wsDtbsBrg . Range ( "L3 " )
. ClearContents ' Tinggi Form
Barang adalah 411 formBarang .
Height = 411
' Penyaringan data menggunakan Advanced Filter
rgDtbsBrg . AdvancedFi1ter Action: =x1Fi1terInP1ace,

Cri ter iaRange : =rgAdvF i 1


ter
' Memanggil Sub Procedure
Tampi1kanSemua
Call Tampi1kanSemua
End If
End With

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet DatabaseBarang
wsDtbsBrg . ShowA11Data

158
End If

End Sub

' Kode ketika ListBox di—klik


Private Sub listCari_C1ick( )
' Jika baris ListBox yang di—klik bukan baris judul kolom
If listCari . List Index > O Then
'Nilai ScrollBar sama dengan nilai ListBox kolom Record
scroll Barang . Value = listCari . List (listCari .
List Index, O)
End If

End Sub

' Kode ketika CommandButton Tutup di—klik


Private Sub cmdTutup_C1ick( )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang " )
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

0
' Menghapus nilai dalam range L3 : N3
wsDtbsBrg . Range ( "L3 : N 3 " ) .

159
ClearContents

Hapus ListBox
listCari . Clear

' Tinggi Form Barang adalah


282 f ormBarang . He ight = 282

End Sub

o
' Kode ketika CommandButton Keluar di—klik
Private Sub
cmdKe1uar_CIick( )
' Keluar dari Form
Barang
Unload Me
End Sub

Kode ketika keluar dari Form Barang


Private Sub UserForm_QueryC10se ( Cancel As Integer ,
CloseMode As Integer )

wsDtbsBrg adalah worksheet DatabaseBarang


Set wsDtbsBrg = Sheets ( " DatabaseBarang " )
Jika data yang ditampilkan merupakan hasi1 penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

' Menghapus nil ai dalam range L3 : N 3


wsDtbsBrg . Range ( "L3 : N 3 " ) .
ClearContents

End Sub

4.2 Membuat Form Pemasok


Form Pemasok digunakan untuk menginput, mengedit, menghapus
atau mencari record data pemasok. Pemasok adalah orang atau
perusahaan tempat di mana kita membeli barang. Transaksi yang
terjadi dengan pemasok adalah transaksi pembelian. Kode Macro
dalam Form Pemasok tidak diberi komentar penjelasan, karena pada
prinsipnya mempunyai isi penjelasan yang hampir sama dengan Form
Barang.

160
1 . Pilih menu utama Insert > dserForm. Atur properti dserForm
melalui window Properties. Pilih menu utama yew > Properties
Window atau tekan tombol F4. dbah properti OserForm sebagai
berikut: Name = formPemasok, Caption = (kosong), Height — 384
dan Width = 276.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan Form
Pemasok terlihat seperti pada Gambar 4.6.

Gambar 4.6 Tampilan Form Pemasok.

3. Pengaturan properti pada objek kontrol selengkapnya dapat


dilihat pada tabel berikut:

Objek Setting Properti

161
Name = cmdTambah, Caption = Tambah, Height
= 24, Left = 6, Top = 204, Width = 60, Accelerator
CommandButton = T, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Tambah.gif, Tablndex = 7
Name = cmdEdit, Caption = Edit, Height = 24,
Left = 72, Top = 204, Width = 60, Accelerator = E,
PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Edit.gif,
CommandButton Tablndex = 8
Name = cmdHapus, Caption = Hapus, Height =
24, Left = 138, Top = 204, Width = 60,
CommandButton Accelerator = H, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Hapus.gif, Tablndex = 9
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 204, Top = 204, Width = 60,
CommandButton Accelerator = K, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 10
Name = cmdTutup, Caption = Tutup, Height = 24,
Left = 204, Top = 330, Width = 60, Accelerator =
CommandButton u, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Tutup.gif,
Tablndex = 20
Name = cmdCariKode, Caption = (kosong), Height
= 18, Left = 150, Top = 36, Width = 18,
CommandButton Accelerator = C, PicturePosition = 12 —
frmPicturePositionCenter, Picture =
Cari.gif, Tablndex = 15
Name = cmdCariNama, Caption = (kosong),
Height = 18, Left = 246, Top = 60, Width = 18,
Accelerator = N, PicturePosition = 12 —
CommandButton frmPicturePositionCenter, Picture = Cari.gif,

162
Tablndex = 18
Name = cmdSortAscending, Caption = (kosong),
Height = 18, Left = 174, Top = 36, Width = 18,
CommandButton Accelerator = A, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
Ascending.gif, Tablndex = 16
CommandButton Name = cmdSortDescendin , Ca tion = (koson ),

Height = 18, Left = 198, Top = 36, Width = 18


Accelerator = D, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
Descendin . if, Tablndex = 17
Name = cmdAwal, Caption = (kosong), Height =
18, Left = 6, Top = 180, Width = 18, Accelerator
= w, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Awal.gif,
CommandButton Tablndex = 12
Name = cmdAkhir, Caption = (kosong), Height =
18, Left = 198, Top = 180, Width = 18,
Accelerator = r, PicturePosition = 12 —
frmPicturePositionCenter, Picture =
CommandButton Akhir.gif, Tablndex = 13
Name = txtKode, Height = 18, Left = 72, Top =
36, Width = 72, Tablndex = 0, BackColor =
TextBox (abu-abu)
Name = txtNama, Height = 18, Left = 72, Top =
60, Width = 168, Tablndex = 1, BackColor =
TextBox (abu-abu)
Name = txtAlamat, Height = 18, Left = 72, Top =
84, Width = 192, Tablndex = 2, BackColor =
TextBox (abu-abu)
Name = b(tKota, Height = 18, Left = 72, Top =
108, Width = 72, Tablndex = 3, BackColor =
TextBox (abu-abu)
TextBox Name = txtKodePos, Height = 18, Left = 204, Top

163
= 108, Width = 60, , TextAlign = 3 —
fmTextAlignRight, Tablndex = 4, BackColor =
(abu-abu)
Name = txtKontak, Height = 18, Left = 72, Top =
132, Width = 72, Tablndex = 5, BackColor =
TextBox (abu-abu)
Name = txtTelp, Height = 18, Left = 204, Top —
132, Width = 60, TextAlign = 3 —
fmTextAlignRight,
Tablndex = 6, BackC010r =
TextBox (abuabu)
Name = txtHutang, Height = 18, Left = 72, Top —
156, Width = 72, TextAlign = 3 —
fmTextAlignRight,
TextBox BackC010r = (abu-abu)
Name = txtNoRecord, Height = 18, Left = 222,
TextBox To = 180, Width = 42, TextAlign = 3 —
fmTextAlignRight, Tablndex = 14, BackColor =
(abu-abu)
Name = scrollPemasok, Height = 18, Left = 30,
Top = 180, Width = 162, max = O, Min = O,
ScrollBar Tablndex = 11
Name = listCari, Height = 80, Left = 6, Top = 240,
ListBox Width = 258, BoundColumn = 3, ColumnCount =
3, Tablndex = 19
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Pemasok.gif,
Image
PictureAlignment = 2 — frmPictureAlignmentCenter,
PictureSizeMode = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Pemasok,
Height = 24, Left = 30, Top = 6, Width = 234, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackColor = (hijau muda),
Forecolor = (merah)
Name = lblKode, Caption = Kode Pemasok,
Label
Height = 12, Left = 6, To = 42, Width = 63

164
Name = lblNama, Caption = Nama Pemasok,
Label
Height = 12, Left = 6, To = 66, Width = 63
Name = lblAlamat, Caption = Alamat, Height = 12
Label
Left = 6, To = 90, Width = 63
Name = lblKota, Caption = Kota, Height = 12, Left
Label
= 6, To = 114, Width = 63
Name = lblKodePos, Caption = Kode Pos, Height
Label
= 12, Left = 150, To = 114, Width = 48
Name = lblKontak, Caption = Kontak, Height =
Label
12, Left = 6 To = 138, Width = 63
Name = lblTelp, Caption = Telepon/HP, Height =
Label
12, Left = 150, To = 138, Width = 48
Name = lblHutang, Caption = Hutang, Height =
Label
12, Left = 6 To = 162, Width = 63
Name = lblRecord, Caption = Record, Height =
Label
12, Left = 150, To = 162, Width = 114
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan kemudian
ketikkan kode Macro sebagai berikut:
Private Sub UserForm_Activate( )
Set wsDtbsPmsk = Sheets ( " DatabasePemasok TI )
jm1hRecord = wsDtbsPmsk. Cells (wsDtbsPmsk. Rows . Count
,
End(x1Up) . Offset (O, O) . Row
f ormPemasok . Height = 261

If wsDtbsPmsk. Range( "A3 " ) . Value = Then


Call DatabaseKosong
Exit Sub
End If

If wsDtbsPmsk . FilterMode
Then wsDtbsPmsk. ShowA11Data
End If

wsDtbsPmsk. Cells . Rows . Hidden = False


scroll Pemasok. Min = 1 scroll
Pemasok. Max = jm1hRecord scroll
Pemasok. Value= scroll Pemasok. Max

165
End Sub
Sub DatabaseKosong( )

MsgBox n Tidak ada data dalam database pemasok" ,


vbOKOn1y + vblnformation, "Database Pemasok Kosong "

scroll Pemasok. Min =


scroll Pemasok. Max

1b1Record. Caption = "Record " & scroll Pemasok.


Value & " dari & scroll Pemasok. Max
txtKode . Value =
txtNama . Value =
txtA1amat . Value =
txtKota . Value =
txtKodePos . Value
= txtKontak. Value
= txtTe1p . Value =
txtHutang . Value =
txtKode . SetFocus

End Sub

Private Sub txtKode_Enter( )


txtKode . BackC010r =

End Sub

Private Sub txtKode_Exit (ByVa1 Cancel As


MSForms . ReturnB001ean )

166
End
txtKode . BackC01 or =
&HCOCOCO Sub

Private Sub txtNama_Enter( )


txtNama . BackC010r =

End Sub

Private Sub txtNama_Exit (ByVa1 Cancel As


MSForms . ReturnB001ean ) txtNama .
BackC010r = &HCOCOCO
End Sub

Private Sub txtA1amat_Enter( )


txtA1amat . BackC010r =

End Sub

Private Sub txtA1amat_Exit (ByVa1 Cancel As


MSForms . ReturnB001ean ) txtA1amat .
BackC010r = &HCOCOCO
End Sub

Private Sub txtKota_Enter( )


txtKota .
BackC010r =
End Sub

Private Sub
txtKota_Exit (ByVal Cancel
As
MSForms .
ReturnB001ean )
txtKota.BackC010r
= &HCOCOCO

End Sub
Private Sub txtKodePos_Enter( )
txtKodePos . BackC010r =
End Sub

Private Sub txtKodePos_Exit (ByVa1 Cancel


As MSForms . ReturnB001ean )
txtKodePos . BackC010r = &HCOCOCO
End Sub

Private Sub txtKontak_Enter( )


txtKontak. BackC010r =
End Sub

167
End
Private Sub txtKontak_Exit (ByVa1 Cancel As
MSForms . ReturnB001ean ) txtKontak .
BackC010r = &HCOCOCO
End Sub

Private Sub txtTe1p_Enter( )


txtTe1p . BackC010r =

End Sub

Private Sub txtTe1p_Exit (ByVa1 Cancel As


MSForms . ReturnB001ean ) txtTe1p .
BackC010r = &HCOCOCO
Sub

Private Sub txtNoRecord_Enter( )


txtNoRecord. BackC010r =
End Sub

Private Sub txtNoRecord_Exit (ByVa1 Cancel


As MSForms . ReturnB001ean)
txtNoRecord. BackC010r = &HCOCOCO
txtNoRecord. Value =
End Sub

Private Sub txtKodePos_KeyPress (ByVa1 KeyAscii


As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( " O") To Asc( " 9" )
Case Else
KeyAsc11
End Select

End Sub
Private Sub txtTe1p_KeyPress
As MSForms . Returnlnteger
Select
Case

KeyAscii
Case Asc( " O") To Asc( " 9")
Case Else
KeyAsc11
End Select

168
End
End Sub

Private Sub txtNoRecord_KeyPress (ByVa1 KeyAscii


As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( " O") To Asc( " 9" )
Case Else
KeyAsc11
End Select

End Sub

Private Sub txtHutang_Change( ) txtHutang . Value


= Format ( txtHutang . Value ,
End Sub

Private Sub txtNoRecord_Change( )


Set wsDtbsPmsk = Sheets ( " DatabasePemasok"
If wsDtbsPmsk . FilterMode Then
wsDtbsPmsk. ShowA11Data
If

If txtNoRecord. Value = Then


Exit Sub
El self txtNoRecord. Value = O Or txtNoRecord.
Value > scroll Pemasok. Max Then
MsgBox "Nomor record yang Anda masukkan tidak ada"
, vbOKOn1y + vbCritica1, "No Record Tidak Ada "
txtNoRecord. Value = txtNoRecord. SetFocus Exit
Sub
Else scroll Pemasok. Value = txtNoRecord.
Value
End If

End Sub

Private Sub cmdSortAscending_C1ick( )

Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I

If wsDtbsPmsk .
FilterMode Then
DatabasePemasok " ) .
Call cmdTutup_C1ick
Sort
End If
, Orderl :
wsDtbsPmsk . Range ( " =x1Ascending ,
Keyl : — "Nama Pemasok"
Header : =x1Yes
scroll Pemasok . Max

169
End
scroll Pemasok. Value =

Call scrollPemasok_Change

End Sub

Private Sub cmdSortDescending_C1ick( )

Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I

If wsDtbsPmsk . FilterMode Then


Call cmdTutup_C1ick
End If

wsDtbsPmsk. Range ( "DatabasePemasok 'I ) . Sort


Keyl : — "Nama Pemasok" , Orderl : =x1Descending ,

Header : =x1Yes

scroll Pemasok. Value = scroll Pemasok. Max

Call scrollPemasok_Change

End Sub

Private Sub scrollPemasok_Change( )

170
Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I )
NoRecord = scroll Pemasok. Value + 2

If wsDtbsPmsk. Range( "A3 " ) . Value = Then


Call DatabaseKosong
Exit Sub
End If

If wsDtbsPmsk . FilterMode Then


wsDtbsPmsk. ShowA11Data
End If

With wsDtbsPmsk txtKode . Value = . Cells


(NoRecord, 1 ) . Value txtNama . Value = .
Cells (NoRecord, 2) . Value txtA1amat .
Value = . Cells (NoRecord, 3) . Value
txtKota . Value = . Cells (NoRecord, 4 ) .
Value txtKodePos . Value = . Cells
(NoRecord, 5) . Value txtKontak. Value = .
Cells (NoRecord, 6 ) . Value txtTe1p .
Value = . Cells (NoRecord, 7) . Value
txtHutang . Value = . Cells (NoRecord,
8 ) . Value
End With

1b1Record. Caption = "Record " &


scroll Pemasok. Value &
dari & scroll
End Sub

Private Sub
Pemasok .
cmdAwa1_C1ick( Max
( "DatabasePemasok" )
Set wsDtbsPmsk = Sheets

If wsDtbsPmsk. Range( "A3 " ) . Value = Then


Call DatabaseKosong
Exit Sub
End If

scroll Pemasok. Value = scroll Pemasok. Min

End Sub

Private Sub cmdAkhir_C1ick( )


Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I )

If wsDtbsPmsk. Range( "A3 " ) . Value = n n


Then Call DatabaseKosong
Exit Sub
End If

171
scroll Pemasok. Value = scroll Pemasok. Max

End Sub

Private Sub cmdTambah_C1ick( )


Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I )
RecordAkhir wsDtbsPmsk. Cells ( wsDtbsPmsk. Rows . Count ,
End(x1Up) . Offset (O, O) . Row

If txtKode . Value = Then


MsgBox "Kode pemasok belum diisi n , vbOKOn1y +
vbCritica1 , " Kode Pemasok Kosong" txtKode .
SetFocus Exit Sub
El self txtNama . Value = Then
MsgBox "Nama pemasok belum diisi n , vbOKOn1y +
vbCritica1 , "Nama Pemasok Kosong" txtNama .
SetFocus Exit Sub
El self txtA1amat . Value = Then
MsgBox "Alamat belum diisi " , vbOKOn1y
+ vbCritica1 , " Alamat Kosong" txtA1amat
. SetFocus Exit Sub
El self txtKota. Value = Then
, "Kota Kosong
MsgBox "Kota belum
diisi" vbOKOn1y +"
vbCritica1 txtKota .
SetFocus Exit Sub
El self txtKontak. Value =
MsgBox Then
"Kontak bel
um diisi
vbOKOn1y +
vbCritica1, "Kontak Kosong" txtKontak.
SetFocus Exit Sub
El self txtTe1p . Value
MsgBox "Telepon/HP belum diisi n , vbOKOn1y +
vbCritica1, " Telepon/HP Kosong" txtTe1p .
SetFocus Exit Sub
End If

If wsDtbsPmsk . FilterMode Then


wsDtbsPmsk. ShowA11Data
End If

For Cek = 1 To scrollPemasok.Max


If txtKode . Value = wsDtbsPmsk. Cells ( Cek + 2, 1 ) .

Value Then
MsgBox " Kode pemasok yang Anda masukkan sudah ada" ,

172
vbCritica1 + vbOKOn1y , Kode Pemasok Ganda
" txtKode . Value = txtKode . SetFocus Exit
Sub
End If
Next Cek

With wsDtbsPmsk

wsDtbsPmsk. Cells (RecordAkhir + 11 ) .


, txtKode . Value Value =
wsDtbsPmsk. Cells (RecordAkhir + 12) .
, txtNama. Value Value =
wsDtbsPmsk. Cells (RecordAkhir + 1 3) .
, txtA1amat . Value Value =
wsDtbsPmsk. Cells (RecordAkhir + 14 ) .
, txtKota. Value Value =
wsDtbsPmsk. Cells (RecordAkhir + 1 5) .
, txtKodePos . Value Value =
wsDtbsPmsk. Cells (RecordAkhir + 16 ) .
, txtKontak. Value Value =
wsDtbsPmsk. Cells (RecordAkhir + 17) .
, txtTe1p . Value Value =
wsDtbsPmsk. Cells (RecordAkhir + 1 8 ) .
, Value
End With
scroll Pemasok. Min
scroll Pemasok. Max = scroll Pemasok. Max
+ 1 scroll Pemasok. Value = scroll
Pemasok. Max
1b1Record. Caption = "Record " & scroll Pemasok.
Value & " dari & scroll Pemasok. Max
ThisWorkbook. Save

End Sub

Private Sub cmdEdi


t_Click( )
Set wsDtbsPmsk = Sheets
( "DatabasePemasok " )
NoRecord = scroll Pemasok . Value + 2

If wsDtbsPmsk. Range( "A3" ) .


Value = Call DatabaseKosong
Exit Sub
End If

If txtNama . Value = Then

173
MsgBox "Nama pemasok belum diisi n ,
vbOKOn1y + vbCritica1 , "Nama Pemasok
Kosong" txtNama . SetFocus Exit Sub
El self txtA1amat . Value = Then
MsgBox "Alamat belum diisi " ,
vbOKOn1y + vbCritica1 , " Alamat
Kosong" txtA1amat . SetFocus Exit Sub
El self txtKota. Value = Then
MsgBox "Kota belum diisi " ,
vbOKOn1y + vbCritica1, " Kota
Kosong " txtKota . SetFocus Exit
Sub
El self txtKontak. Value = Then
MsgBox "Kontak belum diisi " ,
vbOKOn1y + vbCritica1, " Kontak
Kosong" txtKontak. SetFocus Exit
Sub
El self txtTe1p . Value = Then
MsgBox "Telepon/HP belum diisi n ,
vbOKOn1y + vbCritica1, " Telepon/HP
Kosong" txtTe1p . SetFocus Exit Sub
End If

PesanEdit = MsgBox( "Record " & txtNama .


Value & akan diedit" , vbOKCance1 +
vblnformation,

"Edit Data" )

If PesanEdit = vbCance1
Then Exit Sub
El self PesanEdit = vbOK
Then With wsDtbsPmsk
. Cells 2) . Value = txtNama .
(NoRecord , Value 3) . Value =
. Cells txtA1amat . Value 4) .
(NoRecord , Value = txtKota . Value 5)
. Value = txtKodePos .
. Cells Value 6 ) . Value =
(NoRecord , txtKontak. Value
. Cells 7) . Value = txtTe1p .
(NoRecord , Value
. Cells
(NoRecord ,
. Cells
(NoRecord ,
End
With
End If

ThisWorkbook. Save

174
End Sub

Private Sub cmdHapus_C1ick( )

Set wsDtbsPmsk = Sheets ( "DatabasePemasok 'I )


Set wsHdrPb1n = Sheets ( " HeaderPembe1ian n )
NoRecord = scroll Pemasok . Value •+ 2
Set SelRecord = wsDtbsPmsk. Cells (NoRecord , 1)

If wsDtbsPmsk. Range( "A3 " ) . Value =


Then Call DatabaseKosong
Exit Sub
End If

If wsDtbsPmsk . FilterMode Then


wsDtbsPmsk. ShowA11Data
End If

Set rgKodePmsk = wsHdrPb1n. Range( n E3


wsHdrPb1n . Range( "E3 " ) . End
( xlDown) )

For Each SelCek In rgKodePmsk


If SelRecord. Value = SelCek. Value Then
PesanHapus —
MsgBox( "Pemasok terinput dalam
transaksi " vbOKOn1y, "Record Tidak
Dapat Dihapus " )
Exit Sub
End If
Next SelCek

PesanHapus = MsgBox( "Record " & txtNama .


Value & akan dihapus " , vbOKCance1 +
vblnformation , n Hapus Data" )

If PesanHapus = vbCance1
Then Exit Sub
El self PesanHapus = vbOK Then
Range ( SelRecord, SelRecord. Offset ( O , Delete
Shift : =x1Up
End If

scroll Pemasok. Max = scroll Pemasok. Max


— 1 scroll Pemasok. Value = scroll
Pemasok. Max
1b1Record. Caption = "Record " & scroll
Pemasok. Value & " dari & scroll Pemasok.
Max

ThisWorkbook. Save

175
End Sub

Private Sub ) cmdCariKode_C1ick(

Set wsDtbsPmsk = Sheets ( " DatabasePemasok " )


Set rgDtbsPmsk = wsDtbsPmsk . Range ( " DatabasePemasok
"
Set rgAdvFi1ter = wsDtbsPmsk .
Range( ''J2 :L3'l )
If wsDtbsPmsk.
Range( "A3 " ) .
Value = Call DatabaseKosong
Exit Sub
End If

If wsDtbsPmsk . FilterMode Then


wsDtbsPmsk. ShowA11Data
End If

If txtKode . Value = Then


MsgBox "Ketikkan kode pemasok yang akan dicari
" , vbOKOn1y + vblnformation, "Kode Pemasok
Kosong " txtKode . SetFocus
End If

With wsDtbsPmsk. Range( "KodePemasok 'I )


Set c = . Find( txtKode . Value, Lookln : =x1Va1ues
)
If c Is Nothing Then
MsgBox "Kode pemasok " & txtKode . Value &
tidak ada " , vbOKOn1y +
vblnformation,
Kode Pemasok Tidak Ada n
Call cmdAkhir_C1ick
Exit Sub
Else wsDtbsPmsk. Range( "J 3 " )
. Value = txtKode . Value
& " * "
wsDtbsPmsk. Range ( "K3 : L3 " ) .
ClearContents formPemasok. Height = 384
rgDtbsPmsk.AdvancedFi1ter Action :
=x1Fi1terInP1ace,

Cri teriaRange : =rgAdvFi1 ter


Call Tampi1kanSemua
End If
End With

176
If wsDtbsPmsk . FilterMode Then
wsDtbsPmsk. ShowA11Data
End If

End Sub

Sub Tampi1kanSemua( )

Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I

listCari . Clear

With listCari
. Addl tem
. List( . "
ListCount—1,
Record Pemasok
"
"
. List( .
ListCount — .
List( .
ListCount —
. ColumnWidths = 55 ; " & 135

End With
With wsDtbsPmsk
Set rgTampi1 = wsDtbsPmsk. Range( "KodePemasok"
SpecialCe11s ( xlCe11TypeVis ible )
For Each sTampi1 In rgTampi1
With listCari
. Addltem
. List( . ListCount—1, 0) = sTampi1. Row —
2
. List( . ListCount - 1 , 1 ) = sTampi1.
. List( . ListCount - 1 , Value

sTampi1. Offset ( O , 1 ) . Value


End With
Next sTampi1
End With

listCari . SetFocus

End Sub

Private Sub cmdCariNama_C1ick( )

Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I )


Set rgDtbsPmsk = wsDtbsPmsk. Range ( DatabasePemasok "
Set rgAdvFi1ter = wsDtbsPmsk. Range( "J 2 : L3 'I )

If wsDtbsPmsk. Range( "A3 " ) . Value =


n n Then Call DatabaseKosong

177
Exit Sub
End If

If wsDtbsPmsk .
FilterMode Then
wsDtbsPmsk. ShowA11Data
End If

If txtNama . Value = Then


MsgBox "Ketikkan nama pemasok yang akan dicari
" vbOKOn1y + vblnformation, "Nama Pemasok
Kosong " txtNama . SetFocus
End If

With wsDtbsPmsk. Range( "NamaPemasok 'I )


Set c = . Find( txtNama. Value, Lookln :
=x1Va1ues )
If c Is Nothing Then
MsgBox "Nama pemasok " & txtNama . Value &
tidak ada " , vbOKOn1y +
vblnformation,
"Nama Pemasok Tidak Ada n
Call cmdAkhir_C1ick
Exit Sub
Else wsDtbsPmsk. Range( "K3 " ) . Value = txtNama . Value
& " * 'Y wsDtbsPmsk . Range ( "J 3 , L3 formPemasok .
Height = 384 " ) .
rgDtbsPmsk.AdvancedFi1ter
ClearContents
Action : =x1Fi1terInP1ace,
Cri ter
Call Tampi1kanSemua
End If
End With
. FilterModeThe1T
If wsDtbsPmsk
wsDtbsPmsk. ShowA11Data
End If

End Sub

Private Sub listCari_C1ick( )


If listCari . Listlndex > O Then
scroll Pemasok. Value = listCari .
List ( listCari . List Index , 0 )
End If

End Sub

Private Sub cmdTutup_C1ick( )

178
Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I

If wsDtbsPmsk .
FilterMode Then
wsDtbsPmsk. ShowA11Data
End If

wsDtbsPmsk . Range( "J3 : L3 " ) . ClearContents

listCari . Clear

formPemasok . Height — 261

End Sub

Private Sub cmdKe1uar_C1ick( )


Unload Me

End Sub
Private Sub UserForm_QueryC10se ( Cancel As
Integer , CloseMode As Integer )

Set wsDtbsPmsk = Sheets ( "DatabasePemasok " )


If wsDtbsPmsk . FilterMode
Then wsDtbsPmsk . ShowA11
Data End If

wsDtbsPmsk. Range ( " J 3 : L3 " ) .


ClearContents
End Sub

4.3 Membuat Form Pelanggan


Form Pelanggan digunakan untuk menginput, mengedit,
menghapus atau mencari record data pelanggan. Pelanggan
adalah orang atau perusahaan yang membeli barang dari
perusahaan. Transaksi yang terjadi dengan pelanggan adalah
transaksi penjualan. Kode Macro dalam Form Pelanggan tidak
diberi komentar penjelasan, karena pada prinsipnya mempunyai
isi penjelasan yang hampir sama dengan Form Barang.
1. Pilih menu utama Insert > userForm. Atur properti
dserForm melalui window Properties. Pilih menu utama
yew > Properties Window atau tekan tombol F4. dbah

179
properti OserForm sebagai berikut: Name = formPelanggan,
Caption = (kosong), Height = 384 dan Width = 276.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Pelanggan akan terlihat menjadi seperti pada Gambar
4.7.

Gambar 4.7 Tampilan Form Pelanggan.

3. Pengaturan properti pada objek kontrol selengkapnya


dapat dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdTambah, Caption = Tambah, Height
= 24, Left = 6, Top = 204, Width = 60,
CommandButton Accelerator = T, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Tambah. if, Tablndex = 7

180
Name = cmdEdit, Caption = Edit, Height = 24,
Left = 72, Top = 204, Width = 60, Accelerator =
CommandButton E, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Edit.gif, Tablndex = 8
Name = cmdHapus, Caption = Hapus, Height =
24, Left = 138, Top = 204, Width = 60,
CommandButton Accelerator = H, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Hapus.gif, Tablndex = 9

Name = cmdKeluar, Caption = Keluar, Height =


24, Left = 204, Top = 204, Width = 60,
CommandButton Accelerator = K, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 10
Name = cmdTutup, Caption = Tutup, Height =
24, Left = 204, Top = 330, Width = 60,
Accelerator = u, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
CommandButton Tutup.gif, Tablndex = 20
Name = cmdCariKode, Caption = (kosong), Height
- 18, Left = 150, Top = 36, Width = 18,
CommandButton Accelerator = C, PicturePosition = 12 —
frmPicturePositionCenter, Picture =
Cari.gif, Tablndex = 15
Name = cmdCariNama, Caption = (kosong),
Height = 18, Left = 246, Top = 60, Width = 18,
Accelerator = N, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Cari.gif,
CommandButton Tablndex = 18

Name = cmdSortAscending, Caption = (kosong),


CommandButton Height = 18, Left = 174, Top = 36, Width = 18,
Accelerator = A, PicturePosition = 12 —

181
frmPicturePositionCenter, Picture = Sort
Ascendin . if, Tablndex = 16
Name = cmdSortDescending, Caption = (kosong),
Height = 18, Left = 198, Top = 36, Width = 18,
CommandButton Accelerator = D, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
Descending.gif, Tablndex = 17
Name = cmdAwal, Caption = (kosong), Height =
18, Left = 6, Top = 180, Width = 18, Accelerator
= w, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Awal.gif,
CommandButton Tablndex = 12
Name = cmdAkhir, Caption = (kosong), Height =
18, Left = 198, Top = 180, Width = 18,
CommandButton Accelerator = r, PicturePosition = 12 —
frmPicturePositionCenter, Picture =
Akhir.gif, Tablndex = 13
Name = txtKode, Height = 18, Left = 72, Top =
36, Width = 72, Tablndex = 0, BackColor =
TextBox (abu-abu)

Name = txtNama, Height = 18, Left = 72, Top =


60, Width = 168, Tablndex = 1, BackColor =
TextBox (abu-abu)
Name = txtAlamat, Height = 18, Left = 72, Top =
84, Width = 192, Tablndex = 2, BackColor —
TextBox (abu-abu)
Name = txtKota, Height —- 18, Left = 72, Top =
108, Width = 72, Tablndex = 3, BackColor =
TextBox (abu-abu)
Name = txtKodePos, Height = 18, Left = 204, Top
= 108, Width = 60, , = 3
fmTextAlignRight, Tablndex = 4, BackColor =
TextBox (abu-abu)

182
Name = txtKontak, Height = 18, Left = 72, Top —
132, Width = 72, Tablndex = 5, BackColor =
TextBox (abu-abu)
Name = txtTelp, Height = 18, Left = 204, Top =
132, Width = 60, TextAlign = 3 fmTextAlignRight,
Tablndex = 6, BackColor =
TextBox (abu-abu)
Name = txtPiutang, Height = 18, Left = 72, Top =
156, Width = 72, TextAlign = 3
fmTextAlignRight, BackColor =
TextBox (abu-abu)
Name = txtNoRecord, Height —- 18, Left = 222,
Top = 180, Width = 42, TextAlign = 3 —
fmTextAlignRight, Tablndex = 14, BackColor =
TextBox (abu-abu)
Name = scrollPelanggan, Height = 18, Left = 30,
Top = 180, Width = 162, max = O, Min = O,
ScrollBar Tablndex = 11
Name = listCari, Height = 80, Left = 6, Top =
240, Width = 258, BoundColumn = 3,
ListBox ColumnCount = 3, Tablndex = 19
Name = imgForm, Height = 24, Left = 6, Top — 6,
Width = 24, Picture = Pelanggan.gif,
PictureAlignment = 2 — frmPictureAlignmentCenter,
Image PictureSizeMode = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Pelanggan,
Height = 24, Left = 30, Top = 6, Width = 234, Font
= (Font = Tahoma; Font style = Bold; Size =
Label 16), BackC010r = (hi•au muda),
Forecolor = (merah)
Name = lblKode, Caption = Kode Pelanggan,
Label Hei ht = 12, Left = 6, To = 42, Width = 63
Name = lblNama, Caption = Nama Pelanggan,
Label
Hei ht = 12, Left = 6, To = 66, Width = 63
Name = lblAlamat, Caption = Alamat, Height =
Label
12, Left = 6, To = 90, Width = 63
Name = lblKota, Caption = Kota, Height = 12, Left
Label
= 6, To = 114, Width = 63

183
Name = lblKodePos, Caption = Kode Pos, Height
Label
= 12, Left = 150, To = 114, Width = 48
Name = lblKontak, Caption = Kontak, Height =
Label
12, Left = 6, To = 138, Width = 63
Name = lblTelp, Caption = Telepon/HP, Height =
Label
12, Left = 150, To = 138, Width = 48
Name = lblPiutang, Caption = Piutang, Height =
Label
12, Left = 6, To = 162, Width = 63
Name = lblRecord, Caption = Record, Height =
Label
12, Left = 150, To = 162, Width = 114
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
Private Sub )
UserForm_Activate(
( "DatabasePe1anggan" )
Set wsDtbsP1gn = Sheets Cells (wsDtbsP1gn.Rows . Count,
0 ) . Row — 2
jm1hRecord = wsDtbsP1gn.
End(x1Up) . Offset
( 0 , 261
formPe1anggan . Height3" ) . Value = Then

If wsDtbsP1gn . Range(
' A
t
Then
Call IData
DatabaseKosong
Exit Sub
End If
Hidden = False
If wsDtbsP1gn .
1
FilterMode
jm1hRecord
wsDtbsP1gn . ShowA1
End If

wsDtbsP1gn. Cells . Rows .


scroll Pelanggan . Min = scrollPe1anggan.Max =
scrollPe1anggan. Value = scrollPe1anggan . Max

End Sub

Sub DatabaseKosong( )

184
MsgBox "Tidak ada data dalam database pelanggan" , vbOKOn1y +
vblnformation , " Database Pelanggan Kosong "

scrollPe1anggan . Min = O scrollPe1anggan .


Max = O

IblRecord. Caption = " Record scrollPe1anggan. Value & I dari &


scrollPe1anggan . Max
txtKode . Value = txtNama . Value = txtA1amat
. Value = txtKota . Value = txtKodePos . Value
= txtKontak. Value =
txtTe1p . Value = txtPiutang .
Value = txtKode . SetFocus

End Sub )
Private Sub txtKode_Enter( txtKode .
BackC010r = &H80000005&
End Sub

Private Sub txtKode_Exit (ByVaL Cancer As


MSForms . ReturnB001ean ) txtKode . BackC010r
= &HCOCOCO
End Sub

Private Sub txtNama_Enter( ) txtNama .


BackC010r =
End Sub

Private Sub txtNama_Exit (ByVa1 Cancel As MSForms


. ReturnB001ean ) txtNama . BackC010r =
&HCOCOCO
End Sub

Private Sub txtA1amat_Enter( ) txtA1amat .


BackC010r =
End Sub

Private Sub txtA1amat_Exit (ByVa1 Cancel As MSForms .


ReturnB001ean ) txtA1amat . BackC010r =
&HCOCOCO
End Sub

Private Sub txtKota_Enter( )


txtKota . BackC010r
End Sub

Private Sub txtKota_Exit (ByVa1


Cancel As MSForms .

185
ReturnB001ean ) txtKota .
BackC010r = &HCOCOCO
End Sub

Private Sub txtKodePos_Enter( )


txtKodePos . BackC010r =

End Sub

Private Sub txtKodePos_Exit (ByVa1


Cancel As MSForms . ReturnB001ean )
txtKodePos . BackC010r = &HCOCOCO
End Sub

Private Sub txtKontak_Enter( )


txtKontak. BackC010r =

End Sub

Private Sub txtKontak_Exit (ByVa1


Cancel As MSForms
. ReturnB001ean )
txtKontak .
BackC010r =

End Sub
Private Sub
txtTe1p_Enter( txtTe1p .
BackC010r =
End Sub

Private Sub
. ReturnB001ean )
. BackC010r = &HCOCOCO

txtTe1p_Exit (ByVa1 Cancel As


MSForms txtTe1p
End Sub

Private Sub txtNoRecord_Enter ( )


txtNoRecord. BackC010r =

End Sub

Private Sub txtNoRecord_Exit (ByVa1


Cancel As MSForms .
ReturnB001ean) txtNoRecord.
BackC010r = &HCOCOCO txtNoRecord.
Value =
End Sub

186
Private Sub txtKodePos_KeyPress (ByVa1
KeyAscii As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub
Private Sub txtTe1p_KeyPress (ByVa1
KeyAscii As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub

Private Sub txtNoRecord_KeyPress (ByVa1


KeyAscii As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub

Private Sub
txtPiutang

Private Sub
Set wsDtbsP1gn

End Sub

If wsDtbsP1gn. FilterMode The1T


wsDtbsP1gn. ShowA11Data
End If

187
If txtNoRecord. Value = Then
Exit Sub
El self txtNoRecord. Value = O Or
txtNoRecord. Value > scroll Pelanggan .
Max Then
MsgBox "Nomor record yang Anda masukkan tidak
ada" , vbOKOn1y + vbCritica1, "No Record Tidak
Ada " txtNoRecord. Value = txtNoRecord.
SetFocus Exit Sub
Else scroll Pelanggan . Value =
txtNoRecord. Value
End If

End Sub

Private Sub cmdSortAscending_C1ick( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n

If wsDtbsP1gn . FilterMode Then


Call
cmdTutup_C1ick End If

wsDtbsP1gn. Range ( "DatabasePe1anggan n ) . Sort


Keyl: "Nama Pelanggan " , Orderl : =x1Ascending
, Header : =x1Yes

scroll Pelanggan . Value = scroll Pelanggan . Max


Call scrollPe1anggan_Change

End Sub

Private Sub cmdSortDescending_C1ick( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n

If wsDtbsP1gn . FilterMode Then


Call
cmdTutup_C1ick End If

wsDtbsP1gn. Range ( "DatabasePe1anggan n ) . Sort


Keyl: "Nama Pelanggan " , Orderl : =x1Descending
, Header : =x1Yes

scroll Pelanggan . Value =


scroll Pelanggan . Max

Call

scrollPe1anggan_Change

188
End Sub

Private Sub scrollPe1anggan_Change( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n

NoRecord = scroll Pelanggan. Value + 2

If wsDtbsP1gn.Range( "A3 " ) . Value =


Then Call DatabaseKosong
Exit Sub
End If

If wsDtbsP1gn . FilterMode Then


Call cmdTutup_C1ick
End If

With wsDtbsP1gn txtKode . Value = . Cells


(NoRecord, 1 ) . Value txtNama . Value
= . Cells (NoRecord, 2) . Value
txtA1amat . Value = . Cells (NoRecord,
3) . Value txtKota . Value = . Cells
(NoRecord, 4 ) . Value txtKodePos .
Value = . Cells (NoRecord, 5) . Value
txtKontak. Value = . Cells (NoRecord, 6
) . Value txtTe1p . Value = . Cells
(NoRecord, 7) . Value txtPiutang. Value
= . Cells (NoRecord, 8 ) . Value
End With
1b1Record. Caption = "Record " & scroll Pelanggan.
Value & dari & scroll Pelanggan. Max
End Sub

Private Sub cmdAwa1_C1ick( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n

If wsDtbsP1gn. Range( "A3 " ) . Value =


Then Call DatabaseKosong
Exit
Sub End If

scroll Pelanggan . Value = scroll Pelanggan . Min


End Sub

Private Sub cmdAkhir_C1ick( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n

If wsDtbsP1gn.Range( "A3" ) . Value


Call DatabaseKosong
Exit Sub End If

= Then
189
scroll Pelanggan . Value = scroll Pelanggan . Max

End Sub
Private Sub cmdTambah_C1ick( )
Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n )
RecordAkhir wsDtbsP1gn. Cells ( wsDtbsP1gn. Rows . Count
,
End(x1Up) . Offset (O, O) . Row

If txtKode . Value = Then


MsgBox "Kode pelanggan belum diisi n ,
vbOKOn1y + vbCritica1 , " Kode Pelanggan
Kosong" txtKode . SetFocus Exit Sub
El self txtNama. Value = Then
MsgBox "Nama pelanggan belum diisi n ,
vbOKOn1y + vbCritica1 , "Nama Pelanggan
Kosong" txtNama . SetFocus Exit Sub
El self txtA1amat . Value = Then
MsgBox "Alamat belum diisi " ,
vbOKOn1y + vbCritica1 , " Alamat
Kosong" txtA1amat . SetFocus Exit Sub
El self txtKota. Value = Then
MsgBox "Kota belum diisi " ,
vbOKOn1y + vbCritica1, " Kota
Kosong " txtKota . SetFocus Exit
Sub
El self txtKontak. Value = Then
MsgBox "Kontak belum diisi " ,
vbOKOn1y + vbCritica1, " Kontak
Kosong" txtKontak. SetFocus Exit Sub
El self txtTe1p . Value = Then
MsgBox "Telepon/HP belum diisi n ,
vbOKOn1y + vbCritica1, " Telepon/HP
Kosong" txtTe1p . SetFocus Exit Sub
End If

If wsDtbsP1gn . FilterMode Then


Call cmdTutup_C1ick
End If

For Cek = 1 To scrollPe1anggan.Max


If txtKode . Value = wsDtbsP1gn . Cells

190
(Cek + 2, 1) . Value
MsgBox"Kodepelanggan "
vbCritica1 Pelanggan Ganda
txtKode.Value =
txtKode. SetFocus
Exit Sub
End If
Next Cek
With wsDtbsP1gn
wsDtbsP1gn . Cells
( RecordAkhir txtKode .
1 , 1= ) . Value

Value
wsDtbsP1gn . Cells
( RecordAkhir txtNama.
1 , 2)
=
. Value

Value
wsDtbsP1gn . Cells
( RecordAkhir txtA1amat .
1 , 3)
=
. Value

Value
wsDtbsP1gn . Cells
( RecordAkhir txtKota.
1 , 4= ) . Value

Value
wsDtbsP1gn . Cells
( RecordAkhir txtKodePos .
1 , 5)
=
. Value

Value
wsDtbsP1gn . Cells
( RecordAkhir txtKontak.
1 , 6= ) . Value

Value
wsDtbsP1gn . Cells
( RecordAkhir txtTe1p .
1 , 7)
=
. Value

Value
wsDtbsP1gn . Cells ( RecordAkhir
1 ,8 ) . Value

End With
scroll Pelanggan . Min = 1 scroll
Pelanggan . Max = scroll Pelanggan . Max
+ 1 scroll Pelanggan . Value = scroll
Pelanggan . Max
1b1Record. Caption = "Record " & scroll Pelanggan.
Value & dari & scroll Pelanggan. Max
ThisWorkbook. Save

End Sub

Private Sub cmdEdit_C1ick( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n

NoRecord = scroll Pelanggan. Value + 2

If wsDtbsP1gn. Range( "A3 " ) . Value =


n n Then Call DatabaseKosong

191
Exit Sub
End If

If txtNama . Value = Then


MsgBox "Nama pelanggan belum diisi n ,
vbOKOn1y + vbCritica1 , "Nama Pelanggan
Kosong" txtNama . SetFocus Exit Sub
El self txtA1amat . Value = Then
MsgBox "Alamat belum diisi " ,
vbOKOn1y +
vbCritica1 , "
Alamat Kosong"
txtA1amat . Then diisi
SetFocus Exit Sub " ,
El self txtKota . Value
=
MsgBox "Kota bel um
vbOKOn1y + vbCritica1 ,
"Kota Kosong" txtKota . Set
Focus Exit Sub
El self txtKontak .
Value =
MsgBox "Kontak belum diisi " ,
vbOKOn1y + vbCritica1, " Kontak
Kosong" txtKontak . SetFocus Exit Sub
El self txtTe1p . Value = Then
MsgBox "Telepon/HP belum diisi n ,
vbOKOn1y + vbCritica1, " Telepon/HP
Kosong" txtTe1p . SetFocus Exit Sub
End If

PesanEdit = MsgBox( "Record " & txtNama .


Value

& akan diedit" , vbOKCance1 +


vblnformation,

"Edit Data" )

If PesanEdit = vbCance1
Then Exit Sub
El self PesanEdit = vbOK Then
With wsDtbsP1gn 2) . Value = txtNama .
. Cells Value
( NoRecord , 3) . Value = txtA1amat
. Cells . Value
( NoRecord , 4) . Value = txtKota .
. Cells Value
( NoRecord ,
5) . Value =
. Cells
txtKodePos . Value

192
( NoRecord ,
. Cells 6 ) . Value = txtKontak.
( NoRecord , Value
. Cells 7) . Value = txtTe1p .
( NoRecord , Value
End
With End
If

ThisWorkbook. Save

End Sub

Private Sub cmdHapus_C1ick( )


Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n )
Set wsHdrPj1n = Sheets( " HeaderPenjua1an n )
NoRecord = scroll Pelanggan. Value + 2
Set SelRecord = wsDtbsP1gn. Cells (NoRecord, 1 )

If wsDtbsP1gn.Range( "A3 " ) . Value =


Then Call DatabaseKosong
Exit Sub
End If

Set rgKodeP1gn = wsHdrPj1n.Range( n


E3 'I
wsHdrPj1n . Range( "E 3 " ) . End
( xlDown) )
For Each SelCek In rgKodeP1gn
If SelRecord. Value = SelCek. Value Then
PesanHapus —
MsgBox( "Pelanggan terinput dalam transaksi
" , vbOKOn1y, "Record Tidak Dapat Dihapus"
)
Exit Sub
End If
Next SelCek

PesanHapus = MsgBox( "Record " & txtNama. Value


& akan dihapus" , vbOKCance1 +
vblnformation , n Hapus Data" )

If PesanHapus = vbCance1
Then Exit Sub
El self PesanHapus = vbOK Then
Range ( SelRecord, SelRecord. Offset ( O ,
7) ) . Delete
Shift :
=x1Up End If

193
scroll Pelanggan . Max = scroll Pelanggan .
Max — 1 scroll Pelanggan . Value = scroll
Pelanggan . Max
1b1Record. Caption = "Record " & scroll Pelanggan.
Value & dari n & scroll Pelanggan. Max
ThisWorkbook. Save

End Sub

Private Sub cmdCariKode_C1ick( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n )


Set rgDtbsP1gn = wsDtbsP1gn. Range( "DatabasePe1anggan"
Set rgAdvFi1ter = wsDtbsP1gn. Range( "J2 : L3 'l )

If wsDtbsP1gn. Range( "A3 " ) . Value =


Then Call DatabaseKosong
Exit Sub
End If

If wsDtbsP1gn .
FilterMode Then
wsDtbsP1gn. ShowA11Data
End If

If txtKode . Value = Then


MsgBox "Ketikkan kode pelanggan yang akan dicari
" , vbOKOn1y + vblnformation, "Kode Pelanggan
Kosong " txtKode . SetFocus
End If

With wsDtbsP1gn. Range( "KodePe1anggan n )


Set c = . Find( txtKode . Value, Lookln :
=x1Va1ues ) If c Is Nothing Then
MsgBox "Kode pelanggan " & txtKode .
Value & tidak ada " , vbOKOn1y +
vblnformation, n
Kode Pelanggan
Tidak Ada
Call cmdAkhir Click
Exit
Sub
Else wsDtbsP1gn . Range( "J 3 " ) . Value = txtKode
. Value & wsDtbsP1gn . Range ( "K 3 : L3 " ) .
ClearContents formPe1anggan . Height = 384
rgDtbsP1gn.AdvancedFi1ter Action :
=x1Fi1terInP1ace,
iaRange : =rgAdvF i
Cri ter 1 ter 1kanSemua
Call Tampi
End If

194
End With

If wsDtbsP1gn . FilterMode Then


wsDtbsP1gn. ShowA11Data
End If

End Sub

Sub Tampi1kanSemua( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n


listCari . Clear . List( . ListCount
. ColumnWidths
With listCari End With
. Addl tem " Record "
. List( . " Kode "
ListCount "Nama Pelanggan "
. List( .
ListCount & 60 & n ; n & 135
With wsDtbsP1gn
Set rgTampi1 = wsDtbsP1gn. Range( "KodePe1anggan"

SpecialCe11s ( xlCe1 ITypeVi sible )


For Each sTampi1 In
rgTampi1 With listCari
. Addl tem
. List( . ListCount - 1 , 0 ) = sTampi1. Row

. List( . ListCount - 1 , 1) = sTampi1. Value


. List( . ListCount - 1 ,
sTampi1. Offset ( O , 1 ) . Value
End With
Next sTampi1
End With

listCari . SetFocus
End Sub

Private Sub cmdCariNama_C1ick( )


Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n )
Set rgDtbsP1gn = wsDtbsP1gn.

Range( "DatabasePe1anggan" Set rgAdvFi1ter =


wsDtbsP1gn.Range( "J 2 : 1-13 n
)

195
If wsDtbsP1gn .
Range( " A3 " ) .
Then
Value = Call

DatabaseKosong
Exit
Sub
End If

If wsDtbsP1gn .
FilterMode Then
wsDtbsP1gn . ShowA11Data
End If

If txtNama . Value = Then


MsgBox "Ketikkan nama pelanggan yang akan dicari
" , vbOKOn1y + vblnformation, "Nama Pelanggan
Kosong " txtNama . SetFocus
End If

With wsDtbsP1gn. Range( "NamaPe1anggan n )


Set c = . Find( txtNama. Value, Lookln :
=x1Va1ues ) If c Is Nothing Then
MsgBox "Nama pelanggan " & txtNama . Value &
tidak ada " , vbOKOn1y +
vblnformation,
"Nama Pelanggan Tidak Ada
Call cmdAkhir_C1ick
Exit Sub
Else wsDtbsP1gn. Range( "K3 " ) .
Value = txtNama. Value & " * "
wsDtbsP1gn . Range ( "J 3 , L3 " )
. ClearContents f ormPe1anggan .
Height = 384 rgDtbsP1gn.
AdvancedFi 1 ter
Action : =x1Fi1terInP1ace ,
Cri teriaRange : =rgAdvFi1 ter
Call Tampi1kanSemua
End If
End With

If wsDtbsP1gn . FilterMode Then


wsDtbsP1gn. ShowA11Data
End If

End Sub

Private Sub listCari_C1ick( )

196
If listCari . List Index > O Then
scroll Pelanggan . Value =
listCari . List ( listCari . List
Index , 0 )
End If

End Sub

Private Sub cmdTutup_C1ick( )

Set wsDtbsP1gn = Sheets ( "


DatabasePe1anggan n

If wsDtbsP1gn . FilterMode
wsDtbsP1gn . ShowA11Data
End If Then
" ) .
wsDtbsP1gn . Range( "J3 : ClearContents L3
listCari . Clear

formPe1anggan . Height = 261


End Sub

Private Sub cmdKe1uar_C1ick( )


Unload Me

End Sub

Private Sub UserForm_QueryC10se (Cancel As Integer ,


CloseMode As Integer )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n


)
If wsDtbsP1gn .
FilterMode Then
wsDtbsP1gn. ShowA11Data
End If

wsDtbsP1gn . Range( "J3 : L3 " ) . ClearContents


End Sub

4.4 Membuat Form Cari Barang


Ketika menggunakan Form Transaksi Pembelian, Form Transaksi
Penjualan atau Form Kasir, Anda dapat menggunakan
ComboBox Kode Barang untuk mencari dan memilih barang
yang akan diinput. Jika jenis barang dalam database sudah
banyak, penggunaan ComboBox Kode Barang tentu kurang

197
efektif. dntuk mengatasi masalah tersebut, Anda dapat
membuat Form Cari Barang.
1. Pilih menu utama Insert > dserForm. Atur properti
dserForm melalui window Properties. Pilih menu utama
yew > Properties Window atau tekan tombol F4. dbah
properti dserForm sebagai berikut: Name =
formCariBarang, Caption = (kosong), Height = 264 dan
Width = 432.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Cari Barang menjadi seperti pada Gambar 4.8.

Gambar 4.8 Tampilan Form Cari Barang

3. Pengaturan properti pada objek kontrol selengkapnya


dapat dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 360, Top = 210, Width = 60,
CommandButton Accelerator = K, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 5
Name = optKode, Caption = Kode Barang, Height
OptionButton = 18, Left = 6, Top = 216, Width = 66, Value =
True, Accelerator = B, Tablndex = 0

198
Name = optNama, Caption = Nama Barang,
OptionButton Height = 18, Left = 150, Top = 216, Width = 66,
Value = False, Accelerator = N, Tablndex = 2
Name = txtKode, Height = 18, Left = 78, Top =
TextBox 216, Width = 66, BackC010r =
(abu-abu) , Tablndex = 1, Locked = False
Name = txtNama, Height = 18, Left = 222, Top =
TextBox 216, Width = 132, BackC010r =
(abu-abu), Tablndex = 3, Locked = True
Name = listCari, Height = 168, Left = 6, Top = 36,
ListBox Width = 414, BoundColumn = 5, ColumnCount =
5, Tablndex = 4
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Cari.gif, PictureAlignment =
Image
2 — frmPictureAlignmentCenter, PictureSizeMode =
0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Cari Barang,
Height = 24, Left = 30, Top = 6, Width = 390, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackColor = (hijau muda),
Forecolor = (merah)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:

' Kode ketika OptionButton Kode Barang di-


klik

199
Private Sub optKode_C1ick( )
TextBox Nama Barang terkunci
txtNama . Locked = True
TextBox Nama Barang dikosongkan
txtNama . Value = o' TextBox Kode
Barang tidak terkunci txtKode .
Locked = False
' TextBox Kode Barang men jadi fokus
txtKode . SetFocus

End Sub

' Kode ketika OptionButton Nama Barang di-


klik u?rivate Sub optNama_C1ick( )
TextBox Kode Barang terkunci
txtKode . Locked = True
TextBox Kode Barang dikosongkan
txtKode . Value =
TextBox Nama Barang tidak terkunci
txtNama . Locked = False
TextBox Nama Barang men jadi fokus
txtNama . SetFocus

End Sub

Kode ketika masuk dalam TextBox Kode Barang


Private Sub txtKode_Enter( )
' Warna TextBox Kode Barang men jadi putih
txtKode . BackC010r =
End Sub

Kode ketika keluar dari TextBox Kode Barang


Private Sub txtKode_Exit (ByVa1 Cancel As
MSForms . ReturnB001 ean )
' Warna TextBox Kode Barang men jadi abu—
abu txtKode . BackC010r = &HCOCOCO

End Sub
Kode ketika masuk dalam TextBox Nama Barang
Private Sub txtNama_Enter( )
' Warna TextBox Nama Barang men jadi putih
txtNama . BackC010r = &H80000005&
End Sub

Kode ketika keluar dari TextBox Nama Barang


Private Sub txtNama_Exit (ByVa1 Cancel As
MSForms . ReturnB001 ean )
' Warna TextBox Nama Barang men jadi abu—abu
txtNama . BackC010r = &HCOCOCO
End Sub

Kode ketika nilai TextBox Kode Barang diubah

200
Private Sub txtKode_Change( )
wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n
) rgDtbsBrg adalah range DatabaseBarang
Set rgDtbsBrg = wsDtbsBrg. Range( " DatabaseBarang" )
rgAdvFi1ter adalah range L2 :M3 worksheet
DatabaseBarang
Set rgAdvFi1ter = wsDtbsBrg . Range( n 1.2 : M3 )
Jika database barang kosong
If wsDtbsBrg . Range( "A3" ) . Value = n n Then
' Memanggil Sub Procedure DatabaseKosong
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If
Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

Jika TextBox Kode Barang kosong


If txtKode . Value =
Then ' Menghapus
ListBox
listCari . Clear
' TextBox Kode Barang men jadi
fokus txtKode . SetFocus
Jika TextBox Kode Barang tidak kosong
Else
' Pencarian pada range KodeBarang
With wsDtbsBrg . Range( " KodeBarang n )
'c merupakan sel hasil pencarian
Set c = . Find( txtKode . Value, Lookln :
=x1Va1ues ) ' Jika tidak ada gel berisi kata
kunci kode barang
If c Is Nothing Then
' Menampilkan kotak pesan Kode Barang Tidak
Ada
MsgBox "Kode & txtKode.Va1ue & tidak
ada " vbOKOn1y + vblnformation ,

" Kode Barang


Tidak Ada ' Menghapus
ListBox listCari .
Clear
' TextBox Kode Barang dikosongkan
txtKode . Value = " "

201
' TextBox Kode Barang men jadi
fokus txtKode . SetFocus
' Keluar dari Sub Procedure
Exit Sub
' Jika ada sel berisi kata kunci kode
barang Else
' Memasukkan kode barang ke dalam sel L3
wsDtbsBrg. Range( "L3 " ) . Value =
"*" & txtKode.Va1ue & 'I * " '
Menghapus Nilai dalam range M3 : N3
wsDtbsBrg . Range ( "M3 : N3 ) .
ClearContents ' Penyaringan data
menggunakan Advanced Filter rgDtbsBrg.
AdvancedFi 1 ter
Action : =x1Fi1terInP1ace ,
Cri teriaRange : =rgAdvFi1 ter
' Memanggil Sub Procedure Tampi1kanSemua
Call Tampi1kanSemua
End If
End With
End If

Jika database barang kosong


If wsDtbsBrg . Range( "A3" ) . Value =
Then ' Memanggil Sub Procedure
DatabaseKosong
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

End Sub

Sub Procedure jika database barang


kosong Sub DatabaseKosong( )

Menampilkan kotak pesan Database Barang Kosong


MsgBox "Tidak ada data dalam database barang" ,
vbOKOn1y + vblnformation, " Database Barang
Kosong"

End Sub

Menampilkan barang hasil pencarian ke dalam ListBox


Sub Tampi1kanSemua( )
wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n
)
Menghapus ListBox
listCari . Clear

With listCari

202
' Menambahkanjudul kolom ListBox
. Addl tem
' Judul ListBox kolom per tama

. List ( • ListCount — 1 , 0 )"Kode Barang"


' Judul ListBox kolom kedua
. List ( • ListCount — 1 , "Nama Barang "
' Judul ListBox kolom ketiga
. List ( • ListCount — 1 , " Harga Beli "
' Judul ListBox kolom keempat
. List ( • ListCount — 1 , 3 ) = " Harga Jua1 "
' Judul ListBox kolom kelima
. List ( • ListCount 4) — " Stok 'l
' Lebar ma sing—masing kolom dalam ListBox
. ColumnWidths = 60 ; & 140 & ; & 75 &
Il Il n n

&
n
; n
& 75 & &55
End With
With wsDtbsBrg
' rgTampi1 adalah kode barang yang
ditampilkan Set rgTampi1 = wsDtbsBrg .
Range( "KodeBarang" ) .
SpecialCe11s ( xlCe1 ITypeVi sible )
' sTampi1 merupakan pengulangan tiap sel dalam
rgTampi1
For Each sTampi1 In
rgTampi1 With listCari
' Menambahkan item ke dalam ListBox
. Addltem sTampi1. Value
' Kode barang berdasarkan nilai dalam
sTampi1
. List( . ListCount = sTampi1. Value
'Nama barang 1 kolom di sebelah kanan
sTampi1
. List( . ListCount
sTampi1. Offset
(O, 1 ) . Value
' Harga beli 4 kolom di sebelah kanan
sTampi1
. List( . ListCount
Format( sTampi1. Offset (O, 4 ) .
Value,
' Harga jual diskon 7 kolom sTampi1
. List( . ListCount
Format( sTampi1. Offset (O, 7) .
Value, ' Stok 9 kolom di sebelah
kanan sTampi1
. List( . ListCount
sTampi1. Offset
(O, 9 ) . Value

203
End With
Next sTampi1
End With

End Sub

Kode ketika nilai TextBox Nama Barang diubah


Private Sub txtNama_Change( )
wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n
) rgDtbsBrg adalah range DatabaseBarang
Set rgDtbsBrg = wsDtbsBrg. Range( " DatabaseBarang" )
rgAdvFi1ter adalah range L2 :M3 worksheet
DatabaseBarang
Set rgAdvFi1ter = wsDtbsBrg . Ranget ( 'L2 : M3 ' )
t

If
Call DatabaseKosong
' Keluar dari Sub Procedure
Exit Sub
End If

Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

Jika TextBox Nama Barang kosong


If txtNama . Value =
Then ' Menghapus
ListBox
listCari . Clear
' TextBox Nama Barang men jadi
fokus txtNama . SetFocus
Jika TextBox Nama Barang tidak kosong
Else
' Pencarian pada range NamaBarang
With wsDtbsBrg . Range( "NamaBarang n )
'c merupakan sel hasil pencarian
Set c = . Find( txtNama. Value, Lookln :
=x1Va1ues ) ' Jika tidak ada gel berisi kata
kunci nama barang
If c Is Nothing Then
' Menampilkan kotak pesan Nama Barang Tidak
Ada
MsgBox "Nama " & txtNama . Value &

204
tidak ditemukan n , vbOKOn1y +
vblnformation, "Nama Barang Tidak
Ada " ' Menghapus ListBox listCari .
Clear
' TextBox Nama Barang dikosongkan
txtNama. Value =
' TextBox Nama Barang menjadi fokus
txtNama. SetFocus
' Keluar dari Sub Procedure
Exit Sub
' Jika ada sel berisi kata kunci nama
barang Else
' Memasukkan kode barang ke dalam sel M3
wsDtbsBrg. Range( "M3 " ) . Value =
"*" & txtNama.Va1ue & 'I * " '
Menghapus nilai dalam sel L3 dan N3
wsDtbsBrg . Range ( " 1.3 ) .
ClearContents ' Penyaringan data
menggunakan Advanced Filter rgDtbsBrg.
AdvancedFi 1 ter
Action : =x1Fi1terInP1ace ,
CriteriaRange : =rgAdvFi1ter
' Memanggil Sub Procedure Tampi1kanSemua
Call Tampi1kanSemua
End If
End With
End If

Jika data yang ditampilkan merupakan hasil penyaringan


If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data
dalam worksheet
DatabaseBarang
wsDtbsBrg . ShowA11Data
End If

End Sub

Kode ketika ListBox di—klik


Private Sub listCari_C1ick( )
Jika baris ListBox yang di—klik bukan baris judul kolom
If listCari . List Index > O Then
' Jika yang aktif adalah Form Transaksi Pembelian
If formTransaksiBe1i . Visible = True Then
' Memasukkan kode barang ke Form Transaksi
Pembelian formTransaksiBe1i . cmbKodeBarang .
Value = listCari . List( listCari . List
Index, O)
' Jika yang aktif adalah Form Transaksi Penjualan
El self formTransaksiJua1. Visible = True Then

205
' Memasukkan kode barang ke Form Transaksi
Penjualan formTransaksiJua1. cmbKodeBarang .
Value = listCari . List( listCari . List
Index, O)
End
If End
If

End Sub
' Kode ketika CommandButton Keluardi-klik
Private Sub cmdKe1uar_C1ick( )

' Keluar dari Form Cari Barang


Unload Me

End Sub

' Kode ketika keluar dari Form Cari Barang


Private Sub UserForm_QueryC10se ( Cancel As Integer ,
CloseMode As Integer )
wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " " )
DatabaseBarang
hasil penyaringan
' Jika data yang ditampilkan
merupakan worksheet DatabaseBarang
If wsDtbsBrg . FilterMode Then
Tampilkan seluruh data dalam
wsDtbsBrg . ShowA11Data End If

o
' Menghapus nil ai dalam range L3
: N3 wsDtbsBrg . Range ( "L3 : N3
" ) . ClearContents

End Sub

4.5 Membuat Form Cari Pemasok


Sama halnya dengan Form Cari Barang, Anda dapat membuat
Form Cari Pemasok untuk mempermudah pencarian pemasok
dalam Form Transaksi Pembelian. Kode Macro dalam Form Cari
Pemasok tidak diberi komentar penjelasan, karena pada
prinsipnya mempunyai isi penjelasan yang hampir sama dengan
Form Cari Barang.

206
1. Pilih menu utama Insert > userForm. Atur properti
dserForm melalui window Properties. Pilih menu utama
yew > Properties Window atau tekan tombol F4. dbah
properti OserForm sebagai berikut: Name =
formCariPemasok, Caption = (kosong), Height = 264 dan
Width = 432.
orm an emaso

Gambar 4.9 Tampilan Form Cari Pemasok

2. Tambahkan kontrol ke dalam OserForm hingga tampilan


Form Cari Pemasok akan menjadi seperti pada Gambar 4.9.
3. Pengaturan properti pada objek kontrol selengkapnya
dapat dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 360, Top = 210, Width = 60, Accelerator
= K, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
CommandButton Keluar.gif, Tablndex = 5
OptionButton Name = optKode, Caption = Kode Pemasok,
Height = 18, Left = 6, Top = 216, Width = 75,
Value = True, Accelerator = P, Tablndex = 0
Name = optNama, Caption = Nama Pemasok,
Height = 18, Left = 150, Top = 216, Width = 75,
OptionButton Value = False, Accelerator = N, Tablndex = 2

207
Name = txtKode, Height = 18, Left = 84, Top =
216, Width = 60, BackColor =
TextBox (abu-abu) , Tablndex = 1, Locked = False
Name = txtNama, Height = 18, Left = 228, Top =
216, Width = 126, BackC010r =
TextBox (abu-abu), Tablndex = 3, Locked = True
Name = listCari, Height = 168, Left = 6, Top = 36,
Width = 414, BoundColumn = 5, ColumnCount =
ListBox 5, Tablndex = 4
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Cari.gif, PictureAlignment =
2 — frmPictureAlignmentCenter, PictureSizeMode =
Image 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Cari Pemasok,
Height = 24, Left = 30, Top = 6, Width = 390, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackColor = (hijau muda),
Forecolor = (merah)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:

Private Sub optKode_C1ick( )

txtNama . Locked = True


txtNama .
txtKode . Locked =
txtKode . SetFocus

End Sub

208
Private Sub

optNama_C1ick( )

txtKode . Locked =
txtKode .
txtNama . Locked =
txtNama . SetFocus

End Sub

Private Sub txtKode_Enter( )


txtKode . BackC010r =

End Sub

Private Sub txtKode_Exit (ByVal Cancel


As MSForms . ReturnB001ean )
txtKode . BackC010r = &HCOCOCO
End Sub

Private Sub txtNama_Enter ( )


txtNama . BackC010r =

End Sub

Private Sub txtNama_Exit ( ByVal Cancel


As MSForms . ReturnB001ean )
txtNama . BackC010r = &HCOCOCO
End Sub

Private Sub txtKode_Change ( )

Set wsDtbsPmsk = Sheets ( " DatabasePemasok t' )


Set rgDtbsPmsk = wsDtbsPmsk . Range ( "
DatabasePemasok )
Set rgAdvFi1ter = wsDtbsPmsk . Range ( 't J 2 : L3
)
If wsDtbsPmsk. Range( "A3 " ) . Value =
Then Call DatabaseKosong
Exit Sub
End If

If wsDtbsPmsk .
FilterMode Then

209
wsDtbsPmsk. ShowA11Data
End If

If txtKode . Value =
Then listCari .
Clear txtKode .
SetFocus
Else
With wsDtbsPmsk. Range ( "KodePemasok 'I )
Set c = . Find( txtKode . Value, Lookln : =x1Va1ues )
If c Is Nothing Then
MsgBox "Kode " & txtKode . Value &
tidak ada " , vbOKOn1y +
vblnformation ,
"Kode Pemasok
Tidak Ada n listCari .
Clear txtKode . Value
= txtKode . SetFocus
Exit Sub
Else wsDtbsPmsk. Range( "J 3"
) . Value =
" & txtKode . Value & "*"
wsDtbsPmsk . Range ( "K 3 : L3 " )
. ClearContents rgDtbsPmsk .
AdvancedF i 1 t er
Action : =x1Fi1terInP1ace ,
Cr i
teriaRange : Tampi1kanSemua =rgAdvF i 1
ter
Call
End If
End With
End If

If wsDtbsPmsk . FilterMode Then


wsDtbsPmsk. ShowA11Data
End If

End Sub

Sub DatabaseKosong( )

MsgBox n Tidak ada data dalam database pemasok" ,


vbOKOn1y + vblnformation, " Database Pemasok
Kosong "

End Sub

Sub Tampi1kanSemua( )

210
Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I
listCari . Clear
With listCari
. Addl tem
. List( . ListCount
-1, " Kode Pemasok "

. List( . ListCount
-1, "Nama Pemasok "

. List( . ListCount
-1, " Kontak "

-1,
. List( . ListCount "Telp/HP'l

. List( . ListCount
-1, " Hutang "

. ColumnWidths = 70 & 125 & n ; n & 70 &


n
; n & 70 &
End With

With wsDtbsPmsk
Set rgTampi1 = wsDtbsPmsk. Range ( n KodePemasok "
SpecialCe11s ( xlCe1 ITypeVi sible )
For Each sTampi1 In rgTampi1
With listCari
. Addltem sTampi1. Value
. List( . ListCount - 1 , O ) = sTampi1. Value
. List( . ListCount - 1 ,
sTampi1. Offset ( O , 1 ) . Value
. List( . ListCount - 1 ,
sTampi1. Offset ( O , 5 ) . Value
. List( . ListCount—1,
sTampi1 . Offset (0 ,
. List( . ListCount — 1 ,
Format
( sTampi1.
Offset ( 0 , 7 ) . Value,

End With
Next sTampi1
End With

End Sub

Private Sub txtNama_Change ( )

Set wsDtbsPmsk = Sheets ( " DatabasePemasok 'I )


Set rgDtbsPmsk = wsDtbsPmsk. Range ( DatabasePemasok "
Set rgAdvFi1ter = wsDtbsPmsk.Range( "J 2 : L3 'I )

211
If wsDtbsPmsk. Range( "A3 " ) . Value = n n Then Call
DatabaseKosong
Exit Sub
End If

If wsDtbsPmsk . FilterMode Then


wsDtbsPmsk. ShowA11Data End If

If txtNama . Value = Then


listCari . Clear txtNama .
SetFocus
Else
With wsDtbsPmsk . Range ( "NamaPemasok 'I )
Set c = . Find( txtNama. Value, Lookln : =x1Va1ues )
If c Is Nothing Then
MsgBox "Nama " & txtNama . Value &

" tidak ditemukan" , vbOKOn1y +


vblnformation, " Nama Pemasok Tidak Ada
listCari . Clear txtNama . Value =
txtNama . Set Focus Exit Sub
Else wsDtbsPmsk . Range( "K 3 " ) .
Value =
& txtNama . Value & 1' * "
wsDtbsPmsk . Range ( "J 3 , L3 " ) .
ClearContents rgDtbsPmsk . AdvancedFi
1 t er
Action : =x1Fi1 terInP1ace ,
Cr i ter iaRange : =rgAdvF i 1 ter
Call Tampi1kanSemua
End If
End With
End If

If wsDtbsPmsk . FilterMode Then


wsDtbsPmsk . ShowA11 Data
End If

End Sub
Private Sub

212
If listCari . List Index > 0 Then
formTransaksiBe1i . cmbKodePemasok .
Value = listCari . List ( listCari .
List Index, 0 )
End If
End Sub

Private Sub cmdKe1uar_C1ick( )


Unload Me

End Sub

Private Sub UserForm_QueryC10se ( Cancel As Integer ,

CloseMode As Integer )
Set wsDtbsPmsk = Sheets ( "DatabasePemasok " )
If wsDtbsPmsk . FilterMode
Then wsDtbsPmsk . ShowA11
Data End If

wsDtbsPmsk. Range ( " J 3 : L3 " ) . ClearContents


End Sub

4.6 Membuat Form Transaksi Pembelian


Pembelian merupakan suatu transaksi di mana perusahaan
membutuhkan barang sebagai persediaan untuk dijual kembali.
Form Transaksi Pembelian digunakan untuk mencatat transaksi
pembelian yang dilakukan perusahaan.
Database yang dibutuhkan dalam Form Transaksi Pembelian
adalah database barang dan pemasok. Transaksi pembelian
tidak dapat dilakukan apabila database barang atau pemasok
kosong. Setelah terjadi transaksi pembelian, jumlah stok barang
dalam database barang (worksheet DatabaseBarang) akan
bertambah. Apabila dalam transaksi pembelian jumlah uang
yang dibayarkan perusahaan kurang, transaksi pembelian juga
dimasukkan ke dalam worksheet PembayaranHutang.
1. Pada jendela Visual Basic Editor, pilih menu utama Insert >
userForm. Atur properti dserForm melalui window
Properties. Pilih menu utama yew > Properties Window

213
atau tekan tombol F4. dbah properti OserForm sebagai
berikut: Name formTransaksiBeli, Caption — (kosong),
Height = 405 dan Width = 432.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Transaksi Pembelian menjadi seperti pada Gambar
4.10.

Gambar 4.10 Tampilan Form Transaksi Pembelian

3. Pengaturan properti pada objek kontrol selengkapnya


dapat dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdBaru, Caption = Baru, Height = 24,
Left = 6, Top = 348, Width = 42, Accelerator = B,
CommandButton Tablndex = 6, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackC010r =
(biru), Forecolor = ( utih)
CommandButton Name = cmdSimpan, Caption = Simpan, Height =
24, Left = 48, Top = 348, Width = 42, Accelerator
= S, Tablndex = 3, Font = (Font = Tahoma; Font
style = Bold; Size = 8), BackColor = biru ,

214
Forecolor =
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 90, Top = 348, Width = 42, Accelerator =
C, Tablndex = 4, Font = (Font = Tahoma; Font
style = Bold; Size = 8), BackColor =
CommandButton (biru), Forecolor =
Name = cmdBayar, Caption = Bayar, Height = 24,
Left = 132, Top = 348, Width = 42, Accelerator =
y, Tablndex = 5, Font = (Font = Tahoma; Font
style = Bold; Size = 8), BackColor =
CommandButton (biru), Forecolor =
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 222, Top = 348, Width = 42,
Accelerator = K, Tablndex = 7, Font = (Font =
Tahoma; Font style = Bold; Size = 8), BackColor =
CommandButton (biru), Forecolor =
Name = cmdlnput, Caption = Input, Height = 24,
Left = 276, Top = 30, Width = 42, Accelerator = I,
Tablndex = 2, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackColor =
CommandButton (biru), Forecolor = ( utih)
Name = cmdEdit, Caption = Edit, Height = 24,
Left = 318, Top = 30, Width = 42, Accelerator = E,
Tablndex = 3, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackColor =
CommandButton (biro, Forecolor =
Name = cmdHapus, Caption = Hapus, Height =
24, Left = 360, Top = 30, Width = 42, Accelerator
= H, Tablndex = 4, Font = (Font = Tahoma; Font s
CommandButton le = Bold; Size = 8), BackColor =

CommandButton (biru), Forecolor =


Name = cmdSortAscPemasok, Caption =
(kosong),
Height = 18, Left = 144, Top = 30, Width = 18,

215
PicturePosition = 12 — frmPicturePositionCenter,
Picture = Sort Ascending.gif, Tablndex = 1
Name = cmdSortDesPemasok, Caption =
(kosong), Height = 18, Left = 168, Top = 30,
Width = 18, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
CommandButton Descendin . if, Tablndex = 2
Name = cmdCariPemasok, Caption = (kosong),
Height = 18, Left = 192, Top = 30, Width = 18,
PicturePosition = 12 — frmPicturePositionCenter,
CommandButton Picture = Cari.gif, Tablndex = 3
Name = cmdSortAscBarang, Caption = (kosong),
Height = 18, Left = 336, Top = 6, Width = 18,
CommandButton
PicturePosition = 12 — frmPicturePositionCenter,
Picture = Sort Ascendin . if, Tablndex = 5
Name = cmdSortDesBarang, Caption = (kosong),
Height = 18, Left = 360, Top = 6, Width = 18,
PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
CommandButton Descendin . if, Tablndex = 6
Name = cmdCariBarang, Caption = (kosong),
Height = 18, Left = 384, Top = 6, Width = 18,
CommandButton
PicturePosition = 12 — frmPicturePositionCenter,
Picture = Cari.gif, Tablndex = 7
Name = frmTransaksi, Caption = Transaksi, Height
= 84, Left = 6, Top = 36, Width = 222, Tablndex
Frame
Name = frmBarang, Caption = Barang, Height =
Frame 66, Left = 6, Top = 126, Width = 414, Tablndex =
1
Name = txtNamaPemasok, Height = 18, Left = 72,
Top = 54, Width = 138, Locked = True, BackColor
TextBox = (abu-abu)
Name = txtNamaBarang, Height = 18, Left = 192,
Top = 6, Width = 138, Locked = True, BackColor
TextBox = (abu-abu)
TextBox Name = txtJumlah, Height = 18, Left = 72, Top =

216
30, Width = 60, TextAlign = 3 —
fmTextAlignRight, Tablndex = 1, BackC010r =
(abuabu)

Name = txtGrandTotal, Height = 18, Left = 318,


Top = 330, Width = 102, Locked = True, TextAlign
= 3 — fmTextAlignRight, BackColor =
TextBox (abu-abu), Value = O
Name = txtTotal, Height = 21, Left = 294, Top =
42, Width = 126, Font = (Font = Tahoma; Font
style = Bold; Size = 11), Locked = True, TextAlign =
3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
TextBox ( utih), Value = 0
Name = txtBayar, Height = 21, Left = 294, Top =
66, Width = 126, Font = (Font = Tahoma; Font
style = Bold; Size
= 11), TextAlign =
3— (putih),
fmTextAlignRight, BackColor (biru), Forecolor =
TextBox Tablndex = 2, Value = 0
Name = txtHutang, Height = 21, Left = 294, Top =
90, Width = 126, Font = (Font = Tahoma; Font
style = Bold; Size = 11), Locked = True, TextAlign =
TextBox 3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
( utih), Value = 0
Name = cmbNoFaktur, Height = 18, Left = 72,
Top = 6, Width = 66, RowSource =
NoFakturHdrPbln, Style = 2
fmStyleDropDownList, Tablndex = 4, BackColor =
ComboBox (abu-abu)
ComboBox Name = cmbKodePemasok, Height = 18, Left =
72, Top = 30, Width = 66, BoundColumn = 1,
ColumnCount = 2, ColumnWidths = 45 pt; 135
pt, ListWidth = 180 pt, Style = 2
fmStyleDropDownList, Tablndex = 0, BackColor
=

217
(abu-abu)
Name = cmbKodeBarang, Height = 18, Left = 72,
Top = 6, Width = 60, BoundColumn = 1,
ColumnCount = 2, ColumnWidths = 45 pt; 135
pt, ListWidth = 180 pt, Style = 2
fmStyleDropDownList, Tablndex = 0, BackColor
=
ComboBox (abu-abu)
Name = listBeli, Height = 123, Left = 6, Top =
198, Width = 414, BoundColumn = 6,
ListBox ColumnCount = 6, Tablndex = 20
Image Name = imgForm, Height = 24, Left = 6, To

Width = 24, Picture = Pembelian.gif,


PictureAlignment = 2 — frmPictureAlignmentCenter,
PictureSizeMode = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Transaksi
Pembelian, Height = 24, Left = 30, Top = 6, Width
= 390, Font = (Font = Tahoma; Font style = Bold;
Size = 16), BackC010r = (hijau muda), ForeColor =
Label (merah)
Name = lblTotal, Caption = Total, Height = 21,
Left = 234, Top = 42, Width = 60, Font = (Font =
Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
Label ( utih)
Name = lblBayar, Caption = Bayar, Height = 21,
Left = 234, Top = 66, Width = 60, Font = (Font =
Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
Label ( util.)
Name = lblHutang, Caption = Hutang, Height =
21, Left = 234, Top = 90, Width = 60, Font =
(Font = Tahoma; Font style = Bold; Size = 11),
BackC010r = (biru), Forecolor =
Label

218
Name = lblKetTanggal, Caption = Tanggal, Height
= 12, Left = 6, Top = 330, Width = 60, Font =
(Font = Tahoma; Font style = Bold; Size = 8),
BackColor = (merah), ForeColor =
Label ( utih)
Name = lblKetTempo, Caption = Jatuh Tempo,
Height = 12, Left = 138, Top = 330, Width = 60,
Font = (Font = Tahoma; Font style = Bold; Size =
8), BackC010r = (merah), Forecolor
Label = ( utih)
Name = lblTanggal, Caption = (kosong), Height =
12, Left = 66, Top = 330, Width = 66, Font =
(Font = Tahoma; Font style = Bold; Size = 8),
TextAlign = 3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
Label ( utih)
Name = lblTempo, Caption = (kosong), Height =
12, Left = 198, Top = 330, Width = 66, Font =
(Font = Tahoma; Font style = Bold; Size = 8),
Label TextAlign = 3 — fmTextAlignRight, BackColor =
(biru), Forecolor = (
utih)
Name = lblNoFaktur, Caption = No Faktur, Height
Label
= 12, Left = 6, To = 12, Width = 60
Name = lblKodePemasok, Caption = Kode
Label Pemasok, Height = 12, Left = 6, Top = 36, Width
= 60
Name = lblNamaPemasok, Caption = Nama
Label Pemasok, Height = 12, Left = 6, Top = 60, Width
= 60
Name = lblKodeBarang, Caption = Kode Barang,
Label
Hei ht = 12, Left = 6, To = 12, Width = 60
Name = lblJumlah, Caption = Jumlah, Height = 12,
Label
Left = 6, To = 36, Width = 60
Name = lblNamaBarang, Caption = Nama Barang,
Label
Height = 12, Left = 138, To = 12, Width = 54

219
Name = lblGrandTotal, Caption = Grand Total,
Label
Hei ht = 12, Left = 270, To = 336, Width = 48
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
' Kode ketika Form
Pembelian aktif
Transaksi )
kemudian ketikkan kode
Macro sebagai berikut: ItemPemasok

Private Sub
UserForm_Activate( ItemBarang

Memanggil Sub Procedure Call


ItemPemasok Judu11temTranskasi

' Memanggil Sub Procedure


Call ItemBarang

' Memanggil Sub Procedurekode pemasok dalam ComboBox


Call Judu11temTranskasi

End Sub DatabasePemasok


"DatabasePemasok " )
o
' Sub Procedure
Jika memasukan kosong
Sub
If ItemPemasok( ) . Value = Then
' Procedure
' wsDtbsPmsk
adalah worksheet
Set wsDtbsPmsk = Sheets (

database pemasok wsDtbsPmsk . Range( "A 3 " )


Keluar dari Sub
Exit Sub
Jika database pemasok tidak kosong
Else
' Menghapus ComboBox Kode Pemasok
cmbKodePemasok. Clear
' spemasok merupakan sel dalam range KodePemasok
For Each spemasok In wsDtbsPmsk. Range( n

KodePemasok " )
With Me . cmbKodePemasok
' Menambahkan item dalam ComboBox Kode
Pemasok
. Addltem spemasok. Value
' Memasukkan nama pemasok ke dalam ComboBox
. List( . ListCount —
spemasok. Offset (O, 1
) . Value
End With

220
Next spemasok
' Item yang ditampilkan adalah kode pemasok
teratas cmbKodePemasok. Value =
cmbKodePemasok. List ( O )
End If

End Sub

Sub Procedure untuk memasukan kode barang dalam


ComboBox
Sub ItemBarang( )
worksheet
wsDtbsBrg adalah DatabaseBarang ( "
DatabaseBarang " )
Set wsDtbsBrg = Sheets

Jika database barang kosong


If wsDtbsBrg . "A3 " ) . Value =Then
Range( ' Procedure
Keluar
dari Sub tidak kosong
Exit Sub
Jika database barang
Else
' Menghapus ComboBox Kode Barang
cmbKodeBarang. Clear
' sBarang merupakan sel dalam range KodeBarang
For Each sBarang In wsDtbsBrg . Range ( n
KodeBarang" )
With Me . cmbKodeBarang
' Menambahkan item dalam ComboBox Kode
Barang
. Addltem sBarang. Value
' Memasukkan nama barang ke dalam ComboBox
. List( . ListCount —
sBarang. Offset
(O, 1 ) . Value
End With
Next sBarang
' Item yang ditampilkan adalah kode barang
teratas cmbKodeBarang. Value = cmbKodeBarang
. List ( O )
End If

End Sub

Sub Procedure untuk membuat judul kolom


ListBox Sub Judu11temTranskasi ( )
Menghapus ListBox
listBe1i . Clear
With listBe1i

221
' Menambahkan item ListBox sebagai judul kolom
. Addl tem
' Judul ListBox kolom pertama
. List ( • ListCount - 1 ,
' Judul ListBox kolom kedua

. List ( • ListCount - 1 , " Kode "


' Judul ListBox kolom ketiga

. List ( • ListCount - 1 , "Nama Barang "


' Judul ListBox kolom keempat

. List ( • ListCount - 1 , — " Jumlah "


' Judul ListBox kolom kelima

. List ( • ListCount - 1 , " Harga "


' Judul ListBox kolom keenam

. List ( • ListCount - 1 , " Total


' Lebar ma sing—masing kolom dalam ListBox

. ColumnWidths =
20 &
End With

End Sub
masuk dalam ComboBox No Faktur
Kode cmbNoFaktur_Enter( ) ketika
ComboBox No Faktur men jadi put
ih . BackC010r
Private
Sub '
Warna =
keluar dari ComboBox No Faktur

cmbNoFaktur
End Sub

Kode ketika
Private Sub cmbNoFaktur_Exit ( ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna ComboBox No Faktur men jadi abu—abu
cmbNoFaktur . BackC010r- = &HCOCOCO
End Sub

Kode ketika masuk dalam ComboBox Kode Pemasok


Private Sub cmbKodePemasok_Enter( )
' Warna ComboBox Kode Pemasok menjadi putih
cmbKodePemasok. BackC010r = &H80000005&
End Sub

Kode ketika keluar dari ComboBox Kode Pemasok

222
Private Sub cmbKodePemasok_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean)
' Warna ComboBox Kode Pemasok menjadi abu—abu
cmbKodePemasok . BackC010r = &HCOCOCO
End Sub

Kode ketika masuk dalam ComboBox Kode Barang


Private Sub cmbKodeBarang_Enter( )
' Warna ComboBox Kode Barang menjadi putih
cmbKodeBarang. BackC010r = &H80000005&
End Sub
' Kode ketika keluar dari ComboBox Kode Barang
Private Sub cmbKodeBarang_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean)
' Warna ComboBox Kode Barang men jadi abu—abu
cmbKodeBarang . BackC010r = &HCOCOCO
End Sub

' Kode ketika masuk dalam TextBox Jumlah


Private Sub txtJum1ah_Enter( )
' Warna TextBox Jumlah men jadi putih
txtJum1ah . BackC010r =
End Sub

' Kode ketika keluar dari TextBox Jumlah


Private Sub txtJum1ah_Exit (ByVa1 Cancel As
MSForms . ReturnB001 ean )
' Warna TextBox Jumlah men jadi abu-abu
txtJum1ah . BackC010r = &HCOCOCO
End Sub

' Kode ketika masuk dalam TextBox Bayar


Private Sub txtBayar_Enter( ) '
TextBox Bayar dikosongkan
txtBayar . Value = "

End Sub TextBox


' Kode ketika keluar dariBayar
Private Sub txtBayar_Exit
( ByVa1 Cancel As MSForms .
ReturnB001ean )

' Jika TextBox Bayar- kosong atau- bernilai O


If txtBayar . Value = " Or txtBayar . Value
= O Then ' TextBox Bayar bernilai O
txtBayar . Value
' Jika TextBox Total kosong atau bernilai O
If txtTota1. Value = Or txtTota1. Value = O
Then ' TextBox Hutang bernilai O
txtHutang. Value
' Keluar dari Sub Procedure
Exit Sub

223
Else
' Nilai TextBox Hutang sama dengan TextBox
Total txtHutang. Value = txtTota1. Value
End
If End
If

End Sub

' Validasi pada TextBox Jumlah


Private Sub txtJum1ah_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )
' Validasi angka TextBox Jumlah
Select Case KeyAscii
Case Asc( "O" ) To Asc( "9
Case Else
KeyAsc11
End Select

End Sub

' Validasi pada TextBox Bayar


Private Sub txtBayar_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )
' Validasi angka TextBox Bayar
Select Case KeyAscii
Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub

' Kode ketika CommandButton Sort Ascending Pemasok di—


klik
Private Sub cmdSortAscPemasok_C1ick( )
worksheet DatabasePemasok
' wsDtbsPmsk adalah
Sheets ( " DatabasePemasok
Set wsDtbsPmsk =
" )
' Jika data yang ditampilkan merupakan hasil
penyaringan
If wsDtbsPmsk . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabasePemasok wsDtbsPmsk. ShowA11 Data
End If

' Mengurutkan Ascending database pemasok kolom Nama


Pemasok wsDtbsPmsk. Range ( "Databasepemasok n ) . Sort
Keyl : - n Nama Pemasok" , Orderl : =x1Ascending,
Header : =x1Yes

224
' Memanggil Sub Procedure ItemPemasok
Call ItemPemasok

End Sub

' Kode ketika CommandButton Sort Descending Pemasok di—


klik
Private Sub cmdSortDesPemasok_C1ick( )
' wsDtbsPmsk adalah worksheet DatabasePemasok
Set wsDtbsPmsk = Sheets ( " DatabasePemasok TI )
' Jika data yang ditampilkan merupakan hasil
penyaringan
If wsDtbsPmsk . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabasePemasok wsDtbsPmsk. ShowA11Data
End If

' Mengurutkan Descending database pemasok kolom Nama


Pemasok wsDtbsPmsk. Range ( "Databasepemasok n ) . Sort

Keyl : -"Nama Pemasok" , Orderl :


=x1Descending , Header : =x1Yes

' Memanggil Sub Procedure ItemPemasok


Call ItemPemasok

End Sub

' Kode ketika CommandButton Cari Pemasok di-klik


Private Sub cmdCariPemasok_C1ick( )
' Menampilkan Form Cari Pemasok
formCariPemasok. Show

End Sub

' Kode ketika CommandButton Sort Ascending Barang di—


klik
Private Sub cmdSortAscBarang_C1ick( )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' Jika data yang ditampilkan merupakan hasil
penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data
dalam worksheet
DatabaseBarang wsDtbsBrg
. ShowA11Data

End If

225
' Mengurutkan Ascending database barang kolom Nama
Barang wsDtbsBrg . Range ( " DatabaseBarang " ) . Sort
Key1 : "Nama Barang "

Orderl : =x1Ascending., Header ; =x1Yes


' Memanggil Sub Procedure ItemBarang
Call ItemBarang

End Sub

' Kode ketika CommandButton Sort Descending Barang di—


klik
Private Sub cmdSortDesBarang_C1ick( )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' Jika data yang ditampilkan merupakan hasil
penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

' Mengurutkan Descending database barang kolom Nama


Barang wsDtbsBrg . Range( "DatabaseBarang " ) . Sort
Keyl: "Nama Barang "

Orderl : =x1Descending, Header : =x1Yes

226
Memanggil ItemBarang
Call ItemBarang

End Sub
' Kode ketika CommandButton Cari
Barang di-klik
Private Sub cmdCariBarang_C1ick( )
' Menampilkan
Form Cari Barang
formCariBarang .
Show

End Sub

' Kode ketika item ComboBox


Kode Pemasok diubah Private
Sub
cmbKodePemasok_Change( )

' wsDtbsPmsk adalah worksheet


DatabasePemasok
Set wsDtbsPmsk = Sheets ( "
DatabasePemasok TI )
' rgKodePmsk adalah range
KodePemasok
Set rgKodePmsk = wsDtbsPmsk.
Range( n KodePemasok"

' Jika ComboBox Kode Pemasok


kosong
If cmbKodePemasok. Value = Then
' Keluar dari Sub Procedure
Exit Sub
' Jika database pemasok kosong
El self wsDtbsPmsk. Range( "A3" ) .
Value =
' Keluar dari Sub Procedure
Exit Sub
End If

' Pencarian kode


pemasokuberdasarkan nilai ComboBox
Set c = rgKodePmsk. Find
( cmbKodePemasok. Value
, Lookln : =x1Va1ues,
MatchCase : —False )
' Memasukkan nilai sel 1 kolom
dikanan sel hasil pencarian
txtNamaPemasok. Value = c. Offset
(O , 1 ) . Value

End Sub

227
' Sub Procedure
' Kode ketika item
ComboBox Kode Barang
diubah Private Sub
cmbKodeBarang_Change ( )

' wsDtbsBrg adalah worksheet


DatabaseBarang
Set wsDtbsBrg
= Sheets ( "
DatabaseBarang
n
) ' rgKodeBrg
adalah range
KodeBarang
Set rgKodeBrg = wsDtbsBrg . Range
( " KodeBarang
' Jika ComboBox Kode Barang kosong
If cmbKodeBarang. Value = Then
' Keluar dari Sub Procedure
Exit Sub
' Jika database barang kosong
El self wsDtbsBrg . Range( "A3
" ) . Value =
' Keluar dari Sub Procedure
Exit Sub
End If

' Pencarian kode barang


berdasarkan nilai ComboBox
Set c = rgKodeBrg.
Find( cmbKodeBarang . Value ,
Lookln : =x1Va1ues,
MatchCase : —False )
' Memasukkan nilai sel 1
kolom di kanan hasil
pencarian txtNamaBarang .
Value = c. Offset (O, 1 ) .
Value ' TextBox Jumlah
menjadi fokus txtJum1ah.
SetFocus

End Sub

' Kode ketika nilai TextBox Bayar


diubah
Private Sub txtBayar_Change( )

' Format TextBox Bayar


txtBayar . Value =
Format ( txtBayar .
Value, n # , )

228
' Jika TextBox Total kosong atau
bernilai O
If txtTota1. Value = Or
txtTota1. Value = O
Then ' TextBox
Hutang bernilai O
txtHutang .
Value
' Keluar dari
Sub Procedure
Exit Sub
' Jika TextBox Bayar kosong atau
bernilai O
El self txtBayar . Value = " Or
txtBayar . Value = O
Then
' Keluar dari Sub
Procedure
Exit Sub
' Jika nilai TextBox Bayar lebih
besar dari TextBox Total
El self CDb1 ( txtBayar .
Value) > CDb1 ( txt
Total . Value) ThentxtTota1. Value
' Nilai TextBox
dikosongkan
Bayar sama dengan
TextBox Total txtBayar .
Value = ' TextBox Hutang
txtHutang . Value — C) '
Keluar dari Sub Procedure
Exit Sub
Else
' Perhitungan nilai pada
TextBox Hutang txtHutang .
Value = Format (Abs ( CDb1
( txtBayar . Value) -
CDb1 ( txtTota1.
Value) ) ,
End If

End Sub

' Kode ketika


CommandButton Input
di-klik Private Sub
cmdInput_C1ick( )

' wsDtbsBrg adalah worksheet


DatabaseBarang
Set wsDtbsBrg
= Sheets ( "
DatabaseBarang

229
' Sub Procedure
n
) ' rgKodeBrg
adalah range
KodeBarang
Set rgKodeBrg = wsDtbsBrg . Range
( " KodeBarang
' Jika database barang kosong
If wsDtbsBrg . Range( "A3" ) .
Value =
Keluar dari
Exit Sub
End If

' Jika ComboBox No Faktur tidak


kosong
If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan
Transaksi Gagal
MsgBox n
Transaksi
tidak bisa
diproses n
,
vbOKOn1y +
vblnformation, n

Transaksi Gagal "


' Keluar dari Sub Procedure
Exit Sub
End If

' Jika TextBox Jumlah kosong atau


bernilai O
If txtJum1ah . Value = Or txtJum1ah
. Value = O Then
' Menampilkan kotak pesan
Jumlah Barang Kosong
MsgBox n Jumlah barang
belum diisi n
,
vbOKOn1y +
vbCritica1 , " Jumlah
Barang Kosong" '
TextBox Jumlah men
jadi fokus txtJum1ah.
SetFocus
' Keluar dari Sub Procedure
Exit Sub
End If

' Memeriksa apakah item barang


sudah ada dalam transaksi
For CekKodeBarang = I To
listBe1i . ListCount —
1 ' Jika item barang

230
sudah dimasukkan dalam
transaksi
If listBe1i .
List
( CekKodeB
arang, 1 )
=
cmbKodeBar
ang .
Value Then
' Menampilkan kotak pesan
Item Barang Sudah Masuk
MsgBox " Item " & listBe1i
. List ( CekKodeBarang, 2)
&

sudah ada , vbOKOn1y , n Item


Barang Sudah
Masuk
'
Lis
tBo
x
men
jad
i
fok
us
lis
tBe
1i
.
Set
Foc
us
'
Menyeleksi
item barang
dalam
ListBox
listBe1i .
Listlndex =
CekKodeBara
ng ' Keluar
dari Sub
Procedure
Exit Sub
End If
Next CekKodeBarang

231
' Sub Procedure
'c adalah sel hasil pencarian
berdasar ComboBox Kode Barang
Set c = rgKodeBrg.
Find( cmbKodeBarang .
Value , Lookln :
=x1Va1ues )

With listBe1i
' Memasukkan item ke dalam
ListBox
. Addl tem
' Pengisian kolom No
. List( . ListCount —
listBe1i . ListCount
' Pengisian kolom Kode
. List( . ListCount —
cmbKodeBarang. Value
' Pengisian kolom Nama Barang
. List( . ListCount —
txtNamaBarang. Value
' Pengisian kolom Jumlah
. List( . ListCount —
txtJum1ah. Value
' Pengisian kolom Harga
. List( . ListCount —
Format (c. Offset (O, 4) .
Value, n
' Pengisian kolom Total
. List( . ListCount —
( txtJum1ah. Value *
CDb1(c.Offset(O, 4) .
Value) ,
End With

Total Bell
For Total = 1 To listBe1i .
ListCount
Total Beli = Total Beli + CDb1
( listBe1i . List (Total ,
5) )

232
'
Pengisian TextBox Grand Total
txtGrandTota1.
'
Pengisian
txtTota1.
'
Value
Pengisian
txtHutang. Value
Next Total
' TextBox Jumlah
txtJum1ah.Value
' ComboBox Kode
cmbKodeBarang . SetFocus
' TextBox Bayar
txtBayar .Value
End Sub
' Kode ketika
CommandButton Edie
di—klik Private Sub
cmdEdit_C1ick( )

' wsDtbsBrg adalah worksheet


DatabaseBarang
Set wsDtbsBrg
= Sheets ( "
DatabaseBarang
n
) ' rgKodeBrg
adalah range
KodeBarang
Set rgKodeBrg = wsDtbsBrg . Range
( " KodeBarang
' Jika ComboBox No Faktur tidak
kosong
If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan
Transaksi Gagal
MsgBox n
Transaksi
tidak bisa
diproses n
,
vbOKOn1y +
vblnformation, n

Transaksi Gagal "


' Keluar dari Sub Procedure
Exit Sub
End If

' Jika TextBox Jumlah kosong atau


bernilai O
If txtJum1ah . Value = Or txtJum1ah
. Value = O Then

233
' Sub Procedure
' Menampilkan kotak pesan
Jumlah Barang Kosong
MsgBox n Jumlah barang
belum diisi n
,
vbOKOn1y + vbCritica1,
" Jumlah Barang
Kosong" ' TextBox
Jumlah men jadi fokus
txtJum1ah. SetFocus
Keluar dari
Exit Sub
End If

With listBe1i
' Jika indeks ListBox kurang
dari 1
If . List Index < 1 Then
' Menampilkan kotak pesan
Pilih Nomor Item
MsgBox "Pilih nomor
item yang akan diedit"
, vbOKOn1y +
vblnformation, n Pilih
Nomor Item " ' ListBox
menjadi fokus listBe1i
. SetFocus
' Keluar dari Sub
Procedure
Exit Sub
' Jika indeks ListBox lebih
dari 1
Else
'c adalah sel hasil
pencarian berdasar kode
barang
Set c = rgKodeBrg. Find( .
List( . List Index,
1 ) , Lookln :
=x1Va1ues )
' Pengisian kolom Jumlah
. List( . Listlndex, 3) =
txtJum1ah. Value
' Pengisian kolom Harga
Beli
. List( .
4) .
Listlndexo 4 )
Value,
— Format (c.
Offset (0,
' Pengisian
kolom Total

234
. List( . Listlndex, 5) =
Format ( txtJum1ah. Value
*
CDb1
(c.O
ffse
t(0,
4) .
Valu
e) ,
En
d If
End
With

Total
Bell

For Total = 1 To
listBe1i
ListCount=T
Total Beli = Total Beli +
CDb1 ( listBe1i . List
(Total , 5 ) ) ' Pengisian
TextBox Grand Total
txtGrandTota1. Value =
Format ( Total Bell , '
Pengisian TextBox Total
txtTota1. Value = Format
(Total Bell , '
Pengisian TextBox Hutang
txtHutang . Value = Format
(Total Bell ,
Next Total

' TextBox
Jumlah
dikosongka
n
txtJum1ah.
Value =
'
ComboBox
Kode
Barang
men jadi
fokus
cmbKodeBa
rang .
SetFocus
' TextBox
Bayar

235
' Sub Procedure
bernilai
O
txtBayar
. Value

End Sub

' Kode ketika


CommandButton Hapus
di-klik Private Sub
cmdHapus_C1ick( )

' wsDtbsBrg adalah worksheet


DatabaseBarang
Set wsDtbsBrg = Sheets ( "
DatabaseBarang n )
' rgKodeBrg adalah range
KodeBarang
Set rgKodeBrg = wsDtbsBrg . Range
( " KodeBarang
' Jika ComboBox No Faktur tidak
kosong
If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan
Transaksi Gagal
MsgBox n
Transaksi
tidak bisa
diproses n
,
vbOKOn1y +
vblnformation, n

Transaksi Gagal "


' Keluar dari Sub Procedure
Exit Sub
End If

' Jika indeks ListBox kurang dari


1
If listBe1i . Listlndex < 1 Then
' Menampilkan kotak pesan
Pilih Nomor Item
MsgBox n Pilih nomor
item yang akan
dihapus " ,
vbOKOn1y, "Pilih
Nomor Item n
'
ListBox menjadi
fokus listBe1i .
SetFocus
' Keluar dari Sub Procedure
Exit Sub
' Jika indeks ListBox lebih dari 1

236
Else
' Menghapus item
transaksi terpilih (listBe1i . List
dari ListBox Index)
listBe1i . Removeltem
transaksi baru
End If listBe1i.ListCount — 1
' Membuat nomor 0) = Noltem
item
For
N
o
l
t
e
m

T
o

l
i
s
t
B
e
1
i

L
i
s
t

(
N
o
l
t
e
m
,

Next Noltem

237
' Sub Procedure
' Jika sudah tidak ada item
transaksi pembelian
If
listB
e1i .
ListC
ount
= 1
Then
'
TextB
ox
Grand
Total
berni
lai O
txtGr
andTo
ta1.
Value
'
TextB
ox
Total
berni
lai O
txtTo
ta1.
Value

'
TextBox
Hutang
bernilai
O
txtHutan
g .
Value
' Jika masih ada item transaksi
pembelian
Else
Total Bell
For Total = 1 To listBe1i .
ListCount
Total Beli Total Beli +
CDb1 ( listBe1i . List ( Total ,
5) )
' Pengisian
TextBox Grand
Total
txtGrandTota1.
Value = Format (

238
Total Beli , '
Pengisian
TextBox Total
txtTota1. Value
= Format (Total
Bell , '
Pengisian
TextBox Hutang
txtHutang .
Value = Format (
Total Bell ,
Next Total
End If

239
'
TextBox Bayar bernilai txtBayar
. Value

End Sub

' Kode ketika CommandButton Baru di-klik


Private Sub cmdBaru_C1ick( )
' ComboBox No Faktur
dikosongkan cmbNoFaktur . Value
= ' TextBox Jumlah
dikosongkan txtJum1ah. Value =

' TextBox Grand Total bernilai


txtGrandTota1. Value '
TextBox Total bernilai O
txtTota1. Value ' TextBox
Bayar bernilai O txtBayar .
Value
' TextBox Hutang bernilai O
txtHutang . Value

' Memanggil Sub Procedure Judu11temTranskasi


Call Judu11temTranskasi

' ComboBox Kode Pemasok men jadi fokus


cmbKodePemasok. SetFocus

End Sub
' Kode ketika CommandButton Simpan di-klik
Private Sub cmdSimpan_C1ick( )

' wsTb1Bantu adalah worksheet Tabe1Bantu


Set wsTb1Bantu = Sheets ( "Tabe1Bantu" )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' wsDtbsPmsk adalah worksheet DatabasePemasok
Set wsDtbsPmsk = Sheets ( " DatabasePemasok TI )
' wsHdrPb1n adalah worksheet
HeaderPembe1ian Set wsHdrPb1n = Sheets ( "
HeaderPembe1ian n ) ' wsDt1Pb1n adalah
worksheet Detail Pembelian Set wsDt1Pb1n =
Sheets ( "Detail Pembelian n ) ' wsPemHut
adalah worksheet PembayaranHutang
Set wsPemHut = Sheets ( " PembayaranHutang n )
' Jika ComboBox Kode Pemasok kosong
If cmbKodePemasok. Value = Then
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika TextBox Bayar kosong atau bernilai O

240
If txtBayar . Value = Or txtBayar . Value = O Then
' Menampilkan kotak pesan Pembayaran Kosong
MsgBox n TextBox Bayar belum diisi n ,
vbOKOn1y + vblnformation, n Pembayaran Kosong" ' TextBox
Bayar menjadi fokus txtBayar . SetFocus
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika tidak ada transaksi pembelian


If listBe1i . ListCount < 2 Then
' Menampilkan kotak pesan Belum Ada Transaksi Pembelian
MsgBox n Tidak ada transaksi pembelian n , vbOKOn1y + vbCritica1, "Belum Ada
Transaksi Pembelian"
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika ComboBox No Faktur tidak kosong


If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan Transaksi Gagal
MsgBox n Transaksi tidak bisa diproses n , vbOKOn1y + vblnformation, n
Transaksi Gagal "
' Keluar dari Sub Procedure
Exit Sub
End If

' rgKodeBarang adalah range KodeBarang


Set rgKodeBarang = wsDtbsBrg . Range ( " KodeBarang ' rgKodePmsk
adalah range KodePemasok
Set rgKodePmsk = wsDtbsPmsk . Range ( "KodePemasok"

' Record terakhir header pembelian kolom A


RecordAkhirHdrPb1n = wsHdrPb1n . Cells ( wsHdrPb1n . Rows . Count ,
) .End(x1Up) . Offset ( 0 , 0 ) . Row

' Record terakhir detail pembelian kolom A


RecordAkhirDt1Pb1n = wsDt1Pb1n. Cells (wsDt1Pb1n. Rows . Count , ) .End(x1Up) .
Offset (O, O) . Row

' Record terakhir pembayaran hutang kolom A


RecordAkhirPemHut = wsPemHut . Cells (wsPemHut . Rows . Count ,
) .End(x1Up) . Offset (O, O) . Row

' Jika worksheet HeaderPembe1ian masih kosong


If wsHdrPb1n.Range( "A3" ) . Value = Then
' Memasukkan nilai 1 pada worksheet Tabe1Bantu sel A3 wsTb1Bantu. Range( "A3
" ) . Value = 1
' Nomor faktur dimulai dari TBOOOI

241
NoFaktur = "TBOOO" & 1
Else
' Nomor faktur berdasarkan nilai sel A3
NoFaktur = "TBOOO" & wsTb1Bantu.Range( n A3" ) . Value End If

' Masukkan no faktur di bawah record terakhir header pembelian


wsHdrPb1n . Cells (RecordAkhirHdrPb1n + 1, 1 ) . Value =
NoFaktur ' Masukkan tanggal pada record yang sama wsHdrPb1n
. Cells (RecordAkhirHdrPb1n + 1, 2 ) . Value = Date '
Masukkan tanggal jatuh tempo pada record yang sama
wsHdrPb1n . Cells (RecordAkhirHdrPb1n + 1, 3 ) . Value =
WorksheetFunction. EDate ( Date, 3 )
' Masukkan kode pemasok pada record yang sama
wsHdrPb1n . Cells (RecordAkhirHdrPb1n + 1, 4 ) .
Value = cmbKodePemasok. Value
' Masukkan total pembelian pada record yang sama
wsHdrPb1n. Cells (RecordAkhirHdrPb1n + 1, 5 ) . Value =

CDb1 ( txtTota1. Value )


' Masukkan pembayaran pada record yang sama
wsHdrPb1n. Cells (RecordAkhirHdrPb1n + 1, 6 ) .
Value =
CDb1 ( txtBayar . Value )
' Jika TextBox Hutang kosong atau bernilai O
If txtHutang . Value = Or txtHutang . Value = O Then '
Hutang pada record yang sama bernilai O wsHdrPb1n .
Cells (RecordAkhirHdrPb1n + 1, 7) . Value
Else
' Hutang pada record yang sama bernilai TextBox Hutang
wsHdrPb1n. Cells (RecordAkhirHdrPb1n + 1, 7) . Value =
CDb1 ( txtHutang. Value )

' Masukkan no faktur di bawah record terakhir


wsPemHut . Cells (RecordAkhirPemHut + 1 1 ) . Value
=
NoFaktur
' Masukkan tanggal pada record yang sama wsPemHut .
Cells (RecordAkhirPemHut + 1, 2 ) . Value = Date '
Masukkan kode pemasok pada record yang sama wsPemHut
. Cells (RecordAkhirPemHut + 1, 3 ) . Value =
cmbKodePemasok. Value
' Masukkan total pembelian pada record yang sama
wsPemHut . Cells (RecordAkhirPemHut + 1 4 ) . Value =

CDb1 ( txtTota1. Value )


' Masukkan pembayaran pada record yang sama
wsPemHut . Cells (RecordAkhirPemHut + 1, 5 ) .
Value =
CDb1 ( txtBayar . Value )

242
' Masukkan hutang (sisa) pada record yang sama
wsPemHut . Cells (RecordAkhirPemHut + 1, 6 ) . Value
=
CDb1 ( txtHutang. Value )
End If

' Struktur pengulangan berdasarkan jumlah item transaksi


For No = 1 To listBe1i . ListCount

' Pencarian kode barang berdasar kode barang dalam


ListBox
Set c = rgKodeBarang. Find( listBe1i . List (No, 1 ) ,
Lookln : =x1Va1ues )
' Jumlah barang dikurangi jumlah yang dibeli
c. Offset ( O, 9 ) . Value = c. Offset ( O , 9 ) .
Value + listBe1i . List (No, 3)

'No faktur di bawah record terakhir detail pembelian


wsDt1Pb1n. Cells (RecordAkhirDt1Pb1n + No, 1 ) . Value =

NoFaktur
' Masukkan no urut item transaksi pada record yang
sama wsDt1Pb1n. Cells (RecordAkhirDt1Pb1n + No, 2) .
Value = listBe1i . List (No, O)
' Masukkan kode barang pada record yang sama
wsDt1Pb1n. Cells (RecordAkhirDt1Pb1n + No, 3) .
Value = listBe1i . List (No, 1)
' Masukkan nama barang pada record yang sama
wsDt1Pb1n. Cells (RecordAkhirDt1Pb1n + No, 4 ) .
Value = listBe1i . List (No, 2)
' Masukkan jumlah barang pada record yang sama
wsDt1Pb1n. Cells (RecordAkhirDt1Pb1n + No, 5) .
Value = listBe1i . List (No, 3)
' Masukkan harga beli pada record yang sama
wsDt1Pb1n. Cells (RecordAkhirDt1Pb1n + No, 6 ) .
Value =
CDb1( listBe1i . List (No, 4) )
' Masukkan total pembelian pada record yang sama
wsDt1Pb1n. Cells (RecordAkhirDt1Pb1n + No, 7) . Value =

CDb1( listBe1i . List (No, 5)


) Next No

' Pencarian sel berisi kode pemasok


Set selHutang = rgKodePmsk. Find( cmbKodePemasok.
Value , Lookln : =x1Va1ues )

' Jika TextBox Hutang kosong atau bernilai 0


If txtHutang . Value = " " Or txtHutang .
Value = 0 Then ' Hutang pemasok tetap
selHutang . Offset ( 0, 7 ) . Value —
selHutang. Offset (0, 7 ) . Value + 0

243
' Jika TextBox Hutang tidak kosong atau tidak bernilai
O Else
' Hutang pemasok ditambah sesuai nil ai TextBox
Hutang selHutang . Offset (O , 7 ) . Value =
selHutang. Offset (O, 7) . Value +
CDb1 ( txtHutang. Value)
End If

' ComboBox No Faktur dikosongkan


cmbNoFaktur . Value =
' TextBox Jumlah dikosongkan
txtJum1ah. Value =
' TextBox Grand Total
bernilai O txtGrandTota1.
Value ' TextBox Total
bernilai O txtTota1. Value
' TextBox Bayar
bernilai O txtBayar .
Value
' TextBox Hutang bernilai O
txtHutang . Value

' Nomor Faktur pada worksheet Tabe1Bantu


ditambah 1 wsTb1Bantu. Range( "A3" ) . Value
= wsTb1Bantu. Range( "A3 " ) . Value + 1
' Memanggil Sub Procedure Judu11temTranskasi
Call Judu11temTranskasi

' Menyimpan workbook aplikasi gudang


ThisWorkbook. Save

End Sub

' Kode ketika CommandButton Cetak di-klik


Private Sub cmdCetak_C1ick( )

' wsTb1Bantu adalah worksheet Tabe1Bantu


Set wsTb1Bantu = Sheets ( " Tabe1Bantu n )
' wsHdrPb1n adalah worksheet HeaderPembe1ian
Set wsHdrPb1n = Sheets ( "
HeaderPembe1ian n ) ' wsDt1Pb1n adalah
worksheet Detail Pembelian
Set wsDt1Pb1n = Sheets ( "Detail Pembelian n )
' wsCetak adalah worksheet Cetak
Set wsCetak = Sheets( "Cetak" )
' Jika ComboBox Kode Pemasok kosong
If cmbKodePemasok. Value = Then
' Keluar dari Sub Procedure
Exit Sub
End If

244
' Jika tidak ada transaksi pembelian
If listBe1i . ListCount < 2
Then
' Menampilkan kotak pesan Bel um Ada Transaksi
Pembelian
MsgBox n Tidak ada transaksi pembelian n , vbOKOn1y +
vbCritica 1, Bel um Ada
Transaksi Sub Procedure Pembelian"
' Keluar dari
Exit Sub
End If

' Menghapus seluruh sel worksheet Cetak


wsCetak . Cells . Clear

' Menentukan orientasi kertas


wsCetak. PageSetup . Orientation =
xlPortrait ' Menentukan margin kiri
kertas wsCetak. PageSetup .
LeftMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin kanan kertas
wsCetak. PageSetup . RightMargin
=
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin atas kertas
wsCetak. PageSetup . TopMargin =

Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup . BottomMargin
=
Application.
CentimetersToPoints ( 2 ) '
Menentukan ukuran pencetakan
wsCetak. PageSetup . Zoom = 100
' Menentukan area cetak
wsCetak. PageSetup . PrintArea = l' $A: $F TI

' Menentukan lebar kolom A worksheet Cetak


wsCetak. Columns( "A: A" ) . ColumnWidth = 10 '
Memasukkan teks FAKTUR PEMBELIAN pada sel Al
wsCetak.Range( "Al" ) . Value = FAKTUR
PEMBELIAN" ' Format font tebal (bold) pada sel
Al worksheet Cetak wsCetak.Range( "Al" ) .
Font . Bold = True
' Ukuran font (12 ) pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Font. Size = 12

245
' Teks pada range Al : FI diformat rata tengah
wsCetak . Range ( "Al : FI " ) .
HorizontalA1ignment = xlCenter ' Menggabungkan
range Al : FI wsCetak . Range ( "Al : FI " ) .
Merge
' Menentukan tinggi baris ke-2 worksheet Cetak
wsCetak. Rows ( " 2 : 2" ) . RowHeight
' Memasukkan teks No Faktur pada sel A3 worksheet Cetak
wsCetak.Range( "A3" ) . Value = "No Faktur n
' Jika database pembelian kosong
If wsHdrPb1n.Range( "A3" ) . Value = n n Then
' Memasukkan no faktur pada sel B9 worksheet Cetak
wsCetak.Range( "B3" ) . Value = "TBOOO TI & 1
' Jika database pembelian tidak kosong
Else
' Jika ComboBox No Faktur kosong
If cmbNoFaktur . Value — Then
' Memasukkan no faktur berdasarkan isi
sel A3 wsCetak.Range( "B3" ) .
Value = "TBOOO" & wsTb1Bantu .
Range( "A3 t' ) . Value
Else
' Memasukkan no faktur berdasar ComboBox No
Faktur wsCetak.Range( "B3" ) . Value =
cmbNoFaktur . Value
End If
End If
' Memasukkan teks Tanggal pada sel A4 worksheet Cetak
wsCetak.Range( "A4" ) . Value = " Tanggal n
' Memasukkan tanggal hari ini pada sel B4 worksheet
Cetak wsCetak.Range( "B4" ) . Value = Date
' Memasukkan teks Pemasok pada sel A5 worksheet Cetak
wsCetak.Range( "A5" ) . Value = " Pemasok n
' Memasukkan pemasok pada sel B5 worksheet
Cetak wsCetak. Range( "B5" ) . Value =
txtNamaPemasok. Value ' Memasukkan teks No Item
pada sel A6 worksheet Cetak wsCetak.Range( "A6"
) . Value = "No Item n
' Memasukkan teks Kode pada sel B6 worksheet Cetak
wsCetak.Range( "B6" ) . Value = " Kode n
' Memasukkan teks Nama Barang pada sel C6 worksheet
Cetak wsCetak.Range( "C6" ) . Value = "Nama Barang
' Memasukkan teks Jumlah pada sel D6 worksheet
Cetak wsCetak. Range ( "D6" ) . Value = "
Jumlah ' Memasukkan teks Harga pada sel E6
worksheet Cetak wsCetak.Range( "E6" ) . Value
= " Harga n ' Memasukkan teks Total pada sel F6
worksheet Cetak wsCetak.Range( "F6" ) . Value
= " Total n
' Menentukan lebar kolom B worksheet Cetak

246
wsCetak . Columns ( "B : B" ) . ColumnWidth = 10 '
Menentukan lebar kolom C worksheet Cetak wsCetak .
Columns ( "C: C" ) . ColumnWidth = 20 ' Menentukan
lebar kolom D worksheet Cetak wsCetak . Columns
( "D : D" ) . ColumnWidth = 12 ' Menentukan lebar
kolom E worksheet Cetak wsCetak . Columns ( "E :
E" ) . ColumnWidth = 14 ' Menentukan lebar kolom F
worksheet Cetak wsCetak . Columns ( "F : F" ) .
ColumnWidth = 16 ' Teks pada range A6 : F6
diformat rata tengah wsCetak . Range( "A6 :
F6" ) . HorizontalA1ignment = xlCenter ' Sel pada
range A6 : F6 bagian atas diberi border wsCetak .
Range( "A6 : F6" ) . Borders (xlEdgeTop) .
LineSty1e = xlContinuous
' Range A6 : F6 bagian bawah diberi border garis
ganda wsCetak . Range( "A6 : F6" ) . Borders
(xlEdgeBottom) . LineSty1e = xlDoub1e

' Struktur pengulangan berdasarkan jumlah item transaksi


For No = 1 To listBe1i . ListCount
' Masukkan no item transaksi setelah baris ke—13
wsCetak.Ce11s(6 + No, 1) . Value = listBe1i . List
(No, O) ' Format rata tengah pada kolom No Item
wsCetak. Cells (6 + No, 1 ) .
HorizontalAlignment = xlCenter
' Masukkan kode barang pada record yang sama
wsCetak.Ce11s(6 + No, 2) .Va1ue = listBe1i.List 1)
(No, ' Masukkan nama barang pada record yang
sama wsCetak.Ce11s(6 + No, 3) . Value = 2)
listBe1i.List (No, ' Masukkan jumlah barang pada
record yang sama wsCetak. Cells (6 + No, 4) . 3)
Value = listBe1i . List (No ,
' Masukkan harga beli pada record yang sama
wsCetak. Cells (6 + No, 5) . Value =
CDb1( listBe1i.List (No, 4 ) ) '
Format data pada kolom Harga wsCetak
. Cells ( 6 No „ 5 ) .NumberFormat.I

' Masukkan total transaksi pada record yang sama


wsCetak.Ce11s(6 + No, 6 ) . Value =
CDb1 ( listBe1i . List (No, 5) )
' Format data pada kolom Total
wsCetak. Cells (6 + No, 6 ) .
NumberFormat =

Next No

' Struktur pengulangan untuk menambahkan border


For Border = 1 To 6

247
' Border baris terakhir tabel faktur pembelian
wsCetak. Cells (listBe1i . ListCount + 5 ,
Border) .
Borders ( xlEdgeBottom) . LineSty1e =
xlDoub1e Next Border

With listBe1i
' Menambahkan teks Total wsCetak. Cells( .
ListCount + 6, 5 ) . Value = "Total "
' Menambahkan teks Bayar
wsCetak. Cells( . ListCount + 7, 5 ) . Value
= " Bayar " ' Menambahkan teks Hutang
wsCetak. Cells( . ListCount + 8, 5 ) . Value
= " Hutang " ' Memasukkan nilai total
transaksi pembelian wsCetak. Cells( .
ListCount + 6, 6 ) . Value =
CDb1 ( txtTota1. Value )
' Format data nil ai total transaksi pembelian
wsCetak. Cells( . ListCount + 6, 6 ) .
NumberFormat =

' Memasukkan nilai total pembayaran


wsCetak. Cells( . ListCount + 7,
6 ) . Value =
CDb1 ( txtBayar . Value )
' Format data nil ai total pembayaran
wsCetak. Cells( . ListCount + 7, 6 ) .
NumberFormat =

' Jika TextBox Hutang kosong atau bernilai O


If txtHutang. Value = Or txtHutang . Value = O
Then ' Memasukkan nilai hutang = O
wsCetak. Cells( . ListCount + 8, 6 ) .
Value
Else
' Nilai hutang berdasarkan TextBox Hutang
wsCetak. Cells( . ListCount + 8, 6 ) .
Value =
CDb1 ( txtHutang. Value )

'
Format
wsCetak. En
d If
' Menambahkan border di bawah teks bayar wsCetak .
Cells( . ListCount + 7, 5 ) . Borders
( xlEdgeBottom) .

LineSty1e = xlDoub1e

248
' Menambahkan border di bawah nil ai bayar wsCetak.
Cells( . ListCount + 7, 6 ) . Borders
( xlEdgeBottom) .

LineSty1e = xlDoub1e
' Menambahkan border di bawah teks hutang wsCetak.
Cells( . ListCount + 8, 5 ) . Borders
( xlEdgeBottom) .

LineSty1e = xlDoub1e
' Menambahkan border di bawah nilai hutang wsCetak.
Cells( . ListCount + 8, 6 ) . Borders
( xlEdgeBottom) .

LineSty1e =
xlDoub1e End With

' Mencetak faktur pembelian wsCetak.


PrintOut Copies : Collate : —True
End Sub

' Kode ketika CommandButton Bayar di—klik


Private Sub cmdBayar_C1ick( )
' Jika ComboBox Kode Pemasok kosong
If cmbKodePemasok. Value = Then
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika tidak ada transaksi pembelian


If listBe1i . ListCount < 2 Then
' Menampilkan kotak pesan Belum Ada Transaksi
Pembelian
MsgBox n Tidak ada transaksi pembelian n , vbOKOn1y +
vbCritica1, "Belum Ada Transaksi Pembelian"
' Keluar dari Sub Procedure
Exit Sub
End If

' Memanggil Sub Procedure


cmdCetak_C1ick Call cmdCetak_C1ick

' Memanggil Sub Procedure cmdSimpan_C1ick


Call cmdSimpan_C1ick

End Sub

' Kode ketika ComboBox No Faktur diubah


Private Sub cmbNoFaktur_Change ( )
' wsHdrPb1n adalah worksheet

249
HeaderPembe1ian
" )
Set wsHdrPb1n = Sheets ( "
Pembelian
HeaderPembe1ian
' wsDt1Pb1n adalah worksheet DetailPembelian " )
Set wsDt1Pb1n = Sheets ( " Detail
' rgNoFakturHdrPb1n adalah range NoFakturHdrPb1n
Set rgNoFakturHdrPb1n = wsHdrPb1n . Range ( "
NoFakturHdrPb1n ' rgNoFakturDt1Pb1n adalah range
NoFakturDt1Pb1n
Set rgNoFakturDt1Pb1n = wsDt1Pb1n . Range ( "
NoFakturDt1Pb1n
' rgDtbsDt1Pb1n adalah worksheet DatabaseDetai1Pembe1ian
Set rgDtbsDt1Pb1n = wsDt1Pb1n. Range
( "DatabaseDetai1Pembe1ian" )
' Jika ComboBox No Faktur kosong
If cmbNoFaktur . Value = Then
' Keluar dari Sub Procedure
Exit Sub
End If

' Pencarian no faktur pada worksheet HeaderPembe1ian


Set p = rgNoFakturHdrPb1n. Find( cmbNoFaktur . Value
, Lookln : =x1Va1ues )
' Menampilkan tanggal transaksi sesuai no faktur
terpilih
1b1Tangga1. Caption = p . Offset ( O , 1 ) . Value
' Menampilkan tanggal jatuh tempo dari record yang sama
1b1Tempo . Caption = p . Offset ( O , 2 ) . Value
' Masukkan TextBox Kode Pemasok dari record yang sama
cmbKodePemasok. Value = p. Offset ( O , 3 ) . Value
' TextBox Grand Total Pembelian dari record yang
sama txtGrandTota1. Value = Format (p. Offset
( O , 4 ) . Value, ' Masukkan TextBox Total
Pembelian dari record yang sama txtTota1. Value =
Format (p. Offset ( O , 4 ) . Value,
' Masukkan TextBox Bayar dari record yang sama
txtBayar . Value = Format (p. Offset ( O , 5 )
. Value, ' Masukkan TextBox Hutang dari
record yang sama txtHutang . Value = Format
(p. Offset ( O , 6 ) . Value,

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDt1Pb1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet Detail
Pembelian wsDt1Pb1n. ShowA11Data
End If

' Memasukkan no faktur ke dalam gel 13 wsDt1Pb1n.


Range( "13" ) . Value = cmbNoFaktur . Value '
Penyaringan data menggunakan Advanced Filter
rgDtbsDt1Pb1n. AdvancedFi1ter Action :
=x1Fi1terInP1ace ,

250
CriteriaRange : =wsDt1Pb1n. Range ( n
12 : 13 )
' Menghapus ListBox
listBe1i . Clear

' Memanggil Sub Procedure Judu11temTranskasi


Call Judu11temTranskasi

With wsDt1Pb1n
' rgTampi1 adalah range no faktur yang ditampilkan
Set rgTampi1 = wsDt1Pb1n . Range( "NoFakturDt1Pb1n " ) .

SpecialCe11s ( xlCe11TypeVisib1e )
' sTampi1 merupakan pengulangan tiap sel dalam
rgTampi1
For Each sTampi1 In rgTampi1 With listBe1i
Memasukkan item ke dalam ListBox
. Addltem sTampi1.
' Value item
Nomo
.
r
List( transaksi
berdasarkan nil ai sTampi1
. ListCount — 1 0)
sTampi1. Offset (O , 1 ) .
Value
' Kode barang 1 kolom di sebelah kanan
sTampi1
. List( . ListCount
sTampi1. Offset
(O, 2 ) . Value
'Nama barang 2 kolom di sebelah kanan
sTampi1
. List( . ListCount
sTampi1. Offset
(O, 3 ) . Value
' Jumlah barang 3 kolom di sebelah kanan
sTampi1
. List( . ListCount
sTampi1. Offset
(O, 4 ) . Value
' Harga barang 4 kolom di sebelah kanan
sTampi1
. List( . ListCount
Format( sTampi1. Offset ( O , 5 ) .
Value,
' Total item 5 kolom sebelah kanan sTampi1
. List( . ListCount
Format( sTampi1. Offset ( O , 6 ) .
Value,
End With

251
Next sTampi1
End With

' Sel 13 worksheet Detail Pembelian dikosongkan


wsDt1Pb1n . Range ( " 13 " ) . ClearContents
Jika data yang ditampilkan merupakan hasi1 penyaringan
If wsDt1Pb1n. FilterMode Then
' Tampilkan seluruh data dalam worksheet Detail
Pembelian wsDt1Pb1n . ShowA11Data
End If

End Sub

o
' Kode ketika CommandButton Keluar di-klik
Private Sub cmdKe1uar_C1ick( )

Keluar dari Form Transaksi Pembelian


Unload Me

End Sub

' Kode ketika Form Transaksi Pembelian ditutup


Private Sub UserForm_QueryC10se ( Cancel As Integer ,
CloseMode As Integer )
0
' wsHdrPb1n adalah worksheet HeaderPembe1ian
Set wsHdrPb1n = Sheets( "HeaderPembe1ian" )
' wsDt1Pb1n adalah worksheet Detail
Pembelian
Set wsDt1Pb1n = Sheets( " Detail Pembelian " )
Jika data yang ditampilkan merupakan hasil penyaringan
If wsHdrPb1n. FilterMode Then
' Tampilkan seluruh data dalam worksheet
HeaderPembe1ian wsHdrPb1n . ShowA11Data End If

o
' Jika data yang ditampilkan merupakan hasi1 penyaringan
If wsDt1Pb1n. FilterMode Then
Tampilkan seluruh data dalam worksheet DetailPembeIian
wsDt1Pb1n . ShowA11Data
End If

End Sub

4.7 Membuat Form Cari Pelanggan


Form Cari Pelanggan dibuat untuk mempermudah pencarian dan
pemilihan pelanggan dalam Form Transaksi Penjualan. Kode
Macro dalam Form Cari Pelanggan tidak diberi komentar

252
penjelasan, karena pada prinsipnya mempunyai isi penjelasan
yang hampir sama dengan Form Cari Barang.
1. Pilih menu utama Insert > dserForm. Atur properti
dserForm melalui window Properties. Pilih menu utama
yew > Properties Window atau tekan tombol F4. dbah
properti OserForm sebagai berikut: Name
formCariPelanggan, Caption (kosong), Height = 264 dan
Width = 432.
2. Tambahkan kontrol ke dalam OserForm hingga tampilan
Form Cari Pelanggan menjadi seperti pada Gambar 4.11.

Gambar 4.11 Tampilan Form Cari Pelanggan.

3. Pengaturan properti pada objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 360, Top = 210, Width = 60,
CommandButton Accelerator = K, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 5
Name = optKode, Caption = Kode Pelanggan,
OptionButton Height = 18, Left = 6, Top = 216, Width = 75,
Value = True, Accelerator = P, Tablndex = 0

253
Name = optNama, Caption = Nama Pelanggan,
OptionButton Height = 18, Left = 150, Top = 216, Width = 81,
Value = False, Accelerator = N, Tablndex = 2
Name = txtKode, Height = 18, Left = 84, Top =
TextBox 216, Width = 60, BackC010r =
(abu-abu) , Tablndex = 1, Locked = False
Name = txtNama, Height = 18, Left = 234, Top =
TextBox 216, Width = 120, BackC010r =
(abu-abu), Tablndex = 3, Locked = True
Name = listCari, Height = 168, Left = 6, Top = 36,
ListBox Width = 414, BoundColumn = 5, ColumnCount =
5, Tablndex = 4
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Cari.gif, PictureAlignment =
Image
2 — frmPictureAlignmentCenter, PictureSizeMode =
0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Cari Pelanggan,
Height = 24, Left = 30, Top = 6, Width = 390, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackColor = (hijau muda),
Forecolor = (merah)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:

txtNama

Private
txtNama.
txtKode.
txtKode. .
End Sub

Private Sub optNama_C1ick( )


txtKode . Locked = True

254
txtKode .
txtNama . Locked = False
txtNama . SetFocus

End Sub

Private Sub txtKode_Enter( )


txtKode . BackC010r =

End Sub

Private Sub txtKode_Exit ( ByVa1 Cancel


As MSForms . ReturnB001ean ) txtKode .
BackC010r = &HCOCOCO End Sub private Sub
txtNama Enter ( )
txtNama . BackC01 or
End Sub

Private Sub txtNama_Exit (ByVa1


Cancel As MSForms .
ReturnB001ean ) txtNama .
BackC010r = &HCOCOCO
End Sub

Private Sub txtKode_Change( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n )


Set rgDtbsP1gn = wsDtbsP1gn. Range( n DatabasePe1anggan"
Set rgAdvFi1ter = wsDtbsP1gn.Range( "J 2 : L3 TI )

If wsDtbsP1gn. Range( "A3 " ) . Value =


Then Call DatabaseKosong
Exit Sub
End If

If wsDtbsP1gn . FilterMode Then


wsDtbsP1gn. ShowA11Data
End If

If
txtKode
. Value
=
listCari .
Clear
txtKode .
SetFocus
Else
With wsDtbsP1gn. Range( "KodePe1anggan )
Set c — . Find ( txtKode . Value, Lookln :
=x1Va1ues )
If c Is Nothing Then

255
MsgBox "Kode " & txtKode . Value & " tidak
ada " , vbOKOn1y,
"Kode Pelanggary
Tidak Ada " listCari .
Clear txtKode .
Value = txtKode . SetFocus Exit Sub
Else wsDtbsP1gn. Range( "J 3 " ) .
Value = "*" & txtKode.Va1ue & 'I
* " wsDtbsP1gn. Range ( "K3 : L3 )
. ClearContents rgDtbsP1gn.
AdvancedFi 1 ter
Action : =x1Fi1terInP1ace ,
Cri teriaRange : =rgAdvFi1 ter
Call Tampi1kanSemua
End If
End With
End If

If wsDtbsP1gn . FilterMode Then


wsDtbsP1gn. ShowA11Data
End If

End Sub

Sub DatabaseKosong( )
MsgBox n Tidak ada data dalam database pelanggan" ,
vbOKOn1y + vblnformation, " Database Pelanggan
Kosong "

End Sub

Sub Tampi1kanSemua( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n

listCari . Clear
With listCari
. Addl tem
. List( . ListCount - 1, " Kode Pelanggan "
. List( . ListCount - 1, "Nama Pelanggan "
. List( . ListCount - 1, " Kontak n
. List( . ListCount - 1, " Telp/HP
. List( . ListCount " Piutang
. ColumnWidths & 125 & n ; n & 70 &
70 & & 70
End With

With wsDtbsP1gn
Set rgTampi1 = wsDtbsP1gn . Range( "KodePe1anggan"
SpecialCe11s ( xlCe11TypeVisib1e )

256
For Each sTampi1 In rgTampiI
With listCari
. Add Item sTampi1. Value
. List( .ListCount - 1 , — sTampi1. Value
. List( .ListCount 1 ,
sTampi1. Offset ( 0
,
. List( .ListCount — 1 ,
sTampi1 . Offset ( 0 ,
5 ) . Value . List( .
ListCount sTampi1. Offset
( O , 6 ) . Value
. List( . ListCount
Format( sTampi1. Offset ( O , 7 ) .
Value,
End With
Next sTampi1
End With

End Sub

Private Sub txtNama_Change( )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n )


Set rgDtbsP1gn = wsDtbsP1gn. Range( n DatabasePe1anggan"

Set rgAdvFi1ter = wsDtbsP1gn.Range( "J 2 : L3 TI


)

If wsDtbsP1gn. Range( "A3 " ) . Value =


Then Call DatabaseKosong
Exit Sub
End If
If wsDtbsP1gn .
FilterMode Then
wsDtbsP1gn. ShowA11Data
End If

If txtNama . Value =
Then listCari .
Clear txtNama .
SetFocus
Else
With wsDtbsP1gn. Range( "NamaPe1anggan n )
Set c = . Find( txtNama. Value, Lookln : =x1Va1ues )
If c Is Nothing Then
MsgBox "Nama " & txtNama.
Value & tidak ditemukan " ,
vbOKOn1y , n
Nama Pelanggan
Tidak Ada listCari . Clear

257
txtNama. Value = txtNama.
SetFocus Exit Sub
Else wsDtbsP1gn. Range( "K3 " ) . Value =
txtNama. Value & " * " wsDtbsP1gn. Range ( "J
3 , L3 " ) . ClearContents rgDtbsP1gn.
AdvancedFi1ter Action : =x1Fi1terInP1ace,
Cri ter iaRange : =rgÄdvFi
Call 1 ter
End If
End With End
If
Tampi1kanSemua
If wsDtbsP1gn .
wsDtbsP1gn.
End If

End Sub FilterMode Then


ShowA11 Data
Private Sub
listCari_C1ick( )
If listCari . Listlndex > O Then
formTransaksiJua1. cmbKodePe1anggan.
Value = listCari . List( listCari .
List Index, O)
End If

End Sub

Private Sub cmdKe1uar_C1ick( )


Unload Me

End Sub

Private Sub UserForm_QueryC10se (Cancel As Integer ,


CloseMode As Integer )

Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n


)
If wsDtbsP1gn . FilterMode
Then wsDtbsP1gn . ShowA11Data
End If

wsDtbsP1gn . Range ( " J 3 : L3 " ) .


ClearContents
End Sub

4.8 Membuat Form Transaksi Penjualan


Form Transaksi Penjualan digunakan untuk mencatat transaksi
penjualan barang yang dilakukan perusahaan. Database yang

258
dibutuhkan dalam Form Transaksi Penjualan adalah database
barang dan database pelanggan. Transaksi penjualan tidak dapat
dilakukan apabila database barang kosong. Jika database
pelanggan kosong, Anda masih dapat melakukan transaksi
penjualan menggunakan Form Kasir.
Dalam transaksi penjualan, setiap barang yang dijual akan
mengurangi jumlah stok barang dalam gudang (database
barang). Oleh karena itu, sebelum menginput barang ke dalam
Form Transaksi Penjualan, Macro akan mengecek terlebih
dahulu apakah stok barang yang akan di-input mencukupi atau
tidak. Apabila dalam transaksi penjualan jumlah uang yang
dibayarkan pelanggan kurang, transaksi penjualan juga
dimasukkan ke dalam worksheet PenerimaanPiutang.
1. Pilih menu utama Insert > dserForm. Atur properti
dserForm melalui window Properties. Pilih menu utama
yew > Properties Window atau tekan tombol F4. dbah
properti OserForm sebagai berikut: Name
formTransaksiJuaI, Caption (kosong), Height = 405 dan
Width = 432.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Transaksi Penjualan menjadi seperti pada Gambar
4.12.

259
Gambar 4.12 Tampilan Form Transaksi Peqjualan.

3. Pengaturan properti pada objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdBaru, Caption = Baru, Height = 24,
Left = 6, Top = 348, Width = 42, Accelerator = B,
CommandButton Tablndex = 6, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackC010r =
utih)
(biru), Forecolor = (
Name = cmdSimpan, Caption = Simpan, Height =
24, Left = 48, Top = 348, Width = 42, Accelerator
= S, Tablndex = 3, Font = (Font = Tahoma; Font
CommandButton style = Bold; Size = 8), BackColor =
(biru), Forecolor = (
utih)

260
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 90, Top = 348, Width = 42, Accelerator = C,
Tablndex = 4, Font = (Font = Tahoma; Font style
CommandButton = Bold; Size = 8), BackColor =
(biru), Forecolor = (
utih)
Name = cmdBayar, Caption = Bayar, Height = 24,
CommandButton
Left = 132, To = 348, Width = 42, Accelerator =

y, Tablndex = 5, Font = (Font = Tahoma; Font


style = Bold; Size = 8), BackColor =
(biru), Forecolor =
( utih)
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 222, Top = 348, Width = 42,
Accelerator = K, Tablndex = 7, Font = (Font =
Tahoma; Font style = Bold; Size = 8), BackColor =
(biru), Forecolor =
CommandButton ( utih)
Name = cmdlnput, Caption = Input, Height = 24,
Left = 276, Top = 30, Width = 42, Accelerator = I,
Tablndex = 2, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackC010r =
CommandButton (biru), Forecolor = ( utih)
Name = cmdEdit, Caption = Edit, Height = 24,
Left = 318, Top = 30, Width = 42, Accelerator = E,
Tablndex = 3, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackColor =
(biru), Forecolor =
CommandButton ( utih)
Name = cmdHapus, Caption = Hapus, Height =
24, Left = 360, Top = 30, Width = 42, Accelerator
= H, Tablndex = 4, Font = (Font = Tahoma; Font
CommandButton style = Bold; Size = 8), BackColor =
(biru), Forecolor =
( utih)

261
Name = cmdSortAscPelanggan, Caption =
(kosong), Height = 18, Left = 144, Top = 30,
CommandButton Width = 18, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
Ascendin . if, Tablndex = 1
Name = cmdSortDesPelanggan, Caption =
(kosong), Height = 18, Left = 168, Top = 30,
CommandButton Width = 18, PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
Descending.gif, Tablndex = 2
Name = cmdCariPelanggan, Caption = (kosong),
Height = 18, Left = 192, Top = 30, Width = 18,
CommandButton
PicturePosition = 12 — frmPicturePositionCenter,
Picture = Cari. if, Tablndex = 3
Name = cmdSortAscBarang, Caption = (kosong),
CommandButton Height = 18, Left = 336, To = 6, Width = 18,

PicturePosition = 12 — frmPicturePositionCenter,
Picture = Sort Ascendin . if, Tablndex = 5
Name = cmdSortDesBarang, Caption = (kosong),
Height = 18, Left = 360, Top = 6, Width = 18,
PicturePosition = 12 — frmPicturePositionCenter,
CommandButton Picture = Sort Descending.gif, Tablndex = 6
Name = cmdCariBarang, Caption = (kosong),
Height = 18, Left = 384, Top = 6, Width = 18,
CommandButton PicturePosition = 12 —
frmPicturePositionCenter, Picture = Cari. if,
Tablndex = 7
Name = frmTransaksi, Caption = Transaksi, Height
Frame = 84, Left = 6, Top = 36, Width = 222, Tablndex

Name = frmBarang, Caption = Barang, Height =


Frame 66, Left = 6, Top = 126, Width = 414, Tablndex =
1

262
Name = txtNamaPelanggan, Height = 18, Left =
72, Top = 54, Width = 138, Locked = True,
TextBox BackC010r = (abu-abu)
Name = txtNamaBarang, Height = 18, Left = 192,
Top = 6, Width = 138, Locked = True, BackColor
TextBox = (abu-abu)
Name = txtJumlah, Height = 18, Left = 72, Top =
30, Width = 60, TextAlign = 3 —
fmTextAlignRight, Tablndex = 1, BackColor =
TextBox (abuabu)
Name = txtStok, Height = 18, Left = 192, Top =
30, Width = 54, TextAlign = 3 —
fmTextAlignRight,
TextBox BackC010r = (abu-abu)
Name = txtGrandTotal, Height = 18, Left = 318,
Top = 330, Width = 102, Locked = True, TextAlign
= 3 — fmTextAlignRight, BackColor =
TextBox (abu-abu), Value = O
Name = txtDiskon, Height = 18, Left = 318, Top =
354, Width = 24, TextAlign = 3 —
fmTextAlignRight, BackColor =
(abu-abu), MaxLength
TextBox = 2, Tablndex = 13, Value = 0
Name = txtDiskonRp, Height = 18, Left = 360,
Top = 354, Width = 60, Locked = True, TextAlign =
3 — fmTextAlignRight, BackColor =
TextBox (abu-abu), Value = O
TextBox Name = txtTotal, Hei ht = 21, Left = 294, To

42, Width = 126, Font = (Font = Tahoma; Font


style = Bold; Size = 11), Locked = True, TextAlign
= 3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
( utih), Value = 0

263
Name = txtBayar, Height = 21, Left = 294, Top =
66, Width = 126, Font = (Font = Tahoma; Font
style = Bold; Size =
11), TextAlign = 3 — = (putih),
fmTextAlignRight,
BackColor (biru), Forecolor =
TextBox Tablndex = 2, Value = 0
Name = txtPiutang, Height = 21, Left = 294, Top =
90, Width = 126, Font = (Font = Tahoma; Font
style = Bold; Size = 11), Locked = True, TextAlign
= 3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
TextBox ( utih), Value = 0
Name = cmbNoFaktur, Height = 18, Left = 72,
Top = 6, Width = 66, RowSource =
NoFakturHdrPjln, Style = 2 -
fmStyleDropDownList,
Tablndex = 4, BackC010r =
ComboBox (abuabu)
Name = cmbKodePelanggan, Height = 18, Left =
72, Top = 30, Width = 66, BoundColumn = 1,
ColumnCount = 2, ColumnWidths = 45 pt; 135 pt,
ListWidth = 180 pt, Style = 2
fmStyleDropDownList, Tablndex = 0, BackColor =
ComboBox (abu-abu)
Name = cmbKodeBarang, Height = 18, Left = 72,
Top = 6, Width = 60, BoundColumn = 1,
ColumnCount = 2, ColumnWidths = 45 pt; 135
pt, ListWidth = 180 pt, Style = 2
fmStyleDropDownList, Tablndex = 0, BackColor
=
ComboBox (abu-abu)
Name = listJual, Height = 123, Left = 6, Top =
198, Width = 414, BoundColumn = 8,
ListBox ColumnCount = 8, Tablndex = 20
Image Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Penjualan.gif,
PictureAlignment = 2 — frmPictureAlignmentCenter,

264
PictureSizeMode = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Transaksi
Label Penjualan, Height = 24, Left = 30, To = 6, Width

= 390, Font = (Font = Tahoma; Font style = Bold;


Size = 16), BackC010r = (hijau muda),
ForeColor = (merah)
Name = lblTotal, Caption = Total, Height = 21,
Left = 234, Top = 42, Width = 60, Font = (Font =
Label Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
( utih)
Name = lblBayar, Caption = Bayar, Height = 21,
Left = 234, Top = 66, Width = 60, Font = (Font =
Label Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
( utih)
Name = lblPiutang, Caption = Piutang, Height =
21, Left = 234, Top = 90, Width = 60, Font =
Label (Font = Tahoma; Font style = Bold; Size = 11),

( util.) (biru), Forecolor =


Name = lblKetTanggal, Caption = Tanggal, Height
= 12, Left = 6, Top = 330, Width = 60, Font =
Label (Font = Tahoma; Font style = Bold; Size = 8),
BackColor = (merah), ForeColor =
( util.)
Name = lblKetTempo, Caption = Jatuh Tempo,
Height = 12, Left = 138, Top = 330, Width = 60,
Font = (Font = Tahoma; Font style = Bold; Size =
8), BackColor = (merah), ForeColor
Label = ( utih)

265
Name = lblTanggal, Caption = (kosong), Height =
12, Left = 66, Top = 330, Width = 66, Font =
(Font = Tahoma; Font style = Bold; Size = 8),
TextAlign = 3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
Label ( utih)
Name = lblTempo, Caption = (kosong), Height =
12, Left = 198, Top = 330, Width = 66, Font =
(Font = Tahoma; Font style = Bold; Size = 8),
Label
TextAlign = 3 — fmTextAlignRight, BackColor =
(biru), Forecolor = (
utih)
Name = lblNoFaktur, Caption = No Faktur, Height
Label
= 12, Left = 6, To = 12, Width = 66
Label Name = lblKodePelanggan, Ca tion = Kode
Pelanggan, Height = 12, Left = 6, Top = 36, Width
= 66
Name = lblNamaPelanggan, Caption = Nama
Label Pelanggan, Height = 12, Left = 6, Top = 60, Width
= 66
Name = lblKodeBarang, Caption = Kode Barang,
Label
Hei ht = 12, Left = 6, To = 12, Width = 60
Name = lblNamaBarang, Caption = Nama Barang,
Label
Hei ht = 12, Left = 138, To = 12, Width = 54
Name = lblJumlah, Caption = Jumlah, Height = 12,
Label
Left = 6, To = 36, Width = 60
Name = lblStok, Caption = Stok, Height = 12, Left
Label
= 138, To = 36, Width = 54
Name = lblGrandTotal, Caption = Grand Total,
Label
Height = 12, Left = 270, To = 336, Width = 48
Name = lblDiskon, Caption = Diskon, Height = 12,
Label
Left = 270, To = 360, Width = 48
Name = lblPersen, Caption = %, Height = 12, Left
Label
= 348, To = 360, Width = 12

266
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
' Kode ketika Form
Penjualan aktif
Transaksi
)
Private Sub ItemPe1anggan
UserForm_Activate(

' Memanggil Sub ItemBarang


Procedure Call
ItemPe1anggan
Judu11temTranskasi
o
' Memanggil Sub
Procedure Call
ItemBarang

' Memanggil Sub kode pelanggan dalam ComboBox


Procedure
Call Judu11temTranskasi
worksheet DatabasePe1anggan
End Sub ( "DatabasePe1anggan " )
kosong
' Sub Procedure
memasukan Sub
ItemPe1anggan( )

o
' wsDtbsP1gn adalah Set wsDtbsP1gn =
Sheets

' Jika database pelanggan


If wsDtbsP1gn. Range( "A3 " ) . Value = Then
' Keluar dari Sub Procedure
Exit Sub
Jika database pelanggan tidak kosong
Else
' Menghapus ComboBox Kode Pelanggan
cmbKodePe1anggan. CI ear
' spelanggan merupakan sel dalam range
KodePe1anggan
For Each spelanggan In wsDtbsP1gn .
Range( "Kodepelanggan" ) With Me .
cmbKodePe1anggan
' I Menambahkan item dalam ComboBox Kode
Pelanggan
. Addltem spelanggan. Value
' Memasukkan nama pelanggan ke dalam
ComboBox

267
. List( . ListCount —
spelanggan. Offset (O ,
1 ) . Value
End With
Next spelanggan
' Item yang ditampilkan adalah kode pelanggan
teratas cmbKodePe1anggan. Value = cmbKodePe1anggan.
List( O )
End If

End Sub

Sub Procedure untuk memasukan kode barang dalam


ComboBox
Sub ItemBarang( )
wsDtbsBrg adalah worksheet
Set wsDtbsBrg DatabaseBarang
= Sheets ( " DatabaseBarang
Jika " )
database If
wsDtbsBrg . barang kosong
' Keluar Range( "A3 ) . Value = Then
Exit Subdari Sub Procedure
Jika database
Else
'
Menghapus
ComboBox
Kode barang tidak kosong
Barang
cmbKodeBarang. Clear
' sBarang merupakan nilai dalam range KodeBarang
For Each sBarang In wsDtbsBrg .
Range( "KodeBarang" )
With Me . cmbKodeBarang
' I Menambahkan item dalam ComboBox Kode
Barang
. Addltem sBarang . Value
' Memasukkan nama barang ke dalam ComboBox
. List( . ListCount —
sBarang . Offset
(O, 1 ) . Value
End With
Next sBarang
' Item yang ditampilkan adalah kode pelanggan
teratas cmbKodeBarang. Value = cmbKodeBarang .
List( O )
End If

End Sub

268
Sub Procedure untuk membuat judul kolom ListBox
Sub Judu11temTranskasi ( )
Menghapus ListBox
listJua1. Clear

With listJua1
' Menambahkan item ListBox sebagai judul kolom
. Addl tem
' Judul ListBox kolom pertama
. List ( • ListCount - 1 ,
' Judul ListBox kolom kedua

. List ( • ListCount - 1 , " Kode "


' Judul ListBox kolom ketiga

. List ( • ListCount - 1 , "Nama Barang "


' Judul ListBox kolom keempat

. List ( • ListCount - 1 , — " Jumlah "


' Judul ListBox kolom kel ima

. List ( • ListCount - 1 , " Harga "


' Judul ListBox kolom keenam

. List ( • ListCount - 1 , "Disc. "


' Judul ListBox kolom ketujuh

. List ( • ListCount - 1 , "Harga Disc. "


' Judul ListBox kolom kedelapan
. List ( •ListCount "Total"
' Lebar mas ing—masing kolom dalam ListBox
. ColumnWidths = 20 & & 40 & ; & 110 &
40 & " ; "
& 50 & " ; " & 30
& i' ; " & 50 " ;
" & 70 End With
masuk dalam ComboBox
End Sub No Faktur cmbFaktur_Enter( )
ComboBox No Faktur men jadi put
Kode ih
. BackC010r = &H80000005&
ketika
Private
Sub
'
Warn
a
cmbF
aktu
r
End Sub

269
Kode ketika keluar dari ComboBox No Faktur
Private Sub cmbFaktur_Exit (ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna ComboBox No Faktur menjadi abu—abu
cmbFaktur . BackC010r = &HCOCOCO
End Sub

Kode ketika masuk dalam ComboBox Kode Pelanggan


Private Sub cmbKodePe1anggan_Enter( )
' Warna ComboBox Kode Pelanggan menjadi putih
cmbKodePe1anggan. BackC010r = &H80000005&
End Sub

Kode ketika keluar dari ComboBox Kode Pelanggan


Private Sub cmbKodePe1anggan_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean )
' Warna ComboBox Kode Pelanggan menjadi abu—abu
cmbKodePe1anggan. BackC010r = &HCOCOCO
End Sub
Kode ketika masuk dalam ComboBox Kode Barang
Private Sub cmbKodeBarang_Enter( )
' Warna ComboBox Kode Barang menjadi putih
cmbKodeBarang. BackC010r = &H80000005&
End Sub

Kode ketika keluar dari ComboBox Kode Barang


Private Sub cmbKodeBarang_Exit ( ByVa1 Cancel
As MSForms . ReturnB001ean )
' Warna ComboBox Kode Barang menjadi abu—abu
cmbKodeBarang . BackC010r = &HCOCOCO
End Sub

Kode ketika masuk dalam TextBox Jumlah


Private Sub txtJum1ah_Enter( )
' Warna TextBox Jumlah menjadi putih
txtJum1ah . BackC010r =
End Sub

Kode ketika keluar dari TextBox Jumlah


Private Sub txtJum1ah_Exit (ByVa1
Cancel As MSForms .
ReturnB001ean ) 'men jadi abu—
abu &HCOCOCO
Warna TextBox Jumlah
txtJum1ah . BackC010r
=
TextBox Diskon
End Sub ) men jadi
Kode ketika masuk dalam put ih
Private Sub txtDiskon_Enter( '
Warna TextBox Diskon
txtDiskon . BackC010r = '

270
TextBox Diskon dikosongkan
txtDiskon. Value = 11
End Sub

Kode ketika keluar dari TextBox Diskon


Private Sub txtDiskon_Exit (ByVa1 Cancel As
MSForms . ReturnB001ean )
' Warna TextBox Diskon menjadi
abu—abu txtDiskon . BackC010r =
&HCOCOCO ' Jika TextBox Diskon
kosong
If txtDiskon. Value =
Then ' TextBox Diskon
bernilai O txtDiskon.
Value
End If
End Sub

Kode ketika masuk dalam TextBox Bayar


Private Sub
txtBayar_Enter( ) '
TextBox Bayar
dikosongkan
txtBayar . Value =
End Sub

Kode ketika keluar dari TextBox Bayar


Private Sub txtBayar_Exit (ByVa1 Cancel
As MSForms . ReturnB001ean )
Jika TextBox Bayar kosong atau bernilai O
If txtBayar . Value = Or txtBayar . Value =
O Then ' TextBox Bayar bernilai O
txtBayar . Value
' Jika TextBox Total kosong atau bernilai O
If txtTota1. Value = Or txtTota1. Value = O
Then ' TextBox Hutang bernilai O
txtPiutang. Value = O ' Keluar dari Sub
Procedure
Exit Sub
Else
' Nilai TextBox Piutang sama dengan TextBox
Total txtPiutang. Value = txtTota1. Value
End
If End
If

End Sub

Validasi pada TextBox Jumlah


Private Sub txtJum1ah_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )

271
Validasi angka TextBox Jumlah
Select Case KeyAscii
Case Asc( "O") To
Asc( "9")
Case Else

KeyAsc11
End Select

End Sub

Validasi pada TextBox Diskon


Private Sub txtDiskon_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )
Validasi angka TextBox Diskon
Select Case KeyAscii
Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub

Validasi pada TextBox Bayar


Private Sub txtBayar_KeyPress (ByVa1 KeyAscii
As MSForms . Returnlnteger )
Validasi angka TextBox Bayar
Select Case KeyAscii
Case Asc( "O") To
Asc( "9" ) Case Else
KeyAsc11
End Select

End Sub

Kode jika CommandButton Sort Ascending Pelanggan di—


klik
Private Sub cmdSortAscPe1anggan_C1ick( )
wsDtbsP1gn adalah worksheet DatabasePe1anggan
Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n
)
Jika data yang ditampilkan merupakan hasil
penyaringan If wsDtbsP1gn . FilterMode Then
' Tampilkan seluruh data worksheet
DatabasePe1anggan wsDtbsP1gn. ShowA11Data
End If

272
Urutkan Ascending database pelanggan kolom Nama
Pelanggan wsDtbsP1gn. Range ( "DatabasePe1anggan n ) .
Sort
Keyl : — "Nama Pelanggan" , Orderl : =x1Ascending ,

Header : =x1Yes
Memanggil Sub Procedure ItemPe1anggan
Call ItemPe1anggan

End Sub
Kode jika CommandButton Sort Descending Pelanggan di—
klik
Private Sub cmdSortDesPe1anggan_C1ick( )
wsDtbsP1gn adalah worksheet DatabasePe1anggan
Set wsDtbsP1gn = Sheets ( "DatabasePe1anggan t' )

Jika data yang ditampilkan merupakan hasil


penyaringan If wsDtbsP1gn . FilterMode Then
' Tampilkan seluruh data worksheet
DatabasePe1anggan wsDtbsP1gn. ShowA11Data
End If

Urutkan Descending database pelanggan kolom Nama


Pelanggan wsDtbsP1gn. Range ( "DatabasePe1anggan n
) .
Sort
Keyl : — "Nama Pelanggan " , Orderl :
=x1Descending , Header : =x1Yes

Memanggil Sub Procedure ItemPe1anggan


Call ItemPe1anggan

End Sub

Kode ketika CommandButton Cari Pelanggan di—klik


Private Sub cmdCariPe1anggan_C1ick( )
Menampilkan Form Cari
Pelanggan f
ormCariPe1anggan. Show

End Sub
Kode ketika CommandButton Sort Ascending Barang di—klik
Private Sub cmdSortAscBarang_C1ick( )
wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n
)
Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then

273
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

Mengurutkan Ascending database barang kolom Nama Barang


wsDtbsBrg . Range ( "DatabaseBarang " ) . Sort
Keyl : — "Nama Barang" , Orderl : =x1Ascending,
Header : =x1Yes
Memanggil Sub Procedure ItemBarang
Call ItemBarang

End Sub

Kode ketika CommandButton Sort Descending Barang di—


klik
Private Sub cmdSortDesBarang_C1ick( )

wsDtbsBrg adalah worksheet


DatabaseBarang
Set wsDtbsBrg = Sheets
( "DatabaseBarang " )
Jika data yang ditampilkan merupakan hasi1 penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11 Da ta
End If

Mengurutkan Descending database barang kolom Nama


Barang wsDtbsBrg . Range ( "DatabaseBarang " ) . Sort
Keyl : —"Nama Barang" , Orderl : =x1Descending, Header :
=x1Yes
Memanggil Sub Procedure ItemBarang
Call ItemBarang

End Sub

Kode ketika CommandButton Cari Barang di—klik


Private Sub cmdCariBarang_C1ick( )
Menampilkan Form Cari Barang
formCariBarang . Show

End Sub

Kode ketika item ComboBox Kode Pelanggan diubah


Private Sub cmbKodePe1anggan_Change( )
wsDtbsP1gn adalah worksheet DatabasePe1anggan
Set wsDtbsP1gn = Sheets ( " DatabasePe1anggan n )
rgKodeP1gn adalah range KodeP1gn
Set rgKodeP1gn = wsDtbsP1gn . Range( "KodePe1anggan"

274
Jika ComboBox Kode Pelanggan kosong
If cmbKodePe1anggan. Value = Then
' Keluar dari Sub Procedure
Exit Sub
Jika database pelanggan kosong
El self wsDtbsP1gn. Range( "A3 " ) . Value = Then
' Keluar dari Sub Procedure
Exit Sub
End If

Pencarian kode pelanggan berdasarkan nilai ComboBox


Set c = rgKodeP1gn. Find ( cmbKodePe1anggan. Value
, Lookln : =x1Va1ues, MatchCase : —False )
'Nilai sel 1 kolom disebelah kanan sel hasil pencarian
txtNamaPe1anggan. Value = c. Offset (O, 1 ) . Value

End Sub

Kode ketika item ComboBox Kode Barang diubah


Private Sub cmbKodeBarang_Change ( )
wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets( "DatabaseBarang " )
rgKodeBrg adalah range KodeBarang
Set rgKodeBrg = wsDtbsBrg . Range ( "KodeBarang
Jika ComboBox Kode Barang kosong
If cmbKodeBarang . Value Then
' Keluar dari Sub Procedure
Exit Sub
Jika database barang kosong
El self wsDtbsBrg . Range( "A3 " ) . Value =Then
' Keluar dari Sub Procedure
Exit Sub
End If

Pencarian kode barang berdasarkan ComboBox Kode Barang


Set c = rgKodeBrg. Find ( cmbKodeBarang . Value ,
Lookln : =x1Va1ues, MatchCase : —False )
Memasukkan nilai sel 1 kolom sebelah kanan hasil
pencarian txtNamaBarang . Value = c. Offset (O, 1 ) .
Value
Memasukkan nilai sel 9 kolom sebelah kanan hasil
pencarian txtStok. Value = c. Offset (O, 9 ) . Value
TextBox Jumlah menjadi fokus
txtJum1ah. SetFocus

End Sub

Kode ketika nilai TextBox Diskon diubah


Private Sub txtDiskon_Change( )

275
Lanjutkan Macro jika terjadi
error On Error Resume Next

Jika TextBox Grand Total bernilai O


If txtGrandTota1. Value =
O Then ' TextBox
Diskon bernilai O
txtDiskon. Value
' Keluar dari Sub Procedure
Exit Sub
Jika TextBox Diskon kosong atau bernilai O
El self txtDiskon. Value = Or txtDiskon. Value = O
Then ' TextBox Diskon bernilai O txtDiskonRp.
Value
' TextBox Total sama dengan TextBox Grand Total
txtTota1. Value = Format (CDb1 ( txtGrandTota1.
Value) ,

' Keluar dari Sub Procedure


Exit Sub
Jika TextBox Grand Total/TextBox Diskon tidak bernilai
O Else
' Memasukkan diskon per faktur dalam rupiah
txtDiskonRp. Value = Format( ( txtDiskon. Value /
100) * txtGrandTota1. Value, " # , ) '
Perhitungan pada TextBox Total
txtTota1. Value = Format ( CDb1 ( txtGrandTota1.
Value) — CDb1 ( txtDiskonRp . Value ) ,
' Jika nilai TextBox Bayar > dari TextBox Total
If CDb1 ( txtBayar . Value) > CDb1
( txtTota1 . Value) Then ' Nilai
TextBox Bayar sama dengan TextBox
Total txtBayar . Value = txt Total .
Value ' TextBox Piutang dikosongkan
txtPiutang . Value = 0 ' Keluar dari
Sub Procedure
Exit Sub
' Jika TextBox Bayar lebih kecil dari TextBox
Total Else
' Perhitungan nilai pada TextBox Piutang
txtPiutang. Value =
Format (Abs ( CDb1 ( txtBayar .
Value) — CDb1 ( txtTota1.
Value) ) ,
End If
End If

End Sub

Kode ketika nilai TextBox Bayar diubah


Private Sub txtBayar_Change( )

276
Format TextBox Bayar txtBayar . Value =
Format ( txtBayar . Value, n # , )

Jika TextBox Total kosong atau bernilai O


If txtTota1. Value = Or txtTota1. Value = O
Then ' TextBox Piutang bernilai O
txtPiutang. Value
' Keluar dari Sub Procedure
Exit Sub
Jika TextBox Bayar kosong atau bernilai O
El self txtBayar . Value = Or txtBayar . Value = O Then
' Keluar dari Sub Procedure
Exit Sub
Jika nilai TextBox Bayar lebih besar dari TextBox Total
El self CDb1 ( txtBayar . Value) > CDb1
( txtTota1. Value) Then ' Nilai TextBox Bayar
sama dengan TextBox Total txtBayar . Value =
txtTota1. Value ' TextBox Piutang bernilai O
txtPiutang. Value
' Keluar dari Sub Procedure
Exit Sub
Else
' Perhitungan nilai pada TextBox Piutang
txtPiutang. Value = Format (Abs ( CDb1 ( txtBayar
. Value) — CDb1 ( txtTota1. Value) ) ,
End If

End Sub

Kode ketika CommandButton Input di—klik

Private

Set
Set

If

End If

Jika ComboBox No Faktur tidak kosong


If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan Transaksi Gagal
MsgBox "Transaksi tidak bisa diproses n ,
vbOKOn1y + vblnformation, "Transaksi
Gagal "
' Keluar dari Sub Procedure
Exit Sub

277
End If

Jika TextBox Jumlah kosong atau bernilai O


If txtJum1ah . Value = Or txtJum1ah . Value = O Then
' Menampilkan kotak pesan Jumlah Barang Kosong
MsgBox n Jumlah barang belum diisi n ,
vbOKOn1y + vbCritica1 , " Jumlah Barang
Kosong" ' TextBox Jumlah menjadi fokus
txtJum1ah. SetFocus ' Keluar dari Sub
Procedure
Exit Sub
End If
Memeriksa apa item barang sudah dimasukkan dalam
transaksi
For CekKodeBarang = 1 To listJua1 . ListCount
' Jika item barang sudah dimasukkan dalam transaksi
If listJua1. List ( CekKodeBarang, 1 ) —
cmbKodeBarang. Value Then
' Menampilkan kotak pesan Item Barang Sudah
Masuk
MsgBox " Item & listJua1. List ( CekKodeBarang,
2) &
sudah ada , vbOKOn1y , n
Item Barang Sudah
Masuk "
' ListBox menjadi fokus
listJua1. SetFocus
' Menyeleksi item barang dalam
ListBox listJua1. List Index =
CekKodeBarang ' Keluar dari Sub
Procedure
Exit Sub
End If
Next CekKodeBarang

Cek selisih persediaan stok dengan jumlah yang dijual


CekStok = txtStok. Value — txtJum1ah. Value

Jika stok lebih kecil dibandingkan jumlah yang dijual


If CekStok < O Then
' Menampilkan kotak pesan Stok Barang Tidak Ada
MsgBox n
Stok " & txtNamaBarang .
Value & yang tersedia " &
Tidak Ada
txtStok.Va1ue, vbOKOn1y,
"Stok Barang ' TextBox Jumlah "
dikosongkan txtJum1ah. Value
=
' TextBox Jumlah menjadi fokus
txtJum1ah. SetFocus
' Keluar dari Sub Procedure

278
Exit Sub
End If

'c adalah sel hasil pencarian berdasar ComboBox Kode


Barang
Set c = rgKodeBrg. Find ( cmbKodeBarang .
Value , Lookln : =x1Va1ues )

With listJua1
' Menambahkan item ke dalam ListBox
. Addl tem
' Pengisian kolom No
. List( . ListCount — listJua1. ListCount
' Pengisian kolom Kode
. List( . ListCount — = cmbKodeBarang. Value
' Pengisian kolom Nama Barang
. List( . ListCount — = txtNamaBarang. Value
' Pengisian kolom Jumlah
. List( . ListCount — txtJum1ah. Value
' Pengisian kolom Harga (harga jual )
. List( . ListCount —
Format (c. Offset (O, 5) . Value, n
' Pengisian kolom Disc. (diskon)
. List( . ListCount — 1 5) = c. Offset (O,
6 ) . Value ' Pengisian kolom Harga Disc .
. List( . ListCount —
Format (c. Offset (O, 7) . Value, n
' Pengisian kolom Total
. List( . ListCount — = Format ( txtJum1ah. Value *
CDb1(c.Offset(O, 7) . Value) ,
End With

TotalJua1 =
For Total = 1 To listJua1. ListCount
TotalJua1 = TotalJua1 + CDb1 ( listJua1. List
(Total , 7) ) ' Pengisian TextBox Grand Total
txtGrandTota1. Value = Format ( TotalJua1 ,
' Pengisian TextBox Total txtTota1. Value =
Format (TotalJua1 , ' Pengisian TextBox
Piutang txtPiutang. Value = Format ( TotalJua1

Next Total

279
txtJum1ah.
cmbKodeBarang
TextBox
txtDiskon. Diskon
O bernilai
bernilai
txtDiskonRp.
txtBayar .Value
TextBox

Bayar bernilai 0

End Sub

Kode ketika CommandButton Edit di—klik


Private Sub cmdEdit_C1ick( )
wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
rgKodeBrg adalah range KodeBarang
Set rgKodeBrg = wsDtbsBrg . Range( " KodeBarang
Jika ComboBox No Faktur tidak kosong
If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan Transaksi Gagal
MsgBox "Transaksi tidak bisa diproses n ,
vbOKOn1y + vblnformation, "Transaksi
Gagal "
' Keluar dari Sub Procedure
Exit Sub
End If

Jika TextBox Jumlah belum diisi


If txtJum1ah . Value = Then
' Menampilkan kotak pesan Jumlah Barang Kosong
MsgBox n Jumlah barang belum diisi n ,
vbOKOn1y + vbCritica1 , " Jumlah Barang
Kosong" ' TextBox Jumlah menjadi fokus
txtJum1ah. SetFocus
' Keluar dari Sub Procedure
Exit Sub
End If

With listJua1
' Jika indeks ListBox kurang dari 1
If . List Index < 1 Then
' Menampilkan kotak pesan Pilih Nomor Item
MsgBox "Pilih nomor item yang akan
diedit" , vbOKOn1y + vblnformation, n Pilih
Nomor Item " ' ListBox menjadi fokus
listJua1. SetFocus
' Keluar dari Sub Procedure

280
Exit Sub
' Jika indeks ListBox lebih dari 1
Else
' Cek selisih persediaan stok dengan yang
dijual CekStok = txtStok. Value —
txtJum1ah. Value ' Jika stok lebih kecil
dibandingkan yang dijual
If CekStok < 0 Then
' Menampilkan kotak pesan Stok Barang Tidak
Ada
MsgBox " Stok " &

+ vbCritica1 ,
Barang Tidak Ada "
Jumlah dikosongkan
= " "
Jumlah men jadi
fokus
SetFocus dari
Sub Procedure
txtNamaBarang . Value & yang
tersedia " & txtStok. Value ,
vbOKOn1y " Stok ' TextBox
txtJum1ah.Va1ue ' TextBox
txtJum1ah.
' Keluar
Exit Sub
End If

' c adalah sel hasil pencarian berdasar kode


barang
Set c = rgKodeBrg . Find( . List( . List Index,
O) , Lookln : =x1Va1ues )
' Pengisian kolom Jumlah
. List( . List Index, 3) = txtJum1ah. Value
' Pengisian kolom Harga (harga jual )
. List( . List Index, 4) —
Format (c . Offset ( O , 5)
. Value, ' Pengisian kolom
Disc .
. List( . List Index, 5) = c. Offset
(O, 6 ) . Value ' Pengisian kolom
Harga Disc.
. List( . List Index, 6 ) =
Format (c . Offset ( O , 7) . Value,
' Pengisian kolom Total
. List( . List Index, 7) = Format ( txtJum1ah.
Value * CDb1 (c. Offset (O, 7) . Value) ,

End If

281
End With
TotalJua1 =
For Total = 1 To listJua1. ListCount
TotalJua1 = TotalJua1 + CDb1 ( listJua1. List
(Total , 7 ) ) ' Pengisian TextBox Grand Total
txtGrandTota1. Value = Format ( TotalJua1 ,
' Pengisian TextBox Total txtTota1. Value =
Format (TotalJua1 , ' Pengisian TextBox
Piutang txtPiutang. Value = Format ( TotalJua1

Next Total

TextBox Jumlah dikosongkan


txtJum1ah. Value =
ComboBox Kode Barang menjadi fokus
cmbKodeBarang . SetFocus

TextBox Diskon bernilai O


txtDiskon. Value
TextBox Diskon (dalam rupiah) bernilai O
txtDiskonRp. Value
TextBox Bayar bernilai O
txtBayar . Value
CommandButton Hapus di—klik
cmdHapus_C1ick( )
End Sub
Kode ketika Private
Sub

wsDtbsBrg adalah
worksheet DatabaseBarang
Set wsDtbsBrg =Sheets( "DatabaseBarang"
rgKodeBrg adalah ) rangeuKodeBarang
Set rgKodeBrg = wsDtbsBrg .
Range( " KodeBarang
Jika ComboBox No Faktur tidak kosong
If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan Transaksi Gagal
MsgBox "Transaksi tidak bisa diproses n ,
vbOKOn1y + vblnformation, "Transaksi
Gagal "
' Keluar dari Sub Procedure
Exit Sub
End If

Jika indeks ListBox kurang dari 1


If listJua1. List Index < 1 Then
' Menampilkan kotak pesan Pilih Nomor Item
MsgBox n Pilih nomor item yang akan
dihapus " , vbOKOn1y, "Pilih Nomor Item"

282
' ListBox menjadi fokus listJua1.
SetFocus
' Keluar dari Sub Procedure
Exit Sub
Jika indeks ListBox lebih dari 1
Else
' Menghapus item transaksi terpilih dari ListBox
listJua1. Removeltem (listJua1. List Index)
End If

' Membuat nomor item transaksi baru


For Noltem = 1 To listJua1. ListCount
listJua1. List (Noltem, O ) = Noltem
Next Noltem

' Jika sudah tidak ada item transaksi penjualan


If listJua1. ListCount = 1
Then ' TextBox Grand Total
bernilai O txtGrandTota1.
Value ' TextBox Total
bernilai O txtTota1. Value

' TextBox Piutang bernilai O


txtPiutang. Value
' Jika masih ada item transaksi penjualan
Else
TotalJua1
For Total = 1 To Ii stJua1. Li stCount
TotalJua1 TotalJua1 + CDb1 ( listJua1. List
( Total , 7) )
'
Pengisian TextBox Grand Total
txtGrandTota1.
'
Pengisian
txtTota1.
'
Pengisian
txtPiutang.
Next Total
End If
' TextBox Diskon
txtDiskon. Value
' TextBox Diskon
txtDiskonRp.Value
' TextBox Bayar bernilai O
txtBayar . Value

End Sub

' Kode ketika CommandButton Baru di—klik


Private Sub cmdBaru_C1ick( )

283
' ComboBox No Faktur dikosongkan
cmbNoFaktur . Value =
' TextBox Jumlah dikosongkan
txtJum1ah. Value =
' TextBox Grand Total
bernilai txtGrandTota1.
Value ' TextBox Diskon
bernilai O txtDiskon.
Value
' TextBox Diskon (dalam rupiah) bernilai
txtDiskonRp . Value
' TextBox Total bernilai O
txtTota1. Value
' TextBox Bayar bernilai O
txtBayar . Value
' TextBox Piutang bernilai O
txtPiutang . Value

' Memanggil Sub Procedure


Judu11temTranskasi Call Judu11temTranskasi

' ComboBox Kode Pelanggan men jadi fokus


cmbKodePe1anggan. SetFocus

End Sub

' Kode ketika CommandButton Simpan di—klik


Private Sub cmdSimpan_C1ick( )

' wsTb1Bantu adalah worksheet Tabe1Bantu


Set wsTb1Bantu = Sheets ( " Tabe1Bantu n )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' wsDtbsP1gn adalah worksheet DatabasePe1anggan
Set wsDtbsP1gn = Sheets ( "
DatabasePe1anggan n ) ' wsHdrPj1n adalah
worksheet HeaderPenjua1an
Set wsHdrPj1n = Sheets
( "HeaderPenjua1an" ) ' wsDt1Pj1n
adalah worksheet Detail Penjualan
Set wsDt1Pj1n = Sheets( "Detail Penjualan " )
' wsPenPiu adalah worksheet PenerimaanPiutang
Set wsPenPiu =
Sheets( "PenerimaanPiutang " )
' Jika ComboBox Kode Pelanggan
kosong
If cmbKodePe1anggan . Value = Then
' Menampilkan kotak pesan Kode Pelanggan Kosong
MsgBox n Gunakan Form Kasi r untuk pelanggan umum" ,
vbOKOn1y + vblnformation, " Kode Pelanggan
Kosong "

284
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika tidak ada transaksi penjualan


If listJua1. ListCount < 2 Then
' Menampilkan kotak pesan Belum Ada Transaksi
Penjualan
MsgBox n
Tidak ada transaksi
penjualan n
, vbOKOn1y +
vbCritica1 , n
Belum Ada
Transaksi Penjualan n
' Keluar dari Sub Procedure
Exit Sub
End If

' rgKodeBarang adalah range KodeBarang


Set rgKodeBarang = wsDtbsBrg . Range( n
KodeBarang" ) ' rgKodeP1gn adalah range
KodePe1anggan
Set rgKodeP1gn = wsDtbsP1gn. Range( n KodePe1anggan" )
' Record terakhir header penjualan kolom A
RecordAkhirHdrP j In = wsHdrPj1n. Cells (wsHdrPj1n. Rows
. Count , ) .End(x1Up) . Offset (O, O) . Row
' Record terakhir detail penjualan kolom A
RecordAkhirDt IP j In = wsDt1Pj1n. Cells (wsDt1Pj1n.
Rows . Count , ) .End(x1Up) . Offset (O, O) .
Row
' Record terakhir penerimaan piutang kolom A
RecordAkhirPenPiu = wsPenPiu. Cells (wsPenPiu. Rows .
Count ,
) .End(x1Up) . Offset (O, O) . Row
' Jika ComboBox No Faktur tidak kosong
If cmbNoFaktur . Value <> Then
' Menampilkan kotak pesan Transaksi Gaga 1
MsgBox n Transaksi tidak bisa diproses n ,
vbOKOn1y + vblnformation, n Transaksi
Gagal "
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika worksheet HeaderPenjua1an masih kosong


If wsHdrPj1n.Range( "A3" ) . Value = n n Then
' Memasukkan nilai 1 pada worksheet
Tabe1Bantu sel B3 1 wsTb1Bantu .
Range( "B3 " ) . Value
'Nomor faktur dimulai dari TJOOOI

285
NoFaktur = "TJOOO" & 1
Else
' Nomor faktur berdasarkan nil ai sell B3
NoFaktur ="TJOOO" & wsTb1Bantu. Range( TI
B3

" ) . Value End If


'No faktur di bawah record terakhir header penjualan
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 1 ) . Value =
NoFaktur
' Masukkan tanggal pada record yang sama
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 2 ) .
Value = Date ' Masukkan tanggal jatuh tempo pada
record yang sama wsHdrPj1n. Cells
(RecordAkhirHdrPj1n + 1, 3 ) . Value =
WorksheetFunction. EDate ( Date, 3 )
' Masukkan kode pelanggan pada record yang sama
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 4 ) .
Value = cmbKodePe1anggan. Value
' Masukkan grand total penjualan pada record yang sama
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 5 ) . Value =

CDb1 ( txtGrandTota1. Value )


' Masukkan diskon pada record yang sama
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 6 ) .
Value =
CDb1 ( txtDiskon. Value )
' Masukkan total penjualan pada record yang sama
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 7 ) .
Value =
CDb1 ( txtTota1. Value )
' Masukkan pembayaran pada record yang sama
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 8 ) .
Value =
CDb1 ( txtBayar . Value )
' Jika TextBox Piutang kosong atau bernilai O
If txtPiutang . Value = " " Or txtPiutang . Value = O
Then ' Piutang pada record yang sama bernilai O
wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 9 ) . Value
' Jika TextBox Piutang tidak bernilai O
Else
' Piutang pada record yang sama bernilai TextBox
Piutang wsHdrPj1n. Cells (RecordAkhirHdrPj1n + 1, 9 ) .
Value =
CDb1 ( txtPiutang. Value )
'No faktur di bawah record terakhir penerimaan piutang
wsPenPiu . Cells ( RecordAkhirPenPiu 1, 1) . Value
NoFaktur
' Masukkan tanggal pada record yang sama wsPenPiu.
Cells (RecordAkhirPenPiu + 1, 2 ) . Value = Date '
Masukkan kode pelanggan pada record yang sama

286
wsPenPiu. Cells (RecordAkhirPenPiu + 1, 3 ) . Value =
cmbKodePe1anggan. Value
' Masukkan total penjualan pada record yang sama
wsPenPiu. Cells (RecordAkhirPenPiu + 1, 4 ) . Value =
CDb1 ( txtTota1. Value )
' Masukkan pembayaran pada record yang sama
wsPenPiu. Cells (RecordAkhirPenPiu + 1, 5 ) . Value
=
CDb1 ( txtBayar . Value )
' Masukkan piutang pada record yang sama wsPenPiu.
Cells (RecordAkhirPenPiu + 1, 6 ) . Value =
CDb1 ( txtPiutang. Value )

End If
' Struktur pengulangan
berdasarkan jumlah item
transaksi
For No = 1 To kode listJua1
.ListCount — 1
' Pencarian kode barang barang dalam
Li stBox
Set c rgKodeBarang . Find( listJua1. List (No, 1) ,

Look In : =x1Va1ues )
' Jumlah barang dikurangi jumlah yang ter jual
c. Offset (0, 9 ) . Value =
c. Offset (O, 9 ) . Value —listJua1. List
(No, 3)
'No faktur di bawah record terakhir detail
penjualan wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No,
1) . Value =
NoFaktur
' Masukkan no urut item transaksi pada record
yang sama wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n +
No, 2) . Value = listJua1. List (No, O)
' Masukkan kode barang pada record yang sama
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 3) .
Value = listJua1. List (No, 1)
' Masukkan nama barang pada record yang sama
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 4 ) .
Value = listJua1. List (No, 2)
' Masukkan jumlah barang pada record yang sama
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 5) .
Value = listJua1. List (No, 3)
' Masukkan harga jual pada record yang sama
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 6 ) .
Value =
CDb1 ( listJua1. List (No, 4) )
' Masukkan diskon pada record yang sama

287
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 7 ) . Value =

CDb1 ( listJua1. List (No, 5 ) )


' Masukkan harga jual diskon record yang sama
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 8 ) .
Value =
CDb1 ( listJua1. List (No, 6 ) )
' Masukkan total penjualan pada record yang sama
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 9 ) .
Value =
CDb1 ( listJua1. List
(No, 7 ) ) Next No

' Pencarian sel berisi kode pelanggan


Set selPiutang = rgKodeP1gn. Find( cmbKodePe1anggan.
Value, Lookln : =x1Va1ues )

' Jika TextBox Piutang kosong atau bernilai O


If txtPiutang . Value = " " Or txtPiutang .
Value = O Then ' Piutang pelanggan tetap
selPiutang. Offset ( O , 7 ) . Value =
selPiutang. Offset ( O , 7 ) . Value + O
' Jika TextBox Piutang tidak bernilai O
Else
' Piutang pelanggan ditambah sesuai TextBox Piutang
selPiutang. Offset ( 0 ; 7 ) . Value —
selPiutang
End If
CDb1( txtPiutang

' ComboBox No Faktur dikosongkan


cmbNoFaktur . Value
' TextBox Jumlah dikosongkan
txtJum1ah. Value =
' TextBox Grand Total
berni1aEL0 txtGrandTota1.
Value ' TextBox Diskon
bernilai O txtDiskon.
Value
' TextBox Diskon (dalam rupiah)
bernilai O txtDiskonRp . Value '
TextBox Total bernilai O txtTota1.
Value ' TextBox Bayar bernilai O
txtBayar . Value
' TextBox Piutang bernilai O
txtPiutang . Value

' Nomor Faktur pada worksheet Tabe1Bantu


ditambah 1 wsTb1Bantu.Range( "B3" ) . Value =
wsTb1Bantu. Range( "B3 " ) . Value + 1
' Memanggil Sub Procedure Judu11temTranskasi
Call Judu11temTranskasi

288
' Menyimpan aplikasi
ThisWorkbook. Save

End Sub
' Kode ketika CommandButton Cetak di—klik
Private Sub cmdCetak_C1ick( )

' wsTb1Bantu adalah worksheet Tabe1Bantu


Set wsTb1Bantu = Sheets ( " Tabe1Bantu n )
' wsHdrPj1n adalah worksheet HeaderPenjua1an
Set wsHdrPj1n = Sheets ( "
HeaderPenjua1an n ) ' wsDt1Pj1n adalah
worksheet Detail Penjualan
Set wsDt1Pj1n = Sheets( "Detail Penjualan n )
' wsCetak adalah worksheet Cetak
Set wsCetak = Sheets( "Cetak " )
' Jika ComboBox Kode Pelanggan kosong
If cmbKodePe1anggan. Value = Then
' Menampilkan kotak pesan Kode Pelanggan Kosong
MsgBox n Gunakan Form Kasi r untuk pelanggan umum" ,
vbOKOn1y + vblnformation, n Kode Pelanggan
Kosong "
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika tidak ada transaksi penjualan


If listJua1. ListCount < 2 Then
' Menampilkan kotak pesan Bel um Ada Transaksi
Penjualan
MsgBox n Tidak ada transaksi penjualan n ,
vbOKOn1y + n Belum Ada
vbCritica1 ,
' Keluar dari Sub Transaksi Penjualan
Exit Sub " Procedure
End If

' Menghapus seluruh


sel worksheet Cetak wsCetak . Cells .
Clear

' Menentukan orientasi kertas


wsCetak. PageSetup . Orientation =
xlPortrait ' Menentukan margin kiri
kertas wsCetak. PageSetup .
LeftMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin kanan kertas
wsCetak. PageSetup . RightMargin
=

289
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin atas kertas
wsCetak. PageSetup . TopMargin =

Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup . BottomMargin
=
Application.
CentimetersToPoints ( 2 ) '
Menentukan ukuran pencetakan
wsCetak. PageSetup . Zoom = 100 '
Menentukan area cetak wsCetak.
PageSetup . PrintArea = l' $A: $G
TI

' Menentukan lebar kolom A worksheet Cetak


wsCetak. Columns( "A: A" ) . ColumnWidth = 10
Memasukkan teks FAKTUR PENJUALAN pada sel Al
wsCetak.Range( "Al" ) . Value = l' FAKTUR
PENJUALAN" ' Format font tebal (bold) pada sel
Al worksheet Cetak wsCetak.Range( "Al" ) .
Font . Bold = True
' Ukuran font ( 12 ) pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Font. Size = 12
' Teks pada range Al diformat rata tengah
wsCetak . Range( "Al : GI " ) .
HorizontalA1ignment = xlCenter ' Menggabungkan
range Al : GI wsCetak . Range( "Al : GI " ) .
Merge
' Menentukan tinggi baris ke—8 worksheet Cetak
wsCetak. Rows ( " 2 : 2" ) . RowHeight
' Memasukkan teks No Faktur pada sel A9 worksheet Cetak
wsCetak.Range( "A3" ) . Value = "No Faktur n
' Jika database penjualan kosong
If wsHdrPj1n.Range( "A3" ) . Value = n n Then
' Memasukkan no faktur pada sel B9 worksheet Cetak
wsCetak.Range( "B3" ) . Value = "TJOOO TI & 1
' Jika database penjualan tidak kosong
Else
' ElseJika ComboBox No Faktur kosong
If cmbNoFaktur . Value — Then
' Memasukkan no faktur berdasarkan isi sel B3
wsCetak.Range( "B3" ) . Value =
"TJOOO" & wsTb1Bantu.Range( "B3 tl ) .
Value Else
'No faktur berdasarkan ComboBox No Faktur
wsCetak.Range( "B3" ) . Value = cmbNoFaktur .
Value

290
End If
End If
' Memasukkan teks Tanggal pada sel A4 worksheet Cetak
wsCetak.Range( "A4" ) . Value = " Tanggal n
' Memasukkan tanggal hari ini pada sel B4 worksheet
Cetak wsCetak.Range( "B4" ) . Value = Date
' Memasukkan teks Pelanggan pada sel A5 worksheet Cetak
wsCetak.Range( "A5" ) . Value = " Pelanggan n
' Memasukkan pelanggan pada sel B5 worksheet Cetak
wsCetak. Range( "B5" ) . Value = txtNamaPe1anggan.
Value

' Memasukkan teks No Item pada sel A6 worksheet Cetak


wsCetak.Range( "A6" ) . Value = "No Item n
' Memasukkan teks Kode pada sel B6 worksheet Cetak
wsCetak.Range( "B6" ) . Value = " Kode n
' Memasukkan teks Nama Barang pada sel C6 worksheet
Cetak wsCetak.Range( "C6" ) . Value = "Nama Barang
' Memasukkan teks Jumlah pada sel D6 worksheet Cetak
wsCetak. Range( "D6" ) . Value = " Jumlah
' Memasukkan teks Diskon pada sel E6 worksheet
Cetak wsCetak.Range( "E6" ) . Value = " Di
skon n
' Memasukkan teks Harga pada sel F6 worksheet
Cetak wsCetak.Range( "F6" ) . Value = " Harga
n
' Memasukkan teks Total pada sel G6
worksheet Cetak wsCetak.Range( "G6" ) . Value
= " Total n
' Menentukan lebar kolom B worksheet Cetak
wsCetak . Columns ( "B ) . ColumnWidth = 10 '
Menentukan lebar kolom C worksheet Cetak wsCetak .
Columns ( "C: C" ) . ColumnWidth = 20 ' Menentukan
lebar kolom D worksheet Cetak wsCetak . Columns
( "D : D" ) . ColumnWidth ' Menentukan lebar
kolom E worksheet Cetak wsCetak . Columns ( "E :
E" ) . ColumnWidth ' Menentukan lebar kolom F
worksheet Cetak wsCetak . Columns ( "F : F" ) .
ColumnWidth = 12 ' Menentukan lebar kolom G
worksheet Cetak wsCetak . Columns ( "G: G" ) .
ColumnWidth = 14 ' Teks pada range A6 :G6 diformat
rata tengah wsCetak. Range( "A6 :G6" ) .
HorizontalA1ignment = xlCenter ' Sel pada range A6
:G6 bagian atas diberi border wsCetak . Range( "A6
:G6" ) . Borders (xlEdgeTop) . LineSty1e =
xlContinuous
' Range A6 :G6 bagian bawah diberi border garis ganda
wsCetak . Range( "A6 :G6" ) . Borders
(xlEdgeBottom) . LineSty1e = xlDoub1e

' Struktur pengulangan berdasarkan jumlah item transaksi


For No = 1 To listJua1. ListCount

291
' Masukkan no item transaksi setelah baris ke—13
wsCetak.Ce11s(6 + No, 1 ) . Value = -listJua1. List (No, O)
' Format rata tengah pada kolom No Item wsCetak. Cells (6 +
No, 1 ) . HorizontalAlignment = xlCenter ' Masukkan kode
barang pada record yang sama wsCetak. Cells (6 + No, 2) .
Value = listJua1. List (No, 1) ' Masukkan nama barang pada
record yang sama wsCetak. Cells (6 + No, 3) . Value =
listJua1. List (No , 2) ' Masukkan jumlah barang pada
record yang sama wsCetak. Cells (6 + No, 4 ) . Value =
listJua1. List (No , 3) ' Masukkan diskon barang pada
record yang sama wsCetak. Cells (6 + No, 5)
=
. Value listJua1. List (No, 5)
' Masukkan harga (harga jual) pada record
yang sama wsCetak. Cells (6 + No, 6 ) . Value =
CDb1 ( listJua1. List (No,
4) ) ' Format data pada kolom
Harga wsCetak. Cells (6 + No,
6 ) . NumberFormat =

' Masukkan total item transaksi pada record yang


sama wsCetak. Cells (6 + No, 7) . Value =
CDb1 ( listJua1. List (No,
7) ) ' Format data pada kolom
Total wsCetak. Cells (6 + No, 7) .
NumberFormat =

Next No

' Struktur pengulangan untuk menambahkan border


For Border = 1 To 7
' Border baris terakhir tabel faktur penjualan
wsCetak. Cells (listJua1. ListCount + 5, Border)
.
Borders (xlEdgeBottom) . LineSty1e =
xlDoub1e Next Border
With listJua1
' Menambahkan teks Grand Total
wsCetak. Cells( . ListCount 6, 6 ) . Value = "Grand
+ Total "
' Menambahkan teks Diskon
wsCetak. Cells( . ListCount 7, 6 ) . Value "Diskon"
+ =
' Menambahkan teks Total
wsCetak. Cells( . ListCount
+
8 , 6= ) . Value " Total "
' Menambahkan teks Bayar
wsCetak. Cells( . ListCount 9, 6 ) . Value " Bayar "
+ =
' Menambahkan teks Piutang
wsCetak. Cells( . ListCount 10 6 ) . " Piutang "

292
+ , Value =
' Memasukkan nilai grand total transaksi penjualan
wsCetak. Cells( . ListCount + 6, 7) . Value =
CDb1 ( txtGrandTota1. Value )
' Format data nil ai grand total transaksi
penjualan wsCetak. Cells( . ListCount + 6, 7) .
NumberFormat =

' Memasukkan diskon transaksi penjualan (dalam


rupiah) wsCetak. Cells( . ListCount + 7, 7) . Value
=
CDb1 ( txtDiskonRp . Value )
' Format data diskon transaksi penjualan (dalam
rupiah)
wsCetak.Cells( . ListCount 7 —7) .NumberFormat
=
' Menambahkan border di bawah teks Diskon wsCetak.
Cells( . ListCount + 7, 6 ) . Borders (xlEdgeBottom)
.

LineSty1e = xlDoub1e
' Menambahkan border di bawah nil ai diskon
wsCetak. Cells( . ListCount + 7, 7 ) . Borders
( xlEdgeBottom) .

LineSty1e = xlDoub1e
' Memasukkan nilai total transaksi penjualan
wsCetak. Cells( . ListCount + 8, 7) . Value =

CDb1 ( txtTota1. Value )


' Format data nil ai total transaksi penjualan
wsCetak. Cells( . ListCount + 8, 7) .
NumberFormat =

' Memasukkan nilai total pembayaran


wsCetak. Cells( . ListCount + 9, 7) .
Value =
CDb1 ( txtBayar . Value )
' Format data nil ai total pembayaran
wsCetak. Cells( . ListCount + 9, 7) .
NumberFormat =

' Jika TextBox Piutang kosong atau bernilai O


If txtPiutang. Value = Or txtPiutang . Value = O
Then ' Memasukkan nilai piutang = O wsCetak.
Cells( . ListCount + 10, 7) . Value
Else

293
' Nilai piutang berdasarkan TextBox Piutang
wsCetak. Cells( . ListCount + 10, 7) . Value
=
CDb1 ( txtPiutang. Value )
End If
' Format data nil ai piutang wsCetak.
Cells( . ListCount + 10 , 7 ) . NumberFormat
=

' Menambahkan border di bawah teks Diskon


wsCetak. Cells( . ListCount + 10, 6 ) .
Borders (xlEdgeBottom) . LineSty1e =
xlDoub1e ' Menambahkan border di bawah
nilai diskon wsCetak. Cells( . ListCount
+ 10, 7) .
Borders (xlEdgeBottom) . LineSty1e =
xlDoub1e End With

' Mencetak faktur penjualan wsCetak.


PrintOut Copies : Collate : —True
End Sub

' Kode ketika CommandButton Bayar di—klik


Private Sub cmdBayar_C1ick( )

' Jika ComboBox Kode Pelanggan kosong


If cmbKodePe1anggan. Value = Then
' Menampilkan kotak pesan Kode Pelanggan Kosong
MsgBox n Gunakan Form Kasi r untuk pelanggan umum" ,
vbOKOn1y + vblnformation, n Kode Pelanggan
Kosong "
' Keluar dari Sub Procedure
Exit
Sub
End If

' Jika tidak ada transaksi penjualan


If listJua1. ListCount < 2
Then
' Menampilkan kotak pesan Bel um Ada Transaksi
Penjualan
MsgBox n Tidak ada transaksi penjualan n ,
vbOKOn1y n Belum + vbCritica1 ,
' Keluar dari Ada Transaksi Penjualan
Exit Sub " Sub Procedure
End If

' Memanggil Sub Procedure


cmdCetak_C1ick Call cmdCetak_C1ick

' Memanggil Sub Procedure cmdSimpan_C1ick

294
Call cmdSimpan_C1ick

End Sub

' Kode ketika ComboBox No Faktur diubah


Private Sub cmbNoFaktur_Change( )

' wsHdrPj1n adalah worksheet HeaderPenjua1an


Set wsHdrPj1n = Sheets ( "
HeaderPenjua1an n ) ' wsDt1Pj1n adalah
worksheet Detail Penjualan
Set wsDt1Pj1n = Sheets( "Detail Penjualan n )
' rgNoFakturHdrPj1n adalah range NoFakturHdrPj1n
Set rgNoFakturHdrP j In = wsHdrPj1n . Range( n
NoFakturHdrPJ1n ' rgNoFakturDt1Pj1n adalah range
NoFakturDt1Pj1n
Set rgNoFakturDt1Pj1n = wsDt1Pj1n. Range( n

NoFakturDt1PJ1n
' rgDtbsDt1Pj1n adalah range DatabaseDetai1Penjua1an
Set rgDtbsDt1Pj1n = wsDt1Pj In. Range
( "DatabaseDetai1Penjua1an" )
' Jika ComboBox No Faktur kosong
If cmbNoFaktur . Value = Then
' Keluar dari Sub Procedure
Exit Sub
End If

' Pencarian no faktur pada worksheet HeaderPenjua1an


Set p = rgNoFakturHdrPj1n.Find( cmbNoFaktur .
Value , Lookln : =x1Va1ues )
' Menampilkan tanggal transaksi sesuai no faktur
terpilih
1b1Tangga1. Caption = p. Offset ( O , 1 ) . Value
' Menampilkan tanggal jatuh tempo record yang sama
1b1Tempo . Caption = p. Offset ( O , 2 ) . Value
' Jika pelanggan umum
If p. Offset ( O , 3 ) . Value =
"Umum " Then ' ComboBox Kode
Pelanggan kosong
cmbKodePe1anggan. Value =
' TextBox Nama Pelanggan diisi Umum
txtNamaPe1anggan. Value = " Umum n
Else
' Masukkan ComboBox Kode Pelanggan record yang sama
cmbKodePe1anggan.Va1ue = p. Offset ( 0 , 3 ) . Value
End If
' Masukkan TextBox Grand Total record yang sama
txtGrandTota1. Value = Format (p. Offset ( 0 , 4 )
. Value, ' Masukkan TextBox Diskon record yang
sama txtDiskon.Va1ue = p. Offset ( 0 , 5 ) . Value

295
' Masukkan TextBox Total Penjualan record yang sama
txtTota1. Value = Format (p.Offset(0, 6 ) . Value,
' Masukkan TextBox Bayar record yang sama
txtBayar . Value . Value,
' Masukkan TextBox Piutang record yang sama
txtPiutang . Value = Format (p. Offset ( O , 8 ) .
Value, " )

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDt1Pj1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet Detail
Penjualan wsDt1P j In. ShowA11Data
End If

' Memasukkan no faktur ke dalam sel K 3 wsDt1Pj1n.


Range( "K3" ) . Value = cmbNoFaktur . Value '
Penyaringan data menggunakan Advanced Filter
rgDtbsDt1Pj1n. AdvancedFi1ter Action :
=x1Fi1terInP1ace ,
CriteriaRange : =wsDt1Pj1n. Range ( n K2 : K 3 )
' Menghapus Lis tBox
listJua1. Clear

' Memanggil Sub Procedure Judu11temTranskasi


Call Judu11temTranskasi
With wsDt1Pj1n
' rgTampi1 adalah range no faktur yang hasil
penyaringan Set rgTampi1 = wsDt1Pj1n. Range( n
NoFakturDt1Pj1n" ) .
SpecialCe11s ( xlCe1 ITypeVi sible )
' sTampi1 merupakan pengulangan setiap sel dalam
rgTampi1
For Each sTampi1 In
rgTampi1 With listJua1
' Memasukkan item ke dalam ListBox
. Addltem sTampi1. Value
'Nomor item transaksi 1 kolom di kanan
sTampi1
. List( . ListCount
sTampi1. Offset
(O, 1 ) . Value
' Kode barang 2 kolom di kanan sTampi1
. List( . ListCount
sTampi1. Offset
(O, 2) . Value
'Nama barang 3 kolom di kanan sTampi1
. List( . ListCount
sTampi1. Offset
(O, 3) . Value
' Jumlah barang 4 kolom di sebelah kanan
sTampi1

296
. List( . ListCount
sTampi1. Offset
(O, 4 ) . Value
' Harga barang 5 kolom di sebelah kanan
sTampi1
. List( .ListCount
Format( sTampi1. Offset (0, 5) . Value, " # ,
" )
' Diskon 6 kolom di sebelah kanan sTampi1
. List( .ListCount —
sTampi1 . Offset (O,
6 ) . Value
' Harga diskon 7 kolom di sebelah kanan
sTampi1
. List( .ListCount -
Format ( sTampi1. Offset (0, 7) . Value, " # ,
" )
' Total item transaksi 8 kolom di kanan
sTampi1
. List( .ListCount —
Format( sTampi1. Offset (0, 8 ) . Value, " # ,
" )
End With
Next sTampi1
End With

' Menghapus nil ai sel K 3 dalam worksheet Detail


Penjualan wsDt1Pj1n. Range( "K3 " ) . ClearContents

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDt1Pj1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet Detail
Penjualan wsDt1P j In. ShowA11Data
End If

End Sub

' Kode ketika CommandButton Keluar di—klik


Private Sub cmdKe1uar_C1ick( )

' Keluar dari Form Transaksi Penjualan


Unload Me

297
End Sub

Kode ketika Form Transaksi Penjualan ditutup


Private Sub UserForm_QueryC10se ( Cancel As Integer ,
CloseMode As Integer )

o
' wsHdrPj1n adalah worksheet
HeaderPenjua1an Set wsHdrPj1n = Sheets( "
HeaderPenjua1an " ) ' wsDt1Pj1n adalah
worksheet Detail Penjualan Set wsDt1Pj1n =
Sheets( " Detail Penjualan" )

o
' Jika data yang ditampilkan merupakan hasi1 penyaringan
If wsHdrPj In. FilterMode Then
Tampilkan seluruh data dalam worksheet HeaderPenjua1an
wsHdrPj In . ShowA11 Data
End If

' Jika data yang ditampilkan merupakan has il


penyaringan If wsDt1Pj1n. FilterMode Then
Tampilkan seluruh data dalam worksheet Detail
Penjualan wsDt1Pj In . ShowA11 Data
End If

End Sub

4.9 Membuat Form Kasir


Form Kasir pada prinsipnya mempunyai fungsi dan bentuk
tampilan yang hampir sama dengan Form Transaksi Penjualan.
Perbedaannya adalah Form Kasir hanya digunakan untuk
transaksi penjualan bagi pelanggan (pembeli) umum. Dalam
transaksi penjualan, pembeli harus membayar kontan seluruh
barang yang dibeli (pembeli tidak diperbolehkan untuk hutang).
Kode Macro dalam Form Kasir tidak diberi komentar penjelasan,
karena pada prinsipnya mempunyai isi penjelasan yang hampir
sama dengan Form Transaksi Penjualan.
1 . Pilih menu utama Insert > userForm. Atur properti dserForm
melalui window Properties. Pilih menu utama yew >
Properties Window atau tekan tombol F4. dbah properti
OserForm sebagai berikut: Name = formKasir, Caption =
(kosong), Height = 360 dan Width = 432.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Kasir menjadi seperti pada Gambar 4.13.

298
Gambar 4.13 Tampilan Form Kasir.

3. Pengaturan properti pada objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti

Name = cmdBaru, Caption = Baru, Height = 24,


Left = 6, Top = 306, Width = 42, Accelerator = B,
Tablndex = 4, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackColor =
CommandButton (biru), Forecolor = ( utih)
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 48, Top = 306, Width = 42, Accelerator =
C, Tablndex = 2, Font = (Font = Tahoma; Font
CommandButton style = Bold; Size = 8), BackColor =
(biru), Forecolor =
( utih)
CommandButton Name = cmdBayar, Caption = Bayar, Height = 24,
Left = 90, Top = 306, Width = 42, Accelerator = y,
Tablndex = 3, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackC010r = utih)
(
299
(biru), Forecolor =
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 222, Top = 306, Width = 42,
CommandButton
Accelerator = K, Tablndex = 5, Font = (Font =
Tahoma; Font style = Bold; Size = 8), BackColor =

(biru), Forecolor =
( utih)
Name = cmdlnput, Caption = Input, Height = 24,
Left = 66, Top = 78, Width = 42, Accelerator = I,
Tablndex = 2, Font = (Font = Tahoma; Font style
= Bold; Size = 8), BackC010r =
CommandButton (biru), Forecolor = ( utih)
Name = cmdEdit, Caption = Edit, Height = 24,
Left = 108, Top = 78, Width = 42, Accelerator =
E, Tablndex = 3, Font = (Font = Tahoma; Font
CommandButton style = Bold; Size = 8), BackColor =
(biru), Forecolor = (
utih)
Name = cmdHapus, Caption = Hapus, Height =
24, Left = 150, Top = 78, Width = 42, Accelerator
= H, Tablndex = 4, Font = (Font = Tahoma; Font
style = Bold; Size = 8), BackColor =
(biru), Forecolor =
CommandButton ( utih)
Name = cmdSortAscBarang, Caption = (kosong),
Height = 18, Left = 126, Top = 6, Width = 18,
CommandButton PicturePosition = 12 —
frmPicturePositionCenter, Picture = Sort
Ascending.gif, Tablndex = 5
Name = cmdSortDesBarang, Caption = (kosong),
Height = 18, Left = 150, Top = 6, Width = 18,
CommandButton
PicturePosition = 12 — frmPicturePositionCenter,
Picture = Sort Descendin . if, Tablndex = 6
Name = cmdCariBarang, Caption = (kosong),
Height = 18, Left = 174, Top = 6, Width = 18,
PicturePosition = 12 —
CommandButton

300
frmPicturePositionCenter, Picture = Cari.gif,
Tablndex = 7
Name = frmBarang, Caption = Barang, Height =
114, Left = 6, Top = 36, Width = 204, Tablndex =
Frame 0
Name = txtNamaBarang, Height = 18, Left = 60,
Top = 30, Width = 132, Locked = True, BackColor
TextBox = (abu-abu)
Name = txtJumlah, Height = 18, Left = 60, Top =
54, Width = 45, TextAlign = 3 —
fmTextAlignRight, Tablndex = 1, BackColor =
TextBox (abuabu)
Name = txtStok, Height = 18, Left = 147, Top —
TextBox 54, Width = 45, TextAli n = 3 — fmTextAli nRi ht,

Locked = True, BackColor = (abuabu)


Name = txtGrandTotal, Height = 18, Left = 318,
Top = 288, Width = 102, Locked = True, TextAlign
= 3 — fmTextAlignRight, BackColor =
TextBox (abu-abu), Value = O
Name = txtDiskon, Height = 18, Left = 318, Top =
312, Width = 24, TextAlign = 3 —
fmTextAlignRight, BackColor =
(abu-abu), MaxLength
TextBox = 2, Tablndex = 7, Value = 0
Name = txtDiskonRp, Height = 18, Left = 360,
Top = 312, Width = 60, Locked = True, TextAlign =
3 — fmTextAlignRight, BackColor =
TextBox (abu-abu), Value = O
Name = txtTotal, Height = 21, Left = 276, Top =
42, Width = 144, Font = (Font = Tahoma; Font
style = Bold; Size = 11), Locked = True, TextAlign =
3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
TextBox ( utih), Value = 0

301
Name = txtBayar, Height = 21, Left = 276, Top =
66, Width = 144, Font = (Font = Tahoma; Font
style = Bold; Size
TextBox = 11), TextAlign = = (putih),
3—
fmTextAlignRight, BackColor (biru), Forecolor =
Tablndex = 1, Value = 0
Name = txtKembali, Height = 21, Left = 276, Top
= 90, Width = 144, Font = (Font = Tahoma; Font
style = Bold; Size = 11), Locked = True, TextAlign
TextBox = 3 — fmTextAlignRight,
BackColor = (biru),
Forecolor =
( utih), Value = 0
Name = cmbKodeBarang, Height = 18, Left = 60,
Top = 6, Width = 60, BoundColumn = 1,
ColumnCount = 2, ColumnWidths = 45 pt; 135
pt, ListWidth = 180 pt, Style = 2
fmStyleDropDownList, Tablndex = 0, BackColor
=
ComboBox (abu-abu)
Name = listJual, Height = 123, Left = 6, Top =
156, Width = 414, BoundColumn = 8,
ListBox ColumnCount = 8, Tablndex = 18
Name = imgForm, Height = 24, Left = 6, Top — 6
Image
Width = 24, Picture = Pen•ualan.gif,
PictureAlignment = 2 — frmPictureAlignmentCenter,
PictureSizeMode = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Kasir, Height =
24, Left = 30, Top = 6, Width = 390, Font = (Font
Label = Tahoma; Font style = Bold; Size = 16),
BackColor = (hijau muda),
Forecolor = (merah)
Name = lblTotal, Caption = Total, Height = 21,
Left = 216, Top = 42, Width = 60, Font = (Font =
Label Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
( utih)

302
Name = lblBayar, Caption = Bayar, Height = 21,
Left = 216, Top = 66, Width = 60, Font = (Font =
Label Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
( utih)
Name = lblKembali, Caption = Kembali, Height =
21, Left = 216, Top = 90, Width = 60, Font =
Label (Font = Tahoma; Font style = Bold; Size = 11),
BackC010r = (biru), Forecolor =
( utih)
Name = lblKodeBarang, Caption = Kode Barang,
Label
Hei ht = 12, Left = 6, To = 12, Width = 54
Name = lblNamaBarang, Caption = Nama Barang,
Label
Height = 12, Left = 6, To = 36, Width = 54
Name = lblJumlah, Caption = Jumlah, Height = 12,
Label
Left = 6, To = 60, Width = 54
Name = lblStok, Caption = Stok, Height = 12, Left
Label
= 114, To = 60, Width = 24
Name = lblGrandTotal, Caption = Grand Total,
Label
Hei Flt = 12, Left = 270, To = 294, Width = 48
Name = lblDiskon, Caption = Diskon, Height = 12,
Label
Left = 270, To = 318, Width = 48
Name = lblPersen, Caption = %, Height = 12, Left
Label
= 348, Top = 318, Width = 12
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
Private Sub UserForm_Activate( )
Call ItemBarang

Call Judu11temTranskasi

End Sub

Sub ItemBarang( )

Set wsDtbsBrg = Sheets ( " DatabaseBarang n


)
If wsDtbsBrg . Range( "A3" ) . Value = Then
Exit Sub

303
Else
cmbKodeBarang.
Clear
For Each sBarang In wsDtbsBrg .
Range( "KodeBarang With Me . cmbKodeBarang
. Addltem sBarang . Value
. List( . ListCount —
sBarang . Offset
(O, 1 ) . Value
End With Next sBarang
cmbKodeBarang. Value = cmbKodeBarang .
List( O )
End If

End Sub

Sub
Judu11temTranskasi ( )
listJua1. Clear

With listJua1
. Addl tem
. List ( •
ListCount
. List ( • Barang
ListCount
. List ( • ListCount"
. List ( •
ListCount Disc.
. List( •
ListCount
. List ( • ListCount
. List ( • ListCount"
. List ( • ListCount
. ColumnWidths = 20 & & 110 &
40 & & 50 & ; 11
& 30 & n
; n
& 50 &
End With

End Sub

Private Sub cmbFaktur_Enter( )


cmbFaktur . BackC010r =

End Sub

Private Sub cmbFaktur_Exit (ByVa1


Cancel As MSForms . ReturnB001ean )
cmbFaktur . BackC010r = &HCOCOCO
End Sub

304
Private Sub cmbKodeBarang_Enter( )
cmbKodeBarang. BackC010r =
&H80000005&
End Sub

Private Sub cmbKodeBarang_Exit (ByVa1


Cancel As MSForms . ReturnB001ean)
cmbKodeBarang . BackC010r = &HCOCOCO
End Sub

Private Sub txtJum1ah_Enter( )


txtJum1ah . BackC010r =

End Sub

Private Sub txtJum1ah_Exit (ByVa1


Cancel As MSForms .
ReturnB001ean ) txtJum1ah .
BackC010r = &HCOCOCO
End Sub

Private Sub txtDiskon_Enter( )


txtDiskon. BackC010r =
txtDiskon. Value
= 11
End Sub

Private Sub txtDiskon_Exit


( ByVa1 Cancel As )
MSForms . ReturnB001ean = &HCOCOCO
txtDiskon. BackC010r If
txtDiskon. Value =
txtDiskon. Value
End If
End Sub Then

Private Sub txtBayar_Enter( )


txtBayar . Value
End Sub

Private Sub txtBayar_Exit (ByVa1 Cancel


As MSForms . ReturnB001ean)

If txtBayar . Value = Or txtBayar . Value = O Then


txtBayar . Value
If txtTota1. Value = " Or txtTota1. Value =
O Then txtKemba1i . Value Exit Sub
Else txtKemba1i .
Value
End If
End If

305
End Sub

Private Sub txtJum1ah_KeyPress (ByVa1


KeyAscii As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( "O" ) To Asc( "9
Case Else
KeyAsc11
End Select

End Sub

Private Sub txtDiskon_KeyPress (ByVa1


KeyAscii As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub

Private Sub txtBayar_KeyPress (ByVa1


KeyAscii As MSForms . Returnlnteger )

Select Case KeyAscii


Case Asc( "O") To Asc( "9" )
Case Else
KeyAsc11
End Select

End Sub

Private Sub cmdCariPe1anggan_C1ick( )

formCariPe1anggan .
Sho
End Sub

Private Sub cmdSortAscBarang_C1ick( )

Set wsDtbsBrg = Sheets ( " DatabaseBarang n

If wsDtbsBrg .
FilterMode Then
wsDtbsBrg . ShowA11Data
End If

wsDtbsBrg . Range ( "DatabaseBarang " ) . Sort Keyl : =

306
"Nama Barang" , Orderl : =x1Ascending , Header :
=x1Yes
Call ItemBarang

End Sub

Private Sub cmdSortDesBarang_C1ick( )

Set wsDtbsBrg = Sheets ( " DatabaseBarang n

If wsDtbsBrg . FilterMode Then


wsDtbsBrg .
ShowA11Data End If

wsDtbsBrg . Range ( "DatabaseBarang 'I ) . Sort


Keyl: "Nama Barang" , Orderl : =x1Descending ,
Header : =x1Yes
Call ItemBarang

End Sub

Private Sub cmdCariBarang_C1ick( )


formCariBarang . Show
End Sub

Private Sub cmbKodeBarang_Change ( )

Set wsDtbsBrg = Sheets ( " DatabaseBarang n )


Set rgKodeBrg = wsDtbsBrg . Range ( " KodeBarang

If cmbKodeBarang. Value = Then


Exit Sub
El self wsDtbsBrg Range(
. "A3 " ) . Then
Exit Sub Value = -
End If

Set c = rgKodeBrg . Find ( cmbKodeBarang . Value ,


Lookln : =x1Va1ues, MatchCase :
=Fa1se ) txtNamaBarang . Value = c.
Offset (0, 1 ) . ValueOffset (0, 9) .
txtStok. Value = c.Value
txtJum1ah. SetFocus

End Sub

Private Sub txtDiskon_Change( )

On Error Resume Next

307
If txtGrandTota1. Value =
O Then txtDiskon.
Value Exit Sub
El self txtDiskon . Value = Or txtDiskon. Value = O
Then txtDiskonRp. Value txtTota1. Value =
Format (CDb1 ( txtGrandTota1. Value) ,

Exit Sub
Else txtDiskonRp. Value = Format( ( txtDiskon.
Value / 100 ) txtGrandTota1. Value, " # , )
txtTota1. Value = Format (CDb1 ( txtGrandTota1.
Value) — CDb1 ( txtDiskonRp . Value) ,
If CDb1 ( txtBayar . Value) < CDb1 ( txtTota1.
Value) Then txtKemba1i . Value = O Exit
Sub
Else txtKemba1i . Value = Format ( CDb1
( txtBayar . Value) — CDb1 ( txtTota1.
Value) ,
End
If End
If

End Sub

Private Sub txtBayar_Change( )

txtBayar . Value = Format ( txtBayar . Value, n


# , )

If txtTota1. Value = Or txtTota1. Value = O


Then txtKemba1i . Value Exit Sub
El self txtBayar . Value = Or txtBayar . Value =
O Then txtKemba1i . Value Exit Sub
El self CDb1 ( txtBayar . Value) < CDb1
( txtTota1. Value) Then txtKemba1i . Value
Exit Sub
Else txtKemba1i . Value Format ( CDb1
( txtBayar . Value) — CDb1 ( txtTota1.Value)
,
End If

End Sub

Private Sub cmdInput_C1ick(


)

Set wsDtbsBrg = Sheets ( "DatabaseBarang t' )


Set rgKodeBrg = wsDtbsBrg. Range( "KodeBarang

If wsDtbsBrg . Range( "A3" ) . Value = Then


Exit Sub
End If

308
If txtJum1ah . Value = Or txtJum1ah . Value = O Then
MsgBox n Jumlah barang belum diisi n ,
vbOKOn1y + vbCritica1 , " Jumlah Barang
Kosong" txtJum1ah. SetFocus Exit Sub
End If

For CekKodeBarang = 1 To listJua1 . ListCount


If listJua1. List ( CekKodeBarang, 1 ) —
cmbKodeBarang. Value Then
MsgBox " Item & listJua1. List ( CekKodeBarang ,

sudah ada , vbOKOn1y , Item Barang Sudah


Masuk " listJua1. SetFocus listJua1.
Listlndex = CekKodeBarang
Exit Sub
End If
Next CekKodeBarang

CekStok = txtStok. Value — txtJum1ah. Value

If CekStok < O Then


MsgBox "Stok " & txtNamaBarang . Value & " yang
tersedia
& txtStok. Value, vbOKOn1y, "Stok Barang
Tidak Ada" txtJum1ah. Value = 11 txtJum1ah. SetFocus
Exit Sub End If

Set c rgKodeBrg . Find ( cmbKodeBarang . Value ,


Lookln : =x1Va1ues )
With listJua1
. Addl tem
. List( .
ListCount
. List( .
ListCount
. List( .
ListCount
. List( .
ListCount
. List( .
ListCount
Format (c.
Value
Offset
( 0 ,
. List( .
ListCount
. List( . ListCount
Format (c. Offset ( 0 ,
. List( . ListCount *

309
CDb1(c.Offset(O, 7) . Value) ,
End With

TotalJua1
For Total = 1 To listJua1. ListCount
TotalJua1 = TotalJua1 + CDb1
( listJua1. List (Total , 7) )
txtGrandTota1. Value = Format
( TotalJua1 , txtTota1. Value = Format (TotalJua1 ,
txtBayar . Value Next Total

txtJum1ah. Value =
cmbKodeBarang . SetFocus

txtDiskon. Value
txtDiskonRp.
Value
txtBayar . Value

End Sub

Private Sub cmdEdit_C1ick( )


Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
Set rgKodeBrg = wsDtbsBrg . Range ( " KodeBarang

If txtJum1ah . Value = " Then


MsgBox n Jumlah barang belum diisi n ,
vbOKOn1y + vbCritica1 , " Jumlah Barang
Kosong " txtJum1ah. SetFocus Exit Sub
End If

With listJua1
If . List Index < 1 Then
MsgBox "Pilih nomor item yang akan
diedit" , vbOKOn1y + vblnformation, n Pilih
Nomor Item " listJua1. SetFocus Exit Sub
Else
CekStok = txtStok. Value — txtJum1ah. Value
If CekStok < O Then
MsgBox "Stok " & txtNamaBarang . Value &
yang tersedia & txtStok. Value,
vbOKOn1y
+ vbCritica1 , " Stok Barang
Tidak Ada" txtJum1ah. Value =
txtJum1ah. SetFocus Exit Sub
End If

Set c = rgKodeBrg . Find( . List( . List Index,


0 ) ,

310
Lookln : =x1Va1ues )
. List( . List Index, 3) = txtJum1ah.Va1ue
. List( . List Index, 4 ) =
Format (c . Offset ( 0 , 5 ) . Value,
. List( . List Index, 5 ) = c. Offset ( 0 , 6 )
. Value
. List( . List Index, 6 )
Format (c . Offset ( 0 ,
. List( . List Index, 7 ) = Format ( txtJum1ah.
Value *
CDb1(c.Offset(0, 7 ) . Value) ,
End If End
With

TotalJua1
For Total = 1 To listJua1. ListCount
TotalJua1 = TotalJua1 + CDb1 ( listJua1. List
(Total , 7) ) txtGrandTota1. Value =
Format ( TotalJua1 , txtTota1. Value
= Format (TotalJua1 , txtBayar . Value Next Total

txtJum1ah. Value =
cmbKodeBarang . SetFocus

txtDiskon. Value
txtDiskonRp.
Value
txtBayar . Value

End Sub

Private Sub cmdHapus_C1ick( )


Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
Set rgKodeBrg = wsDtbsBrg . Range ( " KodeBarang" )

If listJua1. Listlndex < 1 Then


MsgBox n Pilih nomor item yang akan
dihapus" , vbOKOn1y, "Pilih Nomor Item"
listJua1. SetFocus Exit Sub
Else listJua1. Removeltem (listJua1.
List Index)
End If

For Noltem = 1 To listJua1. ListCount


listJua1. List (Noltem, O) = Noltem
Next Noltem

If listJua1. ListCount =
1 Then txtGrandTota1.
Value txtTota1.

311
Value txtKemba1i .
Value
Else
TotalJua1
For Total = 1 To listJua1. ListCount
TotalJua1 TotalJua1 + CDb1 ( listJua1. List
( Total ,
7) ) txtGrandTota1. Value = Format ( TotalJua1 ,
txtTota1. Value txtBayar . Value
Next Total End If = Format
( TotalJua1 ,
txtDiskon. Value
txtDiskonRp. Value
txtBayar . Value

End Sub

Private Sub cmdBaru_C1ick( )


txtJum1ah. Value =
txtGrandTota1.
Value
txtDiskon. Value
txtDiskonRp.
Value txtTota1.
Value
txtBayar . Value
txtKemba1i .
Value
Call Judu11temTranskasi

End Sub

Private Sub cmdCetak_C1ick( )

Set wsTb1Bantu = Sheets ( " Tabe1Bantu n )


Set wsHdrPj1n = Sheets ( " HeaderPenjua1an n
Set wsDt1Pj1n = Sheets( "Detail Penjualan n )
Set wsCetak = Sheets( "Cetak" )
If listJua1. ListCount < 2 Then
MsgBox "Tidak ada transaksi penjualan n , vbOKOn1y
+ vbCritica1, "Belum Ada Transaksi Penjualan"
Exit Sub
End If

If CDb1 ( txtBayar . Value) < CDb1 ( txtTota1. Value)


Then
MsgBox Jumlah pembayaran kurang n , vbOKOn1y
+ vblnformation, Pembayaran Kurang" txtBayar .
SetFocus Exit Sub End If

312
wsCetak . Cells . Clear

wsCetak. PageSetup. Orientation = xlPortrait


wsCetak. PageSetup. LeftMargin =
Application. CentimetersToPoints ( 2
) wsCetak. PageSetup. RightMargin =
Application. CentimetersToPoints ( 2
) wsCetak. PageSetup . TopMargin =
Application . CentimetersToPoints
( 2 ) wsCetak. PageSetup . BottomMargin
= _
Application .
CentimetersToPoints ( 2 )
wsCetak. PageSetup . Zoom = 100
wsCetak. PageSetup . PrintArea =

wsCetak. Columns( "A : A" ) . ColumnWidth = 10


wsCetak . Range ( "Al " ) . Value = " FAKTUR
PENJUALAN" wsCetak.Range( "Al " ) . Font . Bold
= True wsCetak.Range( "Al " ) . Font. Size = 12
wsCetak . Range ( "Al : GI t
' ) .
HorizontalÄ1ignment = xlCenter wsCetak . Range (
"Al : GI " ) . Merge wsCetak. Rows( " 2 : 2" ) .
RowHeight wsCetak.Range( "A3" ) . Value = "No
Faktur n
If wsHdrPj1n.Range( "A3" ) . Value = n n Then
wsCetak.Range( "B3" ) . Value = II TJOOO 'I &
1
Else wsCetak.Range( "B3" ) .
Value =
"TJOOO" & wsTb1Bantu . Range( 'I B3 'I ) .
Value
End If wsCetak.Range( "A4" ) .
Value = " Tanggal "
wsCetak.Range( "B4" ) . Value =
Date
wsCetak . Range( "A5 " ) • " Pelanggan
Value = "
wsCetak . Range( "B5" ) • " Umum "
Value =
wsCetak.Range( "A6" ) . "No Item"
Value =
wsCetak.Range( "B6" ) . " Kode "
Value =
wsCetak.Range( "C6" ) . "Nama Barang
Value = "
wsCetak. Range ( "D6" ) . Value = "
Jumlah " wsCetak.Range( "E6" ) . Value =
" Di skon " wsCetak.Range( "F6" ) .
Value = " Harga "
wsCetak.Range( "G6" ) . Value = " Total
" wsCetak . Columns ( "B : B" ) .

313
ColumnWidth = 10 wsCetak . Columns ( "C:
C" ) . ColumnWidth = 20 wsCetak .
Columns ( "D : D" ) . ColumnWidth
wsCetak . Columns ( "E : E" ) .
ColumnWidth wsCetak . Columns ( "F :
F" ) . ColumnWidth = 12 wsCetak .
Columns ( "G:G" ) • ColumnWidth = 14
wsCetak.Range( "A6 :G6" ) .
HorizontalA1ignment = xlCenter
wsCetak.Range( "A6 :G6" ) . Borders
( xlEdgeTop) . LineSty1e = xlContinuous
wsCetak . Range( "A6 :G6" ) . Borders
(xlEdgeBottom) . LineSty1e = xlDoub1e

For No = 1 To listJua1. ListCount


wsCetak.Cells (6 No 1) . Value = listJua1. List (No,
, O)
wsCetak.Cells (6 No 1) . Hori zonta1A1ignment =
, xlCenter
wsCetak.Cells (6 No 2) . Value = listJua1. List (No,
, 1)
wsCetak.Cells (6 No 3) . Value = listJua1. List (No,
, 2)
wsCetak.Cells (6 No 4) . Value = listJua1. List (No,
, 3)

wsCetak.
wsCetak.
wsCetak.
wsCetak.
wsCetak.
Next No
For Border
wsCetak.
Next Border
With listJua1

wsCetak. Cells( . ListCount 6, 6) . Value = "Grand


Total "
wsCetak. Cells( . ListCount 7, 6 ) . Value = " Di skon
"
wsCetak. Cells( . ListCount 8 6 ) . Value = " Total "

314
wsCetak. Cells( . ListCount 9, 6 ) . Value = " Bayar "

wsCetak. Cells( . ListCount 10 6 ) . Value = "


Kembali "
,
wsCetak. Cells( . ListCount 6, 7 ) .
Value =
CDb1 ( txtGrandTota1. Value ) wsCetak.
Cells( . ListCount + 6, 7 ) . NumberFormat
=

wsCetak. Cells( . ListCount + 7, 7 ) .


Value = CDb1 ( txtDiskonRp . Value )
wsCetak. Cells( . ListCount + 7, 7 ) .
NumberFormat =

wsCetak. .
xlEdgeBottom)
LineSty1e = xlDoub1e wsCetak. Cells( . ListCount
7 ) . Borders ( xlEdgeBottom) .
LineSty1e = xlDoub1e wsCetak. Cells( .
ListCount + 8, 7) . Value = CDb1
( txtTota1. Value ) wsCetak. Cells( .
ListCount + 8, 7) . NumberFormat =

wsCetak. Cells( . ListCount + 9, 7) .


Value = CDb1 ( txtBayar . Value )
wsCetak. Cells( . ListCount + 9, 7) .
NumberFormat =

If txtKemba1i . Value = Or txtKemba1i . Value = O


Then wsCetak. Cells( . ListCount + 10, 7) .
Value
Else wsCetak. Cells( . ListCount + 10,
7) . Value =
CDb1 ( txtKemba1i . Value )
End If wsCetak. Cells( . ListCount + 10, 7)
. NumberFormat =

wsCetak. Cells( . ListCount + 10, 6 ) .


Borders (xlEdgeBottom) . LineSty1e = xlDoub1e
wsCetak. Cells( . ListCount + 10, 7) .
Borders (xlEdgeBottom) . LineSty1e =
xlDoub1e End With
: = 1, Collate: —
wsCetak. PrintOut Copies True

End Sub

"Tabe1Bantu" )
( "DatabaseBarang 315
t
' )
HeaderPenjua1an"
)
Private Sub cmdBayar_C1ick(

Set wsTb1Bantu = Sheets(


Set wsDtbsBrg = Sheets
Set wsHdrPj1n = Sheets(d'
Set wsDt1Pj1n = Sheets( "Detail Penjualan n
)
Call cmdCetak_C1ick

If CDb1 ( txtBayar . Value) < CDb1 ( txtTota1. Value)


Then
MsgBox Jumlah pembayaran kurang n , vbOKOn1y
+ vblnformation, Pembayaran Kurang" txtBayar
. SetFocus Exit Sub
End If

If listJua1. ListCount < 2 Then


MsgBox "Tidak ada transaksi penjualan n , vbOKOn1y
+ vbCritica1, "Belum Ada Transaksi Penjualan"
Exit Sub
End If

Set rgKodeBarang = wsDtbsBrg . Range( "KodeBarang" )

RecordAkhirHdrP j In = wsHdrPj1n. Cells (wsHdrPj1n. Rows


. Count , ) .End(x1Up) . Offset (O, O) . Row

RecordAkhirDt1P j In = wsDt1Pj1n.Ce11s (wsDt1Pj1n.Rows .


Count , ) .End(x1Up) . Offset (O, O) . Row

If wsHdrPj1n.Range( "A3" ) . Value


= Then wsTb1Bantu. Range( "B3 "
) . Value NoFaktur = "TJOOO"
& 1
Else
NoFaktur = "TJOOO" & wsTb1Bantu.Range( 'I B3" ) .
Value
End If

wsHdrPj1n . Cells (RecordAkhirHdrPj1n


+
1 1 ) .
NoFaktur
Value =

,
wsHdrPj1n . Cells (RecordAkhirHdrPj1n
+
1 2 ) . Value = Date

,
wsHdrPj1n . Cells (RecordAkhirHdrPj1n
+
1 3 ) .
Value =
WorksheetFunction. EDate ( Date, ,
3 )
wsHdrP j In . Cells ( RecordAkhirHdrP
j In
1 4 ) . Value =

,
316
Umumn

wsHdrP j In . Cells
( RecordAkhirHdrP j In
1 5 ) .
Value =
CDb1 ( txtGrandTota1. Value ) ,
wsHdrP j In . Cells
( RecordAkhirHdrP j In
1 6 ) .
Value =
j In
CDb1 ( txtDiskon. Value ) 1,
,
1
wsHdrP j In . Cells
( RecordAkhirHdrP j In

1 7 ) .
Value =
CDb1 ( txtTota1. Value ) ,
wsHdrP j In . Cells
( RecordAkhirHdrP j In
1 8) .
Value =
. ,
CDb1 ( txtBayar Value ) wsHdrP j In . Cells
( RecordAkhirHdrP 9 ) . Value
For No = 1 To listJua1.ListCount

Set c = rgKodeBarang . Find(1istJua1. List (No , 1


) , Lookln : =x1Va1ues )
c. Offset ( O, 9 ) . Value — c. Offset ( 0
, 9 ) . Value — listJua1. List (No,

3 )
wsDt1Pj1n. Cells (RecordAkhirDt1Pj1n + No, 1) . Value
= NoFaktur

wsDt1Pj In . Cells ( RecordAkhirDt1PjNo, 2) .


In Value =

listJua1. List (No, O)

wsDt1Pj In . Cells ( RecordAkhirDt1PjNo, 3) .


In Value =

listJua1. List (No, 1)

wsDt1Pj In . Cells ( RecordAkhirDt1Pj 4 ) .


In Value =

listJua1. List (No, 2)

wsDt1Pj In . Cells ( RecordAkhirDt1PjNo, 5) .


In Value =

listJua1. List (No, 3)

wsDt1Pj In . Cells ( RecordAkhirDt1PjNo, 6 ) .


In Value =

CDb1 ( listJua1. List (No, 4) )

wsDt1Pj In . Cells ( RecordAkhirDt1PjNo, 7) .

317
In Value =

CDb1 ( listJua1. List (No, 5) )

wsDt1Pj In . Cells ( RecordAkhirDt1PjNo, 8) .


In Value =

CDb1 ( listJua1. List (No, 6 ) )

wsDt1Pj In . Cells ( RecordAkhirDt1PjNo, 9 ) .


In Value =
CDb1 ( listJua1. List (No, 7) )
Next No

txtJum1ah. Value =
txtGrandTota1.
Value
txtDiskon. Value

txtDiskonRp .
Value = txtTota1.
Value txtBayar .
Value txtKemba1i .
Value

wsTb1Bantu.Range( "B3 " ) . Value —


wsTb1Bantu . Range( "B3 " ) . Value +
1

Call Judu11temTranskasi

ThisWorkbook. Save

End Sub

Private Sub cmdKe1uar_C1ick( )


Unload Me

End Sub

Private Sub UserForm_QueryC10se ( Cancel As


Integer , CloseMode As Integer )

Set wsHdrPj1n = Sheets( "HeaderPenjua1an" )


Set wsDt1Pj1n = Sheets( " Detail Penjualan
" )

If wsHdrPj1n.
FilterMode Then
wsHdrPj In . ShowA11
Data
End If

If wsDt1Pj1n. FilterMode Then

318
wsDt1Pj In . ShowA11 Data
End If
End Sub

4.10 Membuat Form Pembayaran


Hutang
Form Pembayaran Hutang digunakan untuk mencatat transaksi
pembayaran hutang perusahaan kepada pemasok. Proses
transaksi pembayaran hutang hanya dapat dilakukan untuk
transaksi pembelian dengan sistem hutang.
1. Pilih menu utama Insert > dserForm pada jendela Visual
Basic Editor. Atur properti OserForm melalui window
Properties. Pilih menu utama yew > Properties Window
atau tekan tombol F4. Obah properti OserForm sebagai
berikut: Name = formHutang, Caption = (kosong), Height =
270 dan Width = 432.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Pembayaran Hutang menjadi seperti pada Gambar
4.14.

Gambar 4.14 Tampilan Form Pembayaran Hutang.

3. Pengaturan properti objek kontrol selengkapnya dapat


dilihat pada tabel berikut:

319
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 6, Top = 216, Width = 60, Accelerator
= K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
CommandButton Keluar.gif, Tablndex = 7
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 294, Top = 216, Width = 60, Accelerator =
CommandButton C, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Print.gif,
Tablndex = 5
Name = cmdBayar, Caption = Bayar, Height = 24,
Left = 360, Top = 216, Width = 60, Accelerator =
CommandButton B, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Bayar.gif, Tablndex = 6
Name = txtHutang, Height = 18, Left = 66, Top =
36, Width = 120, Font = (Font = Tahoma; Font
style = Bold; Size = 11), Locked = True, TextAlign
= 3 — fmTextAlignRight, BackColor =
TextBox (biru), Forecolor =

( utih), Value = 0
Name = txtBayar, Height = 18, Left = 66, Top = 60,
Width = 120, Font = (Font = Tahoma; Font style =
Bold; Size = 11), TextAlign = 3 —
fmTextAlignRight, BackColor = 6HOOFFOOOO&
(biru), Forecolor = 6HOOFFFFFF6 (putih),
TextBox Tablndex = 3, Value = 0
Name = cmbNoFaktur, Height = 18, Left = 342,
Top = 54, Width = 78, style = 2
fmStyleDropDownList, Tablndex = 4, BackColor
ComboBox = abu-abu
ListBox Name = listHutang, Height = 126, Left = 6, Top =
84, Width = 414, BoundColumn = 6,

320
ColumnCount = 6, Tablndex = 1
Name = optHutangAll, Caption = Tampilkan
faktur dengan hutang, Height = 18, Left = 192,
OptionButton
Top 36, Width = 150, Accelerator = T, Tablndex =
0
Name = optDetail, Caption = Detail pembayaran
OptionButton hutang per faktur, Height = 18, Left = 192, Top =
60, Width = 150, Accelerator = D, Tablndex = 2
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Hutang.gif, PictureAlignment = 2
— frmPictureAlignmentCenter, PictureSizeMode
Image = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Pembayaran
Hutang, Height = 24, Left = 30, Top = 6, Width =
390, Font = (Font = Tahoma; Font style = Bold;
Size = 16), BackColor = (hijau muda), ForeColor =
Label (merah)
Name = lblHutang, Caption = Hutang, Height =
18, Left = 6, Top = 36, Width = 60, Font = (Font
Label = Tahoma; Font style = Bold; Size = 11),
BackC010r = (biru), Forecolor =
( utih)
Name = lblBayar, Caption = Bayar, Height = 18,
Left = 6, Top = 60, Width = 60, Font = (Font =
Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
Label ( utih)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:

321
0
' Kode ketika Form Pembayaran Hutang aktif
Private Sub UserForm_Äctivate( )
wsHdrPb1n adalah worksheet Headerpembelian
Set wsHdrPb1n = Sheets ( " HeaderPembe1ian " )
' Jika worksheet HeaderPembe1ian kosong
If wsHdrPb1n. Range( "A3 " ) . Value —Then
' Menampilkan kotak pesan Transaksi Pembelian Kosong
MsgBox " Bel um ada transaksi pembelian " , vbOKOn1y ,
" Transaksi Pembelian Kosong "
' Keluar dari Sub Procedure
Exit Sub
' Keluar dari Form Pembayaran Hutang
Unload Me
End If

' rgHutang adalah range dari sel G3 ke bawah


Set rgHutang = wsHdrPb1n. Range( " G3 " ,
wsHdrPb1n . Range ( " G3 " ) . End
( xlDown) )

' Struktur pengulangan setiap sel dalam rgHutang


For Each Sel In rgHutang
' Jika ada sel yang nilainya lebih besar dari 0
If Sel > 0 Then
' OptionButon Tampilkan faktur dengan hutang
terpilih optHutangA11 Value = True
Keluar dari Sub Procedure
Exit Sub
Jika tidak ada sel yang nilainya lebih besar dari 0
Else
' Menghapus ListBox
listHutang . Clear
Memanggil Sub Procedure Judu1HutangA11
Call Judu1HutangA11
End If
Next Sel

End Sub

Sub Procedure Judu1HutangA11


Sub Judu1HutangA11 ( )
' Menghapus ListBox
listHutang . Clear

With listHutang
Menambahkan item ListBox sebagai judul kolom
. Addltem
' Judul ListBox kolom pertama

. List ( • ListCount - 1 , "No Faktur n

322
' Judul ListBox kolom kedua

. List ( • ListCount - 1 , " Tempo "


' Judul ListBox kolom ketiga

. List ( • ListCount - 1 , " Kode Pmsk "


' Judul ListBox kolom keempat

. List ( • ListCount - 1 , " Total


' Judul ListBox kolom kelima
. List ( • ListCount 4) = " Bayarn
' Judul ListBox kolom keenam

. List ( • ListCount - 1 , " Hutang "


' Lebar ma sing—masing kolom dalam ListBox
. ColumnWidths = 60 & & 65 & n ; n & 60 &
& 75 & & 75 & & 70
End With

End Sub

Ketika OptionButon Tampilkan faktur dengan hutang di—


klik
Private Sub optHutangA11_C1ick( )

wsHdrPb1n adalah worksheet HeaderPembe1ian


Set wsHdrPb1n = Sheets
( "HeaderPembe1ian" ) rgDtbsHdrPb1n adalah
DatabaseHeaderPembe1ian
worksheet
Set rgDtbsHdrPb1n = wsHdrPb1n . Range ( " " )
DatabaseHeaderPembe1ian
penyaringan
Jika data yang ditampilkan merupakan hasil
If wsHdrPb1n . FilterMode Then
' Tampilkan
seluruh data . ShowA1 IData
dalam worksheet
HeaderPembe1ian wsHdrPb1n
End If

Menghapus ListBox
listHutang . Clear
TextBox Bayar tidak terkunci
txtBayar . Locked = False
ComboBox No Faktur dinonaktifkan
cmbNoFaktur . Enabled = False
ComboBox No Faktur dikosongkan
cmbNoFaktur . Value =

rgHutang adalah range dari sel G3 ke bawah

323
Set rgHutang = wsHdrPb1n. Range( I' G3 'I ,
wsHdrPb1n . Range ( "G3 " ) . End
( xlDown) )
Struktur pengulangan setiap sel dalam rgHutang
For Each Sel In rgHutang
' Jika ada sel yang nilainya lebih besar dari O
If Sel > O Then
' Memasukkan nilai ke dalam sel M3
wsHdrPb1n . Range ( "M3 " ) . Value
' Menghapus Nil ai dalam range 13 : L3
wsHdrPb1n . Range ( " 13 : L3 " ) .
ClearContents ' Penyaringan data
menggunakan Advanced Filter
rgDtbsHdrPb1n . AdvancedF i 1 ter
Action : =x1Fi1terInP1ace ,
CriteriaRange : =wsHdrPb1n . Range ( " 12 :
M3 " )
' Memanggil Sub Procedure Judu1HutangA11
Call Judu1HutangA11
With wsHdrPb1n
' rgTampi1 = range NoFakturHdrPb1n yang
ditampilkan Set rgTampi1 = wsHdrPb1n.
Range( "NoFakturHdrPb1n" ) .
SpecialCe11s ( xlCe1 ITypeVisib1e )
' sTampi1 adalah pengulangan setiap sel dalam
rgTamp i 1
For Each sTampi1 In rgTampi1
With listHutang
I
Memasukkan item ke dalam ListBox
. Addltem sTampi1. Value
Nomor faktur berdasarkan nil ai dalam
sTampi1
. List( . ListCount 1 0) = sTampi1. Value
I
Pengisian tanggal jatuh tempo
. List( . ListCount
Format ( sTampi1.
Offset (O, 2) .
Value,
dd/mm/yyyy" )
I
Pengisian kode pemasok
. List( . ListCount —
sTampi1 . Offset (0,
3) Value
I
Pengisian total nil ai transaksi
pembelian
. List( .ListCount —
Format ( sTampi1. Offset ( O , 4 ) .
Value ,
I
Pengisian pembayaran

324
. List( . ListCount
Format ( sTampi1. Offset ( O , 5) .
Value ,

I
Pengisian hutang
. List( . ListCount
Format ( sTampi1. Offset ( O , 6 ) .
Value ,

End With
Next sTampi1
End With
Exit For
' Jika tidak ada sel yang nilainya lebih besar dari
O
Else
' Memanggil Sub Procedure Judu1HutangA11
Call Judu1HutangA11
End If
Next Sel

Jika data yang ditampilkan merupakan hasil penyaringan


If wsHdrPb1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet
HeaderPembe1ian wsHdrPb1n . ShowA11Data
End If
End Sub

Ketika OptionButon Detail pembayaran hutang/faktur di—


klik
Private Sub optDetai1_C1ick( )
wsPemHut adalah worksheet PembayaranHutang
Set wsPemHut = Sheets( " PembayaranHutang n )
rgNoFaktur merupakan range NoFakturPemHut
Set rgNoFaktur = wsPemHut . Range ( "NoFakturPemHut " )
Jika worksheet PembayaranHutang kosong
If wsPemHut . Range( "A3" ) . Value =n Then
' Menampilkan kotak pesan Pembayaran Hutang Kosong
MsgBox n Belum ada pembayaran hutang n , vbOKOn1y ,
Pembayaran Hutang Kosong n
' Keluar dari Sub Procedure
Exit Sub
' OptionButon Tampilkan faktur dengan hutang
terpilih optHutangA11 . Value = True
End If

TextBox Hutang bernilai O


txtHutang . Value

325
TextBox Bayar bernilai 0
txtBayar . Value
TextBox Bayar terkunci
txtBayar . Locked = True
ComboBox No Faktur diaktifkan
cmbNoFaktur . Enabled = True

Jika data yang ditampilkan merupakan hasil penyaringan


If wsPemHut . FilterMode Then
' Menampilkan seluruh data worksheet
PembayaranHutang wsPemHut . ShowA11Data
End If

Urutkan Ascending database kolom No Faktur & Tanggal


wsPemHut . Range( "DatabaseHutang" ) . Sort Keyl : = "No
Faktur " ,
Orderl : =x1Ascending, Key2: " Tanggal ,
Order2 : =x1Ascending, Header : =x1Yes
Lanjutkan Macro jika terjadi error
On Error Resume Next

Deklarasi variabel Sel sebagai range ( sel )


Dim Sel As Range
Deklarasi variabel NoDupes sebagai koleksi objek baru
Dim NoDupes As New Collection

ComboBox no faktur tidak terkunci


cmbNoFaktur . Locked = False
Menghapus ComboBox no faktur
cmbNoFaktur . Clear
Sel merupakan pengulangan tiap sel dalam range
rgNoFaktur
For Each Sel In rgNoFaktur
' Range NoDupes merupakan sel unik dalam range
rgNoFaktur
NoDupes.Add Sel . Value, CStr( Sel . Value )
Next Sel

Item merupakan pengulangan tiap sel dalam range NoDupes


For Each Item In NoDupes
' Menambahkan tiap item range NoDupes ke dalam
ComboBox cmbNoFaktur . Addltem Item
Next Item

Memanggil Sub Procedure Judu1Detai1


Call Judu1Detai1

Jika data yang ditampilkan merupakan hasil penyaringan


If wsPemHut . FilterMode Then
' Menampilkan seluruh data worksheet
PembayaranHutang wsPemHut . ShowA11Data

326
End If

End Sub

Sub Procedure Judu1Detai1

Sub Judu1Detai1
( )
Menghapus
ListBox
listHutang . Clear

With listHutang
' Menambahkan item ListBox sebagai judul
kolom
. Addl tem
' Judul ListBox kolom per tama
. List ( • ListCount — 1, 0 ) = "No Faktur n

' Judul ListBox kolom kedua

. List ( • ListCount - 1 , " Tanggal "


' Judul ListBox kolom ketiga

. List ( • ListCount - 1 , " Kode Pmsk "


' Judul ListBox kolom keempat

. List ( • ListCount - 1 , " Hutang "


' Judul ListBox kolom kelima
. List ( • ListCount 4) = " Bayarn
' Judul ListBox kolom keenam

. List ( • ListCount - 1 , — Sisa n


' Lebar ma sing—masing kolom dalam ListBox
. ColumnWidths = 60 & & 65 & n ; n & 60 &
& 75 & & 75 & & 70
End With

End Sub

Kode ketika ListBox di—klik


Private Sub listHutang_C1ick( )

Jika indeks ListBox yang di—klik lebih dari O


If listHutang . List Index > O Then
' OptionButton Tampilkan faktur dengan hutang
terpilih
If optHutangA11 . Value = True Then ' TextBox
Hutang diisi baris ListBox terpilih kolom 6
txtHutang . Value = listHutang .

327
List ( listHutang. List
Index, 5) ' TextBox Bayar
bernilai O txtBayar . Value

' Jika OptionButton tidak terpilih


Else
' Keluar dari Sub Procedure
Exit Sub
End If
End If

End Sub

Kode ketika nil ai TextBox Bayar diubah


Private Sub txtBayar_Change ( )

Format TextBox Bayar txtBayar . Value =


Format ( txtBayar . Value ,
Jika TextBox Hutang 0 atau kosong nilai

If txtHutang . Value = 0 Or txtHutang . Value =


Then
' Keluar dari Sub Procedure
Exit Sub
Jika nilai TextBox Bayar 0 atau
kosong
El self txtBayar . Value = 0 Or txtBayar . Value —
' Keluar dari Sub Procedure
Exit Sub
Jika nilai TextBox Bayar lebih besar dari TextBox
Hutang
El self CDb1 ( txtBayar . Value) > CDb1 ( txtHutang
. Value) Then ' Nilai TextBox Bayar sama dengan
TextBox Hutang txtBayar Value = txtHutang .
Value ' Keluar dari Sub Procedure
Exit Sub
End If

End Sub

Kode ketika nil ai ComboBox diubah


Private Sub cmbNoFaktur_Change ( )
wsPemHut adalah worksheet PembayaranHutang
Set wsPemHut = Sheets ( " PembayaranHutang n
)
Jika data yang ditampilkan merupakan hasil penyaringan
If wsPemHut . FilterMode Then
' Tampilkan seluruh data dalam worksheet
PembayaranHutang wsPemHut . ShowA11Data
End If

328
Memanggil Sub Procedure Judu1Detai1
Call Judu1Detai1
Memasukkan Nilai ComBoBox (no faktur) ke dalam sel H3
wsPemHut . Range( "H3 " ) . Value = cmbNoFaktur . Value
Penyaringan data menggunakan Advanced Filter
wsPemHut . Range ( "DatabaseHutang " ) .
AdvancedFi1ter
Action : =x1Fi1terInP1ace ,
CriteriaRange : =wsPemHut . Range ( H2 : H3 )
With wsPemHut
' rgTampi1 adalah range NoFakturPemHut yang
ditampilkan Set rgTampi1 = wsPemHut .
Range( "NoFakturPemHut" ) .
SpecialCe11s ( xlCe1 ITypeVi sible )
' sTampi1 merupakan pengulangan setiap sel dalam
rgTampi1
For Each sTampi1 In rgTampi1
With listHutang
. Addltem sTampi1. Value
' Nomor faktur berdasarkan nilai sTampi1
. List( . ListCount — 1 0) = sTampi1.
Value ' Tanggal pembayaran 1 kolom di
kanan sTampi1 . List( . ListCount — =
Format ( sTampi1 .
Offset (O, 1) . Value, "dd/mm/yyyy" )
' Kode pemasok 2 kolom di sebelah kanan
sTampi1
. List( . ListCount
sTampi1. Offset (0, 2)
. Value
'Nil ai hutang 3 kolom di sebelah kanan
sTampi1
. List( .ListCount — 1 3)
Format ( sTampi1 . Offset (0, 3) .
Value, " # , " ) ' Total yang dibayarkan 4
kolom di kanan sTampi1 . List( . ListCount

Format ( sTampi1 . Offset (0, 4) . Value, " )


' Sisa hutang 5 kolom di sebelah kanan
sTampi1
. List( .ListCount —
Format( sTampi1 . Offset (0, 5) . Value, " )
End With
Next sTampi1
End With

End Sub

Kode ketika CommandButton Bayar di—klik


Private Sub cmdBayar_C1ick( )

329
wsDtbsPmsk adalah worksheet DatabasePemasok
Set wsDtbsPmsk = Sheets ( "
DatabasePemasok 'I ) wsHdrPb1n adalah
worksheet HeaderPembe1ian Set
wsHdrPb1n = Sheets ( " HeaderPembe1ian
n
) wsPemHut adalah worksheet
PembayaranHutang
Set wsPemHut = Sheets ( " PembayaranHutang n )
Jika TextBox Bayar bel um diisi
If txtBayar . Value = Then
' Menampilkan kotak pesan Jumlah Bayar Kosong
MsgBox n Jumlah pembayaran hutang belum diisi " ,
vbOKOn1y + vbCritica1 , " Jumlah Bayar Kosong"
' TextBox Bayar menjadi fokus
txtBayar . SetFocus
' Keluar dari Sub Procedure
Exit Sub
End If

Jika OptionButton Detail pembayaran per faktur terpilih


If optDetai1. Value = True Then
' Menampilkan kotak pesan Pilihan Opsi Diubah
MsgBox n Pilih opsi Tampilkan faktur dengan hutang"
vbOKOn1y, "Pilihan Opsi Diubah 'l
' OptionButton Tampilkan faktur dengan hutang
terpilih optHutangA11 . Value = True ' ListBox
menjadi fokus listHutang . SetFocus ' Keluar
dari Sub Procedure
Exit Sub
Jika indeks ListBox kurang dari 1
El self listHutang . List Index < 1 Then
' Menampilkan kotak pesan Pilih No Item
MsgBox "Anda belum memilih salah satu no
faktur" , vbOKOn1y, "Pilih Nomor Item" '
ListBox menjadi fokus listHutang . SetFocus '
Keluar dari Sub Procedure
Exit Sub

End If
Pencarian pada range NoFakturHdrPb1n
With wsHdrPb1n . Range ( "NoFakturHdrPb1n" )
' c merupakan sel hasil pencarian
Set c . Find ( listHutang . List ( listHutang . List
Index , 0) ,

Look In : =x1Va1ues )
' Total pembayaran ditambah jumlah pembayaran baru
c. Offset( 0 . Value- Offset( 0 . Value +
CDb1 ( txtBayar . Value )
' Sisa hutang dikurangi jumlah pembayaran

330
c. Offset (O, 6 ) . Value = c. Offset (O,
6 ) . Value — CDb1 ( txtBayar . Value ) End
With

Pencarian pada range KodePemasok


With wsDtbsPmsk . Range( "KodePemasok 'I )
' c merupakan sel hasil pencarian
Set c . Find ( listHutang. List ( listHutang . List
Index , 2) ,
Lookln : =x1Va1ues )
' Hutang pada pemasok dikurangi jumlah pembayaran
baru
c. Offset (O, 7) . Value = c. Offset (O, 7) .
Value — CDb1 ( txtBayar . Value )
End With

Record terakhir pembayaran hutang kolom A


RecordAkhirPemHut = wsPemHut . Cells (wsPemHut . Rows .
Count ,
) .End(x1Up) . Offset (O, O) . Row
With listHutang
' Input no faktur di bawah record akhir pembayaran
hutang wsPemHut . Cells (RecordAkhirPemHut + 1,
1 ) . Value =
. List( . List Index, O)
' Masukkan tanggal pada record yang sama
wsPemHut . Cells (RecordAkhirPemHut + 1, 2) .
Value = Date ' Masukkan kode pemasok pada record
yang sama wsPemHut . Cells (RecordAkhirPemHut +
1, 3) .Va1ue =
. List( . List Index, 2)
' Memasukkan jumlah hutang pada record yang sama
wsPemHut . Cells (RecordAkhirPemHut + 1, 4 ) .
Value =
CDb1 ( txtHutang . Value )
' Memasukkan jumlah pembayaran pada record yang
sama wsPemHut . Cells (RecordAkhirPemHut + 1, 5) .
Value =
CDb1 ( txtBayar . Value )
' Memasukkan sisa hutang pada record yang sama
wsPemHut . Cells (RecordAkhirPemHut + 1, 6 ) .
Value =
CDb1 ( txtHutang . Value ) — CDb1
( txtBayar . Value ) End With

TextBox Hutang bernilai O


txtHutang . Value

331
TextBox Bayar 0
bernilai txtBayar .
Value = 0 Procedure
Memanggil Sub optHutangA11_C1ick
Call
optHutangA11_C1ick

End Sub
Kode ketika
Private Sub
cmdCetak_C1ick(

wsPemHut adalah
Set wsPemHut —
Sheets CommandButton Cetak di—klik
( PembayaranHutang )
wsTb1Bantu adalah
worksheet worksheet PembayaranHutang
Tabe1Bantu 'V )
Set wsTb1Bantu = Sheets ( " Tabe1Bantu
n
) wsCetak adalah worksheet Cetak
Set wsCetak = Sheets( "Cetak" ) rgAdvFi1ter adalah
range H2 : H3 worksheet PembayaranHutang
Set rgAdvFi1ter = wsPemHut . Range( n H2 : H3 )
Menentukan orientasi kertas wsCetak.
PageSetup . Orientation = xlPortrait
Menentukan margin kiri kertas
wsCetak. PageSetup . LeftMargin =

Application . CentimetersToPoints ( 1 . 5 )
Menentukan margin kanan kertas
wsCetak. PageSetup . RightMargin =

Application . CentimetersToPoints ( 1 . 5 )
Menentukan margin atas kertas
wsCetak. PageSetup . TopMargin =

Application . CentimetersToPoints ( 2 )
Menentukan margin bawah kertas
wsCetak. PageSetup . BottomMargin
= Application .
CentimetersToPoints ( 2 )
Menentukan ukuran pencetakan
wsCetak. PageSetup. Zoom = 100
Menentukan judul cetak wsCetak.
PageSetup . PrintTit1eRows = " $9 :
$10"

332
Menentukan area cetak
wsCetak. PageSetup .
PrintArea =

Menghapus seluruh sel worksheet Cetak


wsCetak . Cells . Clear
Menentukan lebar kolom A worksheet Cetak
wsCetak. Columns( "A ) . ColumnWidth = 10
Teks PEMBAYARAN HUTANG pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Value = l' PEMBAYARAN HUTANG"
Format font tebal (bold) pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Font . Bold = True
Ukuran font (12) pada sel Al worksheet Cetak
wsCetak . Range ( "Al " ) . Font . Size = 12
Teks pada range Al : FI diformat rata tengah
wsCetak . Range ( "Al : FI " ) .
HorizontalA1ignment = xlCenter
Menggabungkan range Al : FI
wsCetak . Range ( "Al : FI "
) . Merge
Menentukan tinggi baris ke—2 worksheet Cetak
wsCetak . Rows( "2 : 2 " ) . RowHeight = 5

Jika OptionButton Detail pembayaran hutang yang


terpilih
If optDetai1. Value = True Then
' Memasukkan teks Cetak No Faktur terpilih
wsCetak . Range ( " A3 " ) . Value
Cetak No Faktur & cmbNoFaktur .
Value ' Memasukkan teks no faktur
terpilih wsPemHut . Range( "H 3" _) .
Value = cmbNoFaktur . Value
Else
' Memasukkan teks Cetak : Seluruh Record
wsCetak . Range( "A3" ) . Value = " Cetak :
Seluruh Record" ' Menghapus nilai sel 13
wsPemHut . Range( "H3 " ) .
ClearContents
End If

Format font tebal (bold) pada sel A9 worksheet Cetak


wsCetak.Range( "A3" ) . Font . Bold = True
Menyalin lebar kolom range
A2 : F 2 wsPemHut .
Range( "A2 : F 2" ) . Copy
wsCetak . Range ( "A4 " ) .

PasteSpecia1 Paste : =x1PasteC01umnWidths

333
Menyaring data menggunakan Advanced Filter
wsPemHut . Range ( "DatabaseHutang " ) .
AdvancedFi1ter
Action : =x1Fi1terInP1ace, CriteriaRange :
=rgAdvFi1ter
Menyalin range DatabaseHutang Advanced Filter
wsPemHut . Range ( "DatabaseHutang " ) .
SpecialCe11s (xlCe11TypeVisib1e ) .
Copy Destination : =wsCetak. Range ( n A4 'I )
' Mencetak database hutang wsCetak.
PrintOut Copies : = 1 , Collate: =True

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsPemHut . FilterMode Then
' Tampilkan seluruh data dalam worksheet
PembayaranHutang wsPemHut . ShowA11Data
End If

End Sub
0
' Kode ketika CommandButton Keluar di-klik
Private Sub cmdKe1uar_C1ick( )

Keluar dari Form Pembayaran Hutang


Unload Me

End Sub

Kode ketika Form Pembayaran Hutang ditutup


Private Sub UserForm_QueryC10se ( Cancel As Integer ,
CloseMode As Integer )

wsHdrPb1n adalah worksheet HeaderPembe1ian


Set wsHdrPb1n = Sheets ( 't HeaderPembe1ian
" ) o
' wsPemHut adalah worksheet
PembayaranHutang Set wsPemHut — Sheets ( "
PembayaranHutang " )

Menghapus range 13 : M3 worksheet HeaderPembe1ian


wsHdrPb1n . Range ( " 13 : M3 " ) . ClearContents
' Menghapus sel H 3 worksheet PembayaranHutang
wsPemHut . Range ( "H 3 " ) . ClearContents
I
' Jika data yang ditampilkan merupakan hasi1
penyaringan If wsHdrPb1n. FilterMode Then
Tampilkan seluruh data dalam worksheet HeaderPenjua1an
wsHdrPb1n . ShowA11 Data
End If

334
Jika data yang ditampilkan merupakan hasi1 penyaringan
If wsPemHut . FilterMode Then
Tampilkan seluruh data dalam worksheet
PembayaranHutang wsPemHut . ShowA11Data
End If

End Sub

4.11 Membuat Form Penerimaan Piutang


Form Penerimaan Piutang digunakan untuk mencatat transaksi
penerimaan piutang dari pelanggan. Proses transaksi
penerimaan piutang hanya dapat dilakukan untuk transaksi
penjualan dengan sistem hutang.
1. Pilih menu utama Insert > dserForm pada jendela Visual
Basic Editor. Atur properti OserForm melalui window
Properties. Pilih menu utama yew > Properties Window
atau tekan tombol F4. dbah properti dserForm sebagai
berikut: Name = formPiutang, Caption = (kosong), Height =
270 dan Width = 432.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Penerimaan Piutang menjadi seperti pada Gambar
4.15.

Gambar 4.15 Tampilan Form Penerimaan Piutang.

335
3. Pengaturan properti objek kontrol selengkapnya dapat
dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 6, Top = 216, Width = 60, Accelerator
CommandButton = K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 7
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 294, Top = 216, Width = 60, Accelerator =
CommandButton C, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Print.gif,
Tablndex = 5

Name = cmdBayar, Caption = Bayar, Height = 24,


Left = 360, Top = 216, Width = 60, Accelerator =
CommandButton B, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Bayar.gif, Tablndex = 6
Name = txtPiutang, Height = 18, Left = 66, Top =
36, Width = 120, Font = (Font = Tahoma; Font
style = Bold; Size = 1 1), Locked = True, TextAlign
TextBox = 3 — fmTextAlignRight, BackColor =
(biru), Forecolor =
( utih), Value = 0
Name = txtBayar, Height = 18, Left = 66, Top = 60,
Width = 120, Font = (Font = Tahoma; Font style =
Bold; Size = 1 1), TextAlign = 3 —
fmTextAlignRight, BackC010r =
(biru), Forecolor = (putih), ,
TextBox Tablndex = 3, Value = 0
Name = cmbNoFaktur, Height = 18, Left = 342,
Top = 54, Width = 78, style = 2
fmStyleDropDownList, Tablndex = 4, BackColor =
ComboBox (abu-abu), Enabled = False

336
Name = listPiutang, Height = 126, Left = 6, Top —
84, Width = 414, BoundColumn = 6,
ListBox ColumnCount = 6, Tablndex = 1
Name = optPiutangAll, Caption = Tampilkan
faktur dengan piutang, Height —- 18, Left = 192,
OptionButton
Top = 36, Width = 150, Accelerator = T, Tablndex
=0
Name = optDetail, Caption = Detail penerimaan
piutang per faktur, Height = 18, Left = 192, Top
OptionButton 60, Width = 150, Accelerator = D, Tablndex = 2
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Piutang.gif,
PictureAlignment = 2 —
frmPictureAlignmentCenter, PictureSizeMode
Image = 0 — frmPictureSizeModeClip
Name = lblForm, Caption = Form Penerimaan
Piutang, Height = 24, Left = 30, Top = 6, Width =
390, Font = (Font = Tahoma; Font style = Bold;
Size = 16), BackC010r = (hijau muda),
Label ForeColor = (merah)
Name = lblPiutang, Caption = Piutang, Height =
18, Left = 6, Top = 36, Width = 60, Font = (Font
= Tahoma; Font style = Bold; Size = 11),
Label BackC010r = (biru), Forecolor =
( utih)
Name = lblBayar, Caption = Bayar, Height = 18,
Left = 6, Top = 60, Width = 60, Font = (Font —
Tahoma; Font style = Bold; Size = 11), BackColor
(biru), Forecolor =
Label ( utih)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:

337
' Kode ketika Form Penerimaan Piutang aktif
Private Sub UserForm_Activate( )
0
' wsHdrPj1n adalah worksheet HeaderPenjua1an
Set wsHdrPj1n = Sheets( "HeaderPenjua1an" )

' Jika worksheet HeaderPenjua1an kosong


o

If wsHdrPj1n.Range( "A3 " ) . Value = " " Then


' Menampilkan kotak pesan Transaksi Penjualan Kosong
MsgBox " Bel um ada transaksi penjualan " , vbOKOn1y ,
" Transaksi Penjualan Kosong "
' Keluar dari Sub Procedure
Exit Sub
Keluar dari Form Penerimaan Piutang
Unload Me End
If

' rgPiutang adalah range dari sel J 3 ke bawah


o

Set rgPiutang = wsHdrPj1n. Range( "13 "


wsHdrPj1n . Range ( " 13 " ) . End
( x1Down) )

' Struktur pengulangan setiap sel dalam rgPiutang


For Each Sel In rgPiutang
' Jika ada sel yang nilainya lebih besar dari 0
If Sel > 0 Then
' OptionButon Tampilkan faktur dengan piutang
terpilih optPiutangA11 . Value = True
Keluar dari Sub Procedure
Exit Sub
' Jika tidak ada sel yang nilainya lebih besar dari 0

' Menghapus ListBox


listPiutang . Clear
Memanggil Sub Procedure Judu1PiutangA11
Call Judu1PiutangA11
End If
Next Sel

End Sub
' Sub Procedure Judu1PiutangA11
Sub Judu1PiutangA11 ( )
' Menghapus ListBox
listPiutang . Clear
With listPiutang
' Menambahkan item ListBox sebagai judul kolom
. Addl tem
' Judul ListBox kolom pertama

. List( • ListCount - 1 , "No Faktur

338
' Judul ListBox kolom kedua

. List( • ListCount - 1 , " Tempo n

' Judul ListBox kolom keempat

. List( • ListCount - 1 , " Kode Plgn


' Judul ListBox kolom kelima

. List( • ListCount - 1 , " Total n


' Judul ListBox kolom keenam
. List( • ListCount 4) = " Bayarn
' Judul ListBox kolom ketujuh

. List( • ListCount - 1 , " Piutang n


' Lebar masing—masing kolom dalam ListBox
. ColumnWidths = 60 & & 60 &
n
; n
& 75 & &
End With

End Sub

' Ketika OptionButon Tampilkan faktur dengan piutang di—


klik

Private Sub optPiutangA11_C1ick( )


' wsHdrPj1n adalah worksheet HeaderPenjua1an
Set wsHdrPj1n = Sheets( " HeaderPenjua1an n )
' rgDtbsHdrPj1n adalah worksheet DatabaseHeaderPenjua1an
Set rgDtbsHdrPj1n = wsHdrPj In. Range
( "DatabaseHeaderPenjua1an " )

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsHdrPj1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet
HeaderPenjua1an wsHdrP j In. ShowA11Data
End If

' Menghapus ListBox


listPiutang . Clear
' TextBox Bayar tidak terkunci
txtBayar . Locked = False
' ComboBox No Faktur
dinonaktifkan cmbNoFaktur .
Enabled = False ' ComboBox
No Faktur dikosongkan
cmbNoFaktur . Value =

' rgPiutang adalah range dari sel J 3 ke bawah


Set rgPiutang = wsHdrPj1n. Range( " 13
wsHdrPj1n . Range( " 13 " ) . End
( xlDown) )

339
For Each Sel In rgPiutang
' Jika ada sel yang nilainya lebih besar dari O
If Sel > O Then
' Memasukkan nilai ke dalam sel 03
wsHdrPj1n . Range ( "03 " ) . Value
' Menghapus Nilai dalam range L3 : P3
wsHdrPj1n . Range ( "K3 : N3 " ) .
ClearContents ' Penyaringan data
menggunakan Advanced Filter rgDtbsHdrP j
In. AdvancedFi 1 ter
Action : =x1Fi1terInP1ace ,
CriteriaRange : =wsHdrPj1n . Range ( "K 2 :
03 " )
' Memanggil Sub Procedure Judu1PiutangA11
Call Judu1PiutangA11
With wsHdrPj1n
' rgTampi1 range NoFakturHdrPj1n yang
ditampilkan
Set rgTampi1 = wsHdrPj1n. Range( n NoFakturHdrPj1n" ) .

SpecialCe11s ( xlCe11TypeVisib1e )
' sTampi1 pengulangan setiap sel dalam rgTampi1
For Each sTampi1 In rgTampi1
With listPiutang
' Memasukkan item ke dalam ListBox
. Add Item sTampi1. Value
' Nomor faktur berdasar nil ai dalam
sTampi1
. List( . ListCount — 1 0) sTampi1.
Value Pengisian tanggal jatuh tempo
. List( .ListCount — Format ( sTampi1 .

Offset (0, 2) . Value,


"dd/mm/yyyy" )
' Pengisian kode pelanggan
. List( . ListCount —
sTampi1 . Offset (0,
3) . Value
' Pengisian total nil ai transaksi
penjualan
. List ( . ListCount
Format ( sTampi1. Offset ( O , 6 ) .
Value ,

I
Pengisian pembayaran
. List( . ListCount
Format ( sTampi1. Offset ( O , 7) .
Value,

I
Pengisian piutang

340
. List( . ListCount
Format ( sTampi1. Offset ( O , 8) .
Value ,

End With
Next sTampi1
End With
Exit For
' Jika tidak ada sel yang nilainya lebih besar dari
O
Else
' Memanggil Sub Procedure Judu1PiutangA11
Call Judu1PiutangA11
End If
Next Sel
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsHdrPj1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet
HeaderPenjua1an wsHdrP j In. ShowA11Data
End If

End Sub

' Ketika OptionButon Detail penerimaan piutang/faktur di


—klik
Private Sub optDetai1_C1ick( )
' wsPenPiu adalah worksheet PenerimaanPiutang
Set wsPenPiu = Sheets( "PenerimaanPiutang n )
' rgNoFaktur merupakan range NoFakturPenPiu
Set rgNoFaktur = wsPenPiu . Range( "NoFakturPenPiu" )
' Jika worksheet PenerimaanPiutang kosong
If wsPenPiu.Range( "A3" ) . Value = Then
' Menampilkan kotak pesan Penerimaan Piutang Kosong
MsgBox n Belum ada penerimaan piutang n , vbOKOn1y ,
Penerimaan Piutang Kosong n
' Keluar dari Sub Procedure
Exit Sub
' OptionButon Tampilkan faktur dengan
piutang terpilih = optPiutangA11.
Value
End If

' TextBox Piutang


bernilai
0
txtPiutang . Value
' TextBox Bayar bernila±
txtBayar . Value
' TextBox Bayar terkunci
txtBayar . Locked = True

341
' ComboBox No Faktur diaktifkan
cmbNoFaktur . Enabled = True

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsPenPiu . FilterMode Then
' Menampilkan seluruh data worksheet
PenerimaanPiutang wsPenPiu. ShowA11Data
End If

' Urutkan Ascending database piutang kolom No Faktur


wsPenPiu.Range( "DatabasePiutang" ) . Sort Keyl : = "No
Faktur" ,
Orderl : =x1Ascending, Key2: " Tanggal ,
Order 2 : =x1Ascending, Header : =x1Yes
' Lanjutkan Macro jika terjadi error
On Error Resume Next

' Deklarasi variabel Sel sebagai range ( sel )


Dim Sel As Range
' Deklarasi variabel NoDupes sebagai koleksi objek baru
Dim NoDupes As New Collection
' ComboBox no faktur tidak
terkunci cmbNoFaktur . Locked
= False ' Menghapus ComboBox
no faktur cmbNoFaktur . Clear

' Sel merupakan pengulangan tiap sel dalam range


rgNoFaktur
For Each Sel In rgNoFaktur
' Range NoDupes sel unik dalam range rgNoFaktur
NoDupes.Add Sel . Value, CStr( Sel .
Value) Next Sel

' Item merupakan pengulangan tiap sel dalam range


NoDupes
For Each Item In NoDupes
' Menambahkan tiap item range NoDupes ke dalam
ComboBox formPiutang. cmbNoFaktur . Addltem Item
Next Item

' Memanggil Sub Procedure Judu1Detai1


Call Judu1Detai1

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsPenPiu. FilterMode Then
' Menampilkan seluruh data worksheet
PenerimaanPiutang

342
wsPenPiu. ShowA11 End If

End Sub

' Sub Procedure


Judu1Detai1
Sub
Judu1Detai1 ( )

' Menghapus ListBox


listPiutang . Clear

With listPiutang
' Menambahkan item ListBox sebagai judul kolom
. Addl tem
' Judul ListBox kolom pertama

. List( • ListCount - 1 , "No Faktur


' Judul ListBox kolom kedua

. List( • ListCount - 1 , " Tanggal n

' Judul ListBox kolom keempat

. List( • ListCount - 1 , " Kode Plgn


' Judul ListBox kolom kelima

. List( • ListCount - 1 , " Piutang n

' Judul ListBox kolom keenam


. List( • ListCount 4) = " Bayarn
' Judul ListBox kolom ketujuh

. List( • ListCount - 1 , — Sisa n


' Lebar masing—masing kolom dalam ListBox
. ColumnWidths = 60 & & 65 & n
; n
& 60 & n
;
n
& 75 & & 75 & & 70
End With
End Sub

' Kode ketika ListBox di—klik


Private Sub listPiutang_C1ick( )

' Jika indeks ListBox yang di—klik lebih dari O


If listPiutang. List Index > O Then
' OptionButton Tampilkan faktur dengan piutang
terpilih
If optPiutangA11. Value = True Then
' TextBox Piutang diisi baris ListBox terpilih kolom
4 txtPiutang. Value = listPiutang . List
( listPiutang . List Index, 5) ' TextBox
Bayar bernilai O txtBayar . Value
' Jika OptionButton tidak terpilih
Else
' Keluar dari Sub Procedure

343
Exit Sub
End If
End If

End Sub
ai Text Box Bayar
diubah
' Kode ketika nil
Private Sub
txtBayar_Change ( )
' Format TextBox
txtBayar . Value = Bayar
Format ( txtBayar .
' Jika nilai TextBox Value , Piutang 0 atau
kosong
If txtPiutang . Value = 0 Or txt Piutang . Value = Then
' Keluar dari Sub Procedure
Exit Sub
' Jika nilai TextBox Bayar O atau kosong
El self txtBayar . Value = O Or txtBayar . Value = Then
' Keluar dari Sub Procedure
Exit Sub
' Jika nilai TextBox Bayar lebih besar dari TextBox
Piutang
El self CDb1 ( txtBayar . Value) > CDb1 ( txtPiutang
. Value) Then ' Nilai TextBox Bayar sama dengan
TextBox Piutang txtBayar . Value = txtPiutang .
Value
' Keluar dari Sub Procedure
Exit Sub
End If

End Sub
' Kode ketika nilai ComboBox diubah
Private Sub cmbNoFaktur_Change( )

' wsPenPiu adalah worksheet PenerimaanPiutang


Set wsPenPiu = Sheets( "PenerimaanPiutang n )
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsPenPiu . FilterMode Then
' Tampilkan seluruh data worksheet
PenerimaanPiutang wsPenPiu. ShowA11Data
End If

' Memanggil Sub Procedure Judu1Detai1


Call Judu1Detai1

' Memasukkan Nilai ComBoBox (no faktur) ke dalam


sel 13 wsPenPiu.Range( "H3" ) . Value =
cmbNoFaktur . Value ' Penyaringan data

344
menggunakan Advanced Filter wsPenPiu. Range
( "DatabasePiutang " ) . AdvancedFi1ter
Action : =x1Fi1terInP1ace ,
CriteriaRange : =wsPenPiu . Range ( n H2 : H3 n )
With wsPenPiu
' rgTampi1 adalah range NoFakturPenPiu yang
ditampilkan Set rgTampi1 = wsPenPiu .
Range( "NoFakturPenPiu" ) .
SpecialCe11s ( xlCe1 ITypeVi sible )
' sTampi1 merupakan setiap sel dalam rgTampi1
For Each sTampi1 In rgTampi1
With listPiutang
. Addltem sTampi1. Value
' Nomor faktur berdagarkan nilai sTampi1
. List( .ListCount sTampi1. Value
' Tanggal penerimaan 1 kolom sebelah kanan
sTampi1
. List( .ListCount
Format ( sTampi1. Offset ( 0 , 1 ) .
Value,
" dd/mm/yyyy" )
' Kode pelanggan 3 kolom di sebelah kanan
sTampi1
. List( .ListCount
sTampi1.Offset(0, 2 ) . Value
'Nil ai piutang 4 kolom di sebelah kanan
sTampi1
. List( .ListCount -
Format (sTampi1 . Offset ( O , 3 ) .
Value,
' Total yang dibayarkan 5 kolom di kanan
sTampi1
. List( . ListCount —
Format ( sTampi1. Offset ( O , 4 ) .
Value,
' Sisa piutang 6 kolom di sebelah kanan
sTampi1
. List( . ListCount —
Format ( sTampi1. Offset ( O , 5 ) .
Value,
End With
Next sTampi1
End With

End Sub

' Kode ketika CommandButton Bayar di—klik


Private Sub cmdBayar_C1ick( )
' wsDtbsP1gn adalah worksheet DatabasePe1anggan

345
Set wsDtbsP1gn = Sheets ( "
DatabasePe1anggan n ) ' wsHdrPj1n adalah
worksheet HeaderPenjua1an
Set wsHdrPj1n = Sheets ( " HeaderPenjua1an n )
' wsPenPiu adalah worksheet PenerimaanPiutang
Set wsPenPiu = Sheets ( "PenerimaanPiutang
' Jika TextBox Bayar belum diisi
If txtBayar . Value = Then
' Menampilkan kotak pesan Jumlah Barang Kosong
MsgBox "Jumlah penerimaan piutang belum
diisi " vbOKOn1y + vbCritica1 , " Jumlah
Bayar Kosong" ' TextBox Bayar menjadi fokus
txtBayar . SetFocus
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika indeks ListBox kurang dari 1


If listPiutang. List Index < 1 Then
' Menampilkan kotak pesan Pilih No Item
MsgBox n Anda belum memilih salah satu no faktur
vbOKOn1y, "Pilih Nomor Item n ' ListBox
menjadi fokus listPiutang. SetFocus ' Keluar
dari Sub Procedure
Exit
Sub End If

' Pencarian pada range NoFakturHdrPj1n


With wsHdrPj1n . Range
( "NoFakturHdrPj1n" )
'c merupakan sel hasil pencarian
Set c = . Find ( listPiutang . List ( listPiutang .
List Index , O) , Lookln : =x1Va1ues )
' Total penerimaan piutang ditambah penerimaan
piutang
c . Offset ( O , 7 ) . Value =
c . Offset ( 0 , 7 ) . Value + CDb1
( txtBayar . Value) ' Sisa piutang
dikurangi penerimaan piutang baru
c . Offset ( O , 8 ) . Value = c . Offset
( O , 8 ) . Value — CDb1 ( txtBayar .
Value )
End With

' Pencarian pada range KodePe1anggan


With wsDtbsP1gn . Range( "KodePe1anggan n )
' c merupakan sel hasil pencarian
Set c = . Find( listPiutang . List ( listPiutang.
List Index , 2 ) , Lookln: =x1Va1ues)
' Piutang pelanggan dikurangi penerimaan piutang
baru

346
c . Offset ( O , 6 ) . Value = c . Offset
( O , 6 ) . Value — CDb1 ( txtBayar .
Value )
End With

' Record terakhir penerimaan piutang kolom A


RecordAkhirPenPiu = wsPenPiu . Cells
(wsPenPiu.Rows . Count , ) .End(x1Up) .
Offset ( O , O ) . Row

With listPiutang
'No faktur di bawah record terakhir penerimaan
piutang wsPenPiu. Cells (RecordAkhirPenPiu + 1 , 1 )
. Value =
. List( . List Index, O )
' Masukkan tanggal pada record yang sama
wsPenPiu. Cells (RecordAkhirPenPiu + 1 , 2 ) .
Value = Date ' Masukkan kode pelanggan pada
record yang sama wsPenPiu. Cells
(RecordAkhirPenPiu + 1 , 3 ) . Value = .
List( . Listlndex, 2 )
' Memasukkan jumlah piutang pada record yang sama
wsPenPiu. Cells (RecordAkhirPenPiu + 1 , 4 ) . Value
=
CDb1 ( txtPiutang . Value )
' Memasukkan penerimaan piutang baru pada record
sama wsPenPiu. Cells (RecordAkhirPenPiu + 1 , 5 ) .
Value =
CDb1 ( txtBayar . Value )
' Memasukkan sisa piutang pada record yang sama
wsPenPiu. Cells (RecordAkhirPenPiu + 1 , 6 ) .
Value =
CDb1 ( txtPiutang . Value ) — CDb1
( txtBayar . Value ) End With

' TextBox Piutang bernilai O


txtPiutang . Value
' TextBox Bayar bernilai O
txtBayar . Value
' Memanggil Sub Procedure optPiutangA11_C1ick
Call optPiutangA11_C1ick

End Sub

' Kode ketika di —klik


Private Sub CommandButton Cetak
cmdCetak_C1ick( )
' wsPenPiu adalah
worksheet
PenerimaanPiutang
Set wsPenPiu = Sheets ( " PenerimaanPiutang " )
' wsTb1Bantu adalah worksheet TabelBantu

347
Set wsTb1Bantu = Sheets ( "
' wsCetak adalah worksheet Cetak
Set wsCetak = Sheets( " Cetak" )
' rgAdvFi1ter adalah range H2 : H3 worksheet
PenerimaanPiutang
Set rgAdvFi1ter = wsPenPiu.Range( '1 H2 : H3 'I )

' Menentukan orientasi kertas


wsCetak. PageSetup . Orientation =
x1Portrait ' Menentukan margin kiri
kertas wsCetak. PageSetup .
LeftMargin =
Application.
CentimetersToPoints ( 1 . 5 ) '
Menentukan margin kanan kertas
wsCetak. PageSetup . RightMargin =

Application.
CentimetersToPoints ( 1 . 5 ) '
Menentukan margin atas kertas
wsCetak. PageSetup . TopMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup . BottomMargin
=
Application. CentimetersToPoints (
2 ) ' Menentukan ukuran pencetakan
wsCetak. PageSetup . Zoom = 100 '
Menentukan judul cetak wsCetak.
PageSetup . PrintTit1eRows = " $9 :
$10" ' Menentukan area cetak wsCetak.
PageSetup . PrintArea =

' Menghapus seluruh sel worksheet Cetak


wsCetak . Cells . Clear
' Menentukan lebar kolom A worksheet Cetak
wsCetak. Columns( "A : A" ) . ColumnWidth =
10
Teks PENERIMAAN PIUTANG pada sel A7 worksheet
Cetak wsCetak.Range( "Al" ) . Value = l'
PENERIMAAN PIUTANG" ' Format font tebal (bold)
pada sel A7 worksheet Cetak
wsCetak.Range( "Al" ) . Font . Bold = True
' Ukuran font ( 12 ) pada sel A7 worksheet Cetak
wsCetak.Range( "Al" ) . Font. Size = 12
' Teks pada range A7 : G7 diformat rata tengah
wsCetak . Range ( "Al : FI " ) . Horizontal
Alignment = xlCenter ' Menggabungkan range A7 :
G7 wsCetak . Range ( "Al : FI " ) . Merge
' Menentukan tinggi baris ke—8 worksheet Cetak
wsCetak. Rows ( " 2 : 2" ) . RowHeight

348
' OptionButton Detail penerimaan piutang/faktur yang
terpilih
If optDetai1. Value = True Then
' Memasukkan teks Cetak No Faktur : terpilih
wsCetak.Range( "A3" ) . Value —
Cetak No Faktur & cmbNoFaktur .
Value ' Memasukkan teks no faktur
terpilih wsPenPiu.Range( "H3 " ) . Value
= cmbNoFaktur . Value
Else
' Memasukkan teks Cetak Seluruh Record
wsCetak.Range( "'A3 " ) . Value = "
Cetak : Seluruh Record " ' Menghapus
nilai sel 13 wsPenPiu . Range ( "H3 't ) .
ClearContents

End If
' Format font tebal (bold) pada sel A9 worksheet Cetak
wsCetak.Range( "A3" ) . Font . Bold = True
' Menyalin lebar kolom range
A2 :G2 wsPenPiu . Range( "A2 : F
2" ) . Copy wsCetak. Range( "A4 "
) . PasteSpecia1
Paste : =x1PasteC01umnWidths
' Menyaring data menggunakan Advanced Filter
wsPenPiu. Range ( "DatabasePiutang " ) .
AdvancedFi1ter
Action : =x1Fi1terInP1ace, CriteriaRange :
=rgAdvFi1ter
' Menyalin range DatabasePiutang Advanced
Filter wsPenPiu. Range( "DatabasePiutang" )
. SpecialCe11s (xlCe11TypeVisib1e) . Copy
Destination: = wsCetak . Range( "A5 " )

' Mencetak database piutang wsCetak.


PrintOut Copies : Collate : —True
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsPenPiu . FilterMode Then
' Tampilkan seluruh data worksheet PenerimaanPiutang
wsPenPiu . ShowA11Data
End If

End Sub
o
' Kode ketika CommandButton Keluar di-klik
Private Sub cmdKe1uar_C1ick( )
0
' Keluar dari Form Penerimaan Piutang

349
Unload Me

End Sub

Kode ketika Form Penerimaan Piutang ditutup


Private Sub UserForm_QueryC10se ( Cancel As Integer ,
CloseMode As Integer )

wsHdrPj1n adalah worksheet HeaderPenjua1an


Set wsHdrPj1n = Sheets( "HeaderPenjua1an " )
' wsPenPiu adalah worksheet PenerimaanPiutang
Set wsPenPiu = Sheets ( 't PenerimaanPiutang " )
' Menghapus range K 3 : 03 worksheet
HeaderPenjua1an wsHdrPj1n . Range ( "K 3 : 03
" ) . ClearContents o
' Menghapus sel H 3
worksheet PenerimaanPiutang wsPenPiu . Range
( "H3 " ) . ClearContents

Jika data yang ditampilkan merupakan has il penyaringan


If wsHdrPj1n. FilterMode Then
Tampilkan seluruh data dalam worksheet HeaderPenjua1an
wsHdrPj In . ShowA11 Data
End If

Jika data yang ditampilkan merupakan hasil penyaringan


If wsPenPiu. FilterMode Then
' Tampilkan seluruh data worksheet PenerimaanPiutang
wsPenPiu . ShowA11Data
End If

End Sub

4.12 Membuat Form Cetak


Form Cetak merupakan form utama untuk menampilkan form
cetak dalam aplikasi penjualan. Melalui form ini, Anda dapat
menentukan apakah akan mencetak database barang, database
pemasok, database pelanggan, transaksi pembelian atau
transaksi penjualan.
1. Pilih menu utama Insert > dserForm pada jendela Visual
Basic Editor. Atur properti OserForm melalui window
Properties. Pilih menu utama yew > Properties Window
atau tekan tombol F4. Obah properti OserForm sebagai
berikut: Name = formCetak, Caption = (kosong), Height =
162 dan Width = 216.
2. Tambahkan kontrol ke dalam OserForm hingga tampilan
Form Cetak menjadi seperti pada Gambar 4.16.

350
Gambar 4.16 Tampilan Form Cetak.

3. Pengaturan properti objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 78, Top = 108, Width = 60, Accelerator
CommandButton = K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 2
Name = cmdOK, Caption = OK, Height = 24, Left
= 144, Top = 108, Width = 60, Accelerator = O,
CommandButton
PicturePosition = I—frmPicturePositionLeftCenter,
Picture = OK.gif, Tablndex = 1
Name = frmOpsi, Caption = (kosong), Height = 66,
Frame
Left = 6, To = 36, Width = 198, Tablndex = 0
Name = optDtbsBarang, Caption = Database
OptionButton Barang, Height = 18, Left = 6, Top = 6, Width =
93, Accelerator = B, Tablndex = 0, Value = True
Name = optDtbsPemasok, Caption = Database
OptionButton Pemasok, Height = 18, Left = 6, Top = 24, Width
= 93, Accelerator = D, Tablndex = 1, Value = False

351
Name = optDtbsPelanggan, Caption = Database
OptionButton Pelanggan, Height = 18, Left = 6, Top = 42, Width
= 93, Accelerator = P, Tablndex = 2, Value = False
Name = optTransaksiBeli, Caption = Transaksi
Pembelian, Height = 18, Left = 102, Top = 6,
OptionButton
Width = 93, Accelerator = T, Tablndex = 3, Value
= False
Name = optTransaksiJual, Caption = Transaksi
Penjualan, Height = 18, Left = 102, Top = 24,
OptionButton
Width = 93, Accelerator = j, Tablndex = 4, Value =
False
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Cetak.gif, PictureAlignment = 2
Image
— frmPictureAlignmentCenter, PictureSizeMode
= 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Form Cetak, Height =
24, Left = 30, Top = 6, Width = 174, Font = (Font
Label = Tahoma; Font style = Bold; Size = 16),
BackColor = (hijau muda), Forecolor =
(merah)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
' Kode ketika CommandButton OK di-klik
Private Sub cmdOK_C1ick( )
' wsDtbsBrg adalah worksheet DatabaseBarang
Set wsDtbsBrg = Sheets( "DatabaseBarang " )
wsDtbsPmsk adalah worksheet DatabasePemasok
Set wsDtbsPmsk = Sheets ( "DatabasePemasok" )
0
' wsDtbsP1gn adalah worksheet
DatabasePe1anggan
Set wsDtbsP1gn = Sheets ( "DatabasePe1anggan
t
' )
' wsHdrPb1n adalah worksheet HeaderPembe1ian
Set wsHdrPb1n = Sheets ( "
HeaderPembe1ian" ) ' wsHdrPj1n adalah
worksheet HeaderPenjua1an
Set wsHdrPj1n = Sheets( " HeaderPenjua1an " )
' Keluar dari Form Cetak

352
Unload Me
' Jika OptionButton Database Barang yang terpilih
If optDtbsBarang . Value = True Then
' Jika database barang kosong
If wsDtbsBrg . Range( "A3 " ) . Value = Then
' Menampilkan kotak pesan Database Barang
Kosong
MsgBox "Tidak ada data dalam database barang" ,
vbOKOn1y , "Database Barang Kosong"
' Keluar dari Sub Procedure
Exit Sub
End If
' Menampilkan Form Cetak Barang
formCetakBarang . Show
' Jika OptionButton Database Pemasok yang terpilih
El self optDtbsPemasok. Value =
True Then ' Jika database
pemasok kosong
If wsDtbsPmsk. Range( "A3 " ) . Value = Then
' Menampilkan kotak pesan Database Pemasok
Kosong
MsgBox "Tidak ada data dalam database pemasok" ,
vbOKOn1y , "Database Pemasok Kosong"
' Keluar dari Sub Procedure
Exit Sub
End If
' Menampilkan Form Cetak Pemasok f
ormCe takPemas ok. Show

' Jika OptionButton Database Pelanggan yang


terpilih
El self optDtbsPe1anggan . Value =
True Then ' Jika database
pelanggan kosong
If wsDtbsP1gn.Range( "A3" ) . Value = Then
' Menampilkan kotak pesan Database Pelanggan
Kosong
MsgBox "Tidak ada data dalam database pelanggan
" , vbOKOn1y, " Database
Pelanggan Kosong"
' Keluar dari Sub Procedure
Exit Sub
End If
' Menampilkan Form Cetak Pelanggan
formCetakPe1anggan . Show
' Jika OptionButton Transaksi Pembelian yang terpilih
El self optTransaksiBe1i . Value = True Then
' Jika worksheet HeaderPembe1ian kosong
If wsHdrPb1n . Range( "A3 " ) . Value = Then

353
' Menampilkan kotak pesan Transaksi Pembelian
Kosong
MsgBox "Belum ada transaksi pembelian" ,
vbOKOn1y , Transaksi Pembelian Kosong n
' Keluar dari Sub Procedure
Exit Sub
' Keluar dari Form Pembayaran Hutang
Unload Me
End If
' Menampilkan Form Cetak Pembelian
formCetakPembe1ian . Show
' Jika OptionButton Transaksi Penjualan yang terpilih
El self optTransaksiJua1. Value = True Then
' Jika worksheet HeaderPenjua1an kosong
If wsHdrPj1n.Range( "A3 " ) . Value = n n Then
' Menampilkan kotak pesan Transaksi Penjualan
Kosong
MSgBOx 'l Belum ada transaksx pen Jualan " ,
vbOKOn1y ,
" Transaksi Penjualan Kosong "
Keluar dari Sub Procedure
Exit Sub
End If
' Menampilkan Form Cetak Penjualan
formCetakPenjua1an . Show

End If
End Sub

' Kode ketika CommandButton OK di—klik


Private Sub cmdKe1uar_C1ick( )
' Keluar dari Form Cetak
Unload Me

End Sub

4.13 Membuat Form Cetak Barang


Form Cetak Barang digunakan untuk mencetak database barang.
Anda dapat mengetahui detail inforrnasi seluruh barang seperti
harga beli, harga jual, jumlah stok dan informasi lain dengan
mudah setelah database barang dicetak. Database barang dapat
dicetak untuk seluruh record, atau hanya record tertentu
menurut status barang.
1. Pilih menu utama Insert > dserForm pada jendela Visual
Basic Editor. Atur properti OserForm melalui window

354
Properties. Pilih menu utama yew > Properties Window
atau tekan tombol F4. Obah properti OserForm sebagai
berikut: Name formCetakBarang, Caption — (kosong),
Height 150 dan Width = 189.
2. Tambahkan kontrol ke dalam OserForm hingga tampilan
Form Cetak Barang menjadi seperti pada Gambar 4.17.

Gambar 4.17 Tampilan Form Cetak Barang.

3. Pengaturan properti objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
24, Left = 54, Top = 96, Width = 60, Accelerator
CommandButton = K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 2
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 120, Top = 96, Width = 60, Accelerator =
CommandButton C, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Print.gif, Tablndex = 1

355
Name = frmOpsi, Caption = (kosong), Height =
Frame 54, Left = 6, Top = 36, Width = 174, Tablndex = 0

Name = optAllRecord, Caption = Seluruh Record,


OptionButton Height = 18, Left = 6, Top = 6, Width = 72,
Accelerator = S, Tablndex = 0, Value = True
Name = optStatus, Caption = Status Barang,
OptionButton Height = 18, Left = 6, Top = 30, Width = 72,
Accelerator = B, Tablndex = 1, Value = False
Name = cmbStatus, Height = 18, Left = 78, Top =
30, Width = 90, style = 2 fmStyleDropDownList,
ComboBox BackColor =
(abu-abu), Tablndex = 2, Enabled
= False
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Cetak.gif, PictureAlignment = 2
— frmPictureAlignmentCenter, PictureSizeMode
Image = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Cetak Barang, Height
= 24, Left = 30, Top = 6, Width = 150, Font =
Label (Font = Tahoma; Font style = Bold; Size = 16),
BackColor = (hijau muda),
Forecolor = (merah)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
' Kode ketika Form Cetak Barang aktif
Private Sub UserForm_Activate( )
wsDtbsBrg merupakan worksheet DatabaseBarang
Set wsDtbsBrg = Sheets ( " DatabaseBarang " )
' Lanjutkan Macro jika terjadi error
On Error Resume Next

' Deklarasi variabel Sel sebagai range


( sel ) Dim Sel As Range
' Deklarasi variabel NoDupes sebagai koleksi objek baru
Dim NoDupes As New Collection

356
Status merupakan range dari sel D3 ke bawah
Set Status = wsDtbsBrg . Range ( " D3 "
wsDtbsBrg . Range ( "D3 " ) . End
( x1 Down) )

' ComboBox Status tidak


terkunci cmbStatus . Locked =
False ' Menghapus ComboBox
Status cmbStatus . Clear

' Sel merupakan pengulangan tiap sel dalam range Status


For Each Sel In Status
Range NoDupes merupakan sel unik dalam range Status
NoDupes . Add Sel . Value, CStr( Sel .
Value) Next Sel

Item merupakan pengulangan tiap sel dalam range NoDupes


For Each Item In NoDupes
' Menambahkan tiap item range NoDupes ke ComboBox
Status cmbStatus . Addltem Item
Next Item

End Sub
' Kode ketika OptionButton Seluruh Record di—klik
Private Sub optA11Record_C1ick( )
' ComboBox Status dinonaktifkan
cmbStatus . Enabled = False

End Sub

' Kode ketika OptionButton Status Barang di-klik


Private Sub optStatus_C1ick( )
' ComboBox Status diaktifkan
cmbStatus . Enabled = True

End Sub

' Kode ketika CommandButton Cetak di-klik


Private Sub cmdCetak_C1ick( )

' wsDtbsBrg merupakan worksheet DatabaseBarang


Set wsDtbsBrg = Sheets ( " DatabaseBarang n )
' wsCetak adalah worksheet Cetak
Set wsCetak = Sheets( " Cetak" )
' rgAdvFi1ter adalah range L2 :N3 worksheet
DatabaseBarang
Set rgAdvFi1ter = wsDtbsBrg . Range( 't L2 : N 3 )
' Menentukan orientasi kertas wsCetak.
PageSetup . Orientation = x 1
Landscape ' Menentukan margin kiri

357
kertas wsCetak. PageSetup . LeftMargin
=
Application .
CentimetersToPoints ( 1 . 5 ) '
Menentukan margin kanan kertas
wsCetak. PageSetup . RightMargin =
Application .
CentimetersToPoints ( 1.5 ) '
Menentukan margin atas kertas
wsCetak. PageSetup. TopMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup. BottomMargin
=
Application.
CentimetersToPoints ( 2 ) '
Menentukan ukuran pencetakan
wsCetak. PageSetup. Zoom = 100 '
Menentukan judul cetak wsCetak.
PageSetup. PrintTit1eRows '
Menentukan area cetak wsCetak.
PageSetup. PrintArea = " $A: $JTI

' Menghapus seluruh sel worksheet Cetak


wsCetak . Cells . Clear
' Menentukan lebar kolom A worksheet Cetak
wsCetak. Columns( "A ) . ColumnWidth = 10
' Memasukkan teks DATABASE BARANG pada sel A7 worksheet
Cetak wsCetak.Range( "Al" ) . Value = " DATABASE BARANG"
' Format font tebal (bold) pada sel A7 worksheet Cetak
wsCetak.Range( "Al" ) . Font . Bold = True
' Ukuran font ( 12 ) pada sel A7 worksheet Cetak
wsCetak.Range( "Al" ) . Font. Size = 12
' Teks pada range Al : JI diformat rata tengah
wsCetak . Range ( "Al : JI " ) .
HorizontalA1ignment = xlCenter ' Menggabungkan
range Al : JI wsCetak . Range ( "Al : JI " ) .
Merge
' Menentukan tinggi baris ke-2 worksheet Cetak
wsCetak. Rows( " 2 : 2" ) . RowHeight
' Jika OptionButton Seluruh Record yang terpilih
If optA11Record. Value = True Then
' Memasukkan teks Cetak : Seluruh Record
wsCetak. Range( "A3 " ) . Value = " Cetak :
Seluruh Record " ' Menghapus range L3 : N3
worksheet DatabaseBarang wsDtbsBrg . Range( "L3
: N3 " ) . ClearContents
' Jika OptionButton Status Barang yang terpilih
El self optStatus . Value = True Then

358
' Memasukkan teks Cetak : sesuai nilai ComboBox
Status wsCetak. Range( "A3 " ) . Value = " Cetak •
& cmbStatus . Value ' Memasukkan nilai ComboBox
Status ke dalam sel N3 wsDtbsBrg . Range( "N3 " ) .
Value = cmbStatus . Value ' Menghapus range L3 :M3
worksheet DatabaseBarang wsDtbsBrg . Range( "L3 :M3
" ) . ClearContents
End If
' Format font tebal (bold) pada sel A3
worksheet Cetak wsCetak.Range( "A3 " ) . Font
. Bold = True
' Menyalin lebar kolom range A2 : J 2
wsDtbsBrg . Range ( " A2 : J2 " ) . Copy
wsCetak . Range ( "A4 " ) . PasteSpecia1
Paste : =x1PasteC01umnWidths
' Menyaring data menggunakan Advanced Filter
wsDtbsBrg . Range ( " DatabaseBarang" ) .
AdvancedFi1 ter
Action : =x1Fi1 ter1nP1ace , Cri ter iaRange :
=rgAdvFi1 ter
' Menyalin range DatabaseBarang Advanced Filter
wsDtbsBrg . Range( "DatabaseBarang " ) .
SpecialCe11s
( xlCe11TypeVisib1e ) . Copy
Destination : =wsCetak. Range ( " A4 )
' Mencetak database barang wsCetak.
PrintOut Copies : Collate : -True
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsBrg . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabaseBarang wsDtbsBrg . ShowA11Data
End If

' Menghapus range L3 : N3 worksheet DatabaseBarang


wsDtbsBrg . Range( "L3 : N3 " ) . ClearContents
End Sub
l' Kode ketika CommandButton Keluar di-klik
Private Sub cmdKe1uar_C1ick( )

' Keluar dari Form Cetak Barang


Unload Me

End Sub

4.14 Membuat Form Cetak Pemasok

359
Form Cetak Pemasok digunakan untuk mencetak database
pemasok. Anda dapat mencetak seluruh record pemasok dalam
database atau mencetak record pemasok, di mana perusahaan
mempunyai hutang.
1. Pilih menu Insert > dserForm pada jendela Visual Basic
Editor. Atur properti dserForm melalui window Properties.
Pilih menu utama yew > Properties Window atau tekan
tombol F4. Obah properti OserForm sebagai berikut: Name
= formCetakPemasok, Caption = (kosong), Height = 126 dan
Width = 201.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Cetak Pemasok menjadi seperti pada Gambar 4.18.

Gambar 4.18 Tampilan Form Cetak Pemasok.

3. Pengaturan properti objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
CommandButton
24, Left = 66, To = 72, Width = 60, Accelerator =
K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 2
Name = cmdCetak, Caption = Cetak, Height = 24,
CommandButton Left = 132, Top = 72, Width = 60, Accelerator =
C, PicturePosition = I—frmPicturePositionLeftCenter,

360
Picture = Print. if, Tablndex = 1
Name = frmOpsi, Caption = (kosong), Height = 30,
Frame
Left = 6, To = 36, Width = 186, Tablndex = 0
Name = optAllRecord, Caption = Seluruh Record,
OptionButton Height = 18, Left = 6, Top = 6, Width = 72,
Accelerator = S, Tablndex = 0, Value = True
Name = optHutang, Caption = Hutang Pada
OptionButton Pemasok, Height = 18, Left = 84, Top = 6, Width
= 99, Accelerator = H, Tablndex = 1, Value = False

Name = imgForm, Height = 24, Left = 6, Top = 6,


Width = 24, Picture = Cetak.gif, PictureAlignment = 2
Image
— frmPictureAlignmentCenter, PictureSizeMode
= 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Cetak Pemasok,
Height = 24, Left = 30, Top = 6, Width = 162, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackC010r = (hijau muda),
Forecolor = (merah)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
' Kode ketika OptionButton Seluruh Record di—klik
Private Sub optA11Record_C1ick( )

' CommandButton Cetak diaktifkan


cmdCetak. Locked = False

End Sub

Kode ketika OptionButton Hutang Pada Pemasok di—klik


Private Sub optHutang_C1ick( )

' wsDtbsPmsk adalah worksheet DatabasePemasok


Set wsDtbsPmsk = Sheets ( 't DatabasePemasok "
)

o
' rgHutang adalah range dari sel H 3 ke bawah
Set rgHutang = wsDtbsPmsk . Range ( " H 3 "
wsDtbsPmsk. Range( "H3 " ) . End ( xlDown) )
' Struktur pengulangan setiap sel dalam rgHutang
For Each Sel In rgHutang
' Jika ada sel yang nilainya lebih besar dari O

361
If Sel > O Then
' CommandButton Cetak diaktifkan
cmdCetak. Locked = False
' Keluar dari Sub Procedure
Exit Sub
' Jika tidak ada sel yang nilainya lebih besar dari
O Else
' Menonaktifkan CommandButton Cetak
cmdCetak. Locked = True
End
If Next
Sel

End Sub

' Kode ketika CommandButton Cetak di-klik


Private Sub cmdCetak_C1ick( )

' wsDtbsPmsk adalah worksheet DatabasePemasok


Set wsDtbsPmsk = Sheets ( "DatabasePemasok
t ' )
' wsCetak adalah worksheet Cetak
Set wsCetak = Sheets( "Cetak" )
' rgAdvFi1ter adalah range J 2 :L3 worksheet
DatabasePemasok
Set rgAdvFi1ter = wsDtbsPmsk . Range( "J 2 : L3 " )

' Menentukan orientasi kertas wsCetak.


PageSetup . Orientation = x 1
Landscape ' Menentukan margin
kiri kertas wsCetak.
PageSetup. LeftMargin =
Application . ( 2 )
CentimetersToPoints ' Menentukan
margin kanan kertas wsCetak.
PageSetup. RightMargin =
Application. CentimetersToPoints
( 2 ) ' Menentukan margin atas kertas
wsCetak. PageSetup. TopMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup. BottomMargin
=
Application.
CentimetersToPoints ( 2 ) '
Menentukan ukuran pencetakan
wsCetak. PageSetup. Zoom = 100 '
Menentukan judul cetak wsCetak.
PageSetup. PrintTit1eRows '
Menentukan area cetak wsCetak.
PageSetup. PrintArea = " $A: $H TI

362
' Menghapus seluruh sel worksheet Cetak
wsCetak . Cells . Clear
' Menentukan lebar kolom A worksheet Cetak
wsCetak. Columns( "A ) . ColumnWidth = 10
' Teks DATABASE PEMASOK pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Value = " DATABASE PEMASOK " '
Format font tebal (bold) pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Font . Bold = True
' Ukuran font (12) pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Font. Size = 12
' Teks pada range Al : HI diformat rata tengah
wsCetak . Range ( "Al : HI " ) .
HorizontalA1ignment = xlCenter ' Menggabungkan
range Al : HI wsCetak . Range ( "Al : HI " ) .
Merge
' Menentukan tinggi baris ke-2 worksheet Cetak
wsCetak. Rows( " 2 : 2" ) . RowHeight
' Jika OptionButton Seluruh Record yang terpilih
If optA11Record. Value = True Then
' Memasukkan teks Cetak : Seluruh Record
wsCetak. Range( "A3 " ) . Value = " Cetak :
Seluruh Record " ' Menghapus range J3 : L3
worksheet DatabasePemasok wsDtbsPmsk. Range( "J
3 : L3 " ) . ClearContents
El self optHutang . Value = True Then
' Memasukkan teks Cetak : Tunggakan Hutang
wsCetak. Range( "A3 " ) . Value = " Cetak :
Tunggakan Hutang "
' Memasukkan nilai ke dalam sel L3
wsDtbsPmsk. Range( "L3 " ) . Value
' Menghapus range -J 3 : K3 worksheet
DatabasePemasok wsDtbsPmsk.Range ( " J 3 : K 3 "
) . ClearContents
End If
' Format font tebal (bold) pada sel A9 worksheet Cetak
wsCetak.Range( "A3 " ) . Font . Bold =
True

' Menyalin lebar kolom range A2 :


H2 wsDtbsPmsk . Range ( " A2 : H2
" ) . Copy wsCetak . Range ( t' A4
" ) . PasteSpecia1
Paste :
=x1PasteC01umnWidths
' Menyaring data menggunakan Advanced Filter
wsDtbsPmsk . Range ( " DatabasePemasok " ) .
AdvancedFi1ter
Action : =x1Fi1terInP1ace, CriteriaRange :
=rgAdvFi1ter

363
' Menyalin range DatabasePemasok hasil Advanced Filter
wsDtbsPmsk. Range( "Databasepemasok n ) . SpecialCe11s
( xlCe11TypeVisib1e ) . Copy
Destination : =wsCetak . Range ( n A4 )
' Mencetak database pemasok wsCetak.
PrintOut Copies : Collate : -True
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsPmsk . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabasePemasok wsDtbsPmsk. ShowA11Data
End If

' Menghapus range J3 : L3 worksheet DatabasePemasok


wsDtbsPmsk . Range( "J3 : L3 " ) . ClearContents
End Sub
Kode ketika CommandButton Keluar di-klik
Private Sub cmdKe1uar_C1ick( )

' Keluar dari Form Cetak Pemasok


Unload Me

End Sub

4.15 Membuat Form Cetak Pelanggan


Form Cetak Pelanggan digunakan untuk mencetak database
pelanggan dalam aplikasi. Anda dapat mencetak seluruh record
pelanggan dalam database atau mencetak record pelanggan di
mana perusahaan mempunyai piutang pada pelanggan tersebut.
1. Pilih menu Insert > dserForm pada jendela Visual Basic
Editor. Atur properti dserForm melalui window Properties.
Pilih menu utama yew > Properties Window atau tekan
tombol F4. Obah properti OserForm sebagai berikut: Name
= formCetakPelanggan, Caption = (kosong), Height = 126
dan Width = 201.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Cetak Pelanggan menjadi seperti pada Gambar 4.19.

364
Gambar 4.19 Tampilan Form Cetak Pelanggan.

3. Pengaturan properti objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height =
CommandButton
24, Left = 66, To = 72, Width = 60, Accelerator
= K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 2
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 132, Top = 72, Width = 60, Accelerator =
CommandButton C, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture =
Print.gif, Tablndex = 1
Name = frmOpsi, Caption = (kosong), Height =
Frame 30, Left = 6, Top = 36, Width = 186, Tablndex =
0
Name = optAllRecord, Caption = Seluruh Record,
OptionButton Height = 18, Left = 6, Top = 6, Width = 72,
Accelerator = S, Tablndex = 0, Value = True
Name = optPiutang, Caption = Piutang Pelanggan,
OptionButton Height = 18, Left = 84, Top = 6, Width = 99,
Accelerator = P, Tablndex = 1, Value = False
Image Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Cetak.gif, PictureAlignment = 2
— frmPictureAlignmentCenter, PictureSizeMode

365
= 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Cetak Pelanggan,
Height = 24, Left = 30, Top = 6, Width = 162, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackColor = (hijau muda),
Forecolor = (merah)
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Ketikkan kode Macro sebagai berikut:
Kode ketika OptionButton Seluruh Record di—klik
Private Sub optA11Record_C1ick( )

CommandButton Cetak diaktifkan


cmdCetak . Locked = False

End Sub

o
' Kode ketika OptionButton Piutang Pelanggan di—
klik
Private Sub optPiutang_C1ick( )

wsDtbsP1gn adalah worksheet DatabasePe1anggan


Set wsDtbsP1gn = Sheets ( "DatabasePe1anggan " )
rgPiutang adalah range dari sel H3 ke bawah
Set rgPiutang = wsDtbsP1gn. Range( n H3
wsDtbsP1gn . Range( "H3 " ) . End
( xlDown) )
' Struktur pengulangan setiap sel dalam rgPiutang
For Each Sel In rgPiutang
' Jika ada sel yang nilainya lebih besar dari O
If Sel > O Then
' Mengaktifkan CommandButton
Cetak cmdCetak. Locked =
False ' Keluar dari Sub
Procedure
Exit Sub
' Jika tidak ada sel yang nilainya lebih besar dari
O Else
' Menonaktifkan CommandButton Cetak
cmdCetak. Locked = True
End
If Next
Sel

End Sub

' Kode ketika CommandButton Cetak di-klik


Private Sub cmdCetak_C1ick( )

366
worksheet DatabasePe1anggan
' wsDtbsP1gn adalah Sheets
Set wsDtbsP1gn = '
wsCetak adalah
Set wsCetak =
' (
rgAdvFi1ter "DatabasePe1anggan " )
adalah worksheet Cetak
Set rgAdvFi1terSheets( "Cetak" ) range J 2 : =
L3 wsDtbsP1gn . Range( "J 2 :
L3 " )
' Menentukan
orientasi kertas
wsCetak. . Orientation = x 1
PageSetup ' Landscape kiri kertas .
Menentukan LeftMargin =
margin wsCetak.
PageSetup
Application .
CentimetersToPoints ( 2 ) '
Menentukan margin kanan kertas
wsCetak. PageSetup. RightMargin =

Application.
CentimetersToPoints ( 2 ) '
Menentukan margin atas kertas
wsCetak. PageSetup. TopMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup. BottomMargin
=
Application.
CentimetersToPoints ( 2 ) '
Menentukan ukuran pencetakan
wsCetak. PageSetup. Zoom = 100 '
Menentukan judul cetak wsCetak.
PageSetup. PrintTit1eRows '
Menentukan area cetak wsCetak.
PageSetup. PrintArea = " $A: $H TI

' Menghapus seluruh sel worksheet Cetak


wsCetak . Cells . Clear
' Menentukan lebar kolom A worksheet Cetak
wsCetak. Columns( "A ) . ColumnWidth = 10
' Teks DATABASE PELANGGAN pada sel A7 worksheet
Cetak wsCetak.Range( "Al" ) . Value = " DATABASE
PELANGGAN" ' Format font tebal (bold) pada sel
Al worksheet Cetak wsCetak.Range( "Al" ) .
Font . Bold = True
' Ukuran font ( 12 ) pada sel Al worksheet Cetak
wsCetak.Range( "Al" ) . Font. Size = 12
' Teks pada range A7 : H 7 diformat rata tengah
wsCetak . Range ( "Al : HI " ) .

367
HorizontalA1ignment = xlCenter ' Menggabungkan
range A7 : H 7 wsCetak . Range ( "Al : HI " ) .
Merge
' Menentukan tinggi baris ke-2 worksheet Cetak
wsCetak. Rows( " 2 : 2" ) . RowHeight
' Jika OptionButton Seluruh Record yang terpilih
If optA11Record. Value = True Then
' Memasukkan teks Cetak : Seluruh Record
wsCetak. Range( "A3 " ) . Value = " Cetak :
Seluruh Record " ' Menghapus range J3 : L3
worksheet DatabasePe1anggan wsDtbsP1gn . Range(
"J 3 : L3 " ) . ClearContents
' Jika OptionButton Piutang Pelanggan yang terpilih
El self optPiutang . Value = True Then
' Memasukkan teks Cetak : Piutang Pelanggan
wsCetak. Range( "A3 " ) . Value = " Cetak :
Piutang Pelanggan " ' Memasukkan nil ai ke dalam
sel L3 wsDtbsP1gn. Range( "L3 " ) . Value =
' Menghapus range J 3 : K 3 worksheet
DatabasePe1anggan wsDtbsP1gn . Range ( " J 3 :
K3 " ) . ClearContents
End If
' Format font teba1 (bold) pada
sel A9 worksheet Cetak ) . Font . Bold = True
wsCetak.Range( "A3"
kolom range A2 : H2
' Menyalin lebar "A2 : H2 ) . Copy
wsDtbsP1gn . 't A4 " ) . PasteSpecia1
Range( wsCetak . =x1PasteC01umnWidths
Range( Paste :

' Menyaring data menggunakan Advanced Filter


wsDtbsP1gn. Range ( "DatabasePe1anggan n ) .
AdvancedFi1ter
Action : =x1Fi1terInP1ace, CriteriaRange :
=rgAdvFi1ter
' Menyalin range DatabasePe1anggan hasil Advanced Filter
wsDtbsP1gn. Range( "DatabasePe1anggan n ) . SpecialCe11s

( xlCe11TypeVisib1e ) . Copy
Destination : =wsCetak . Range ( n
A4 )
' Mencetak database pelanggan
wsCetak. PrintOut Copies : Collate :
-True
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsDtbsP1gn . FilterMode Then
' Tampilkan seluruh data dalam worksheet
DatabasePe1anggan
wsDtbsP1gn.
ShowA11Data

368
End If

' Menghapus range J3 : L3 worksheet DatabasePe1anggan


-wsDtbsP1gn . Range ( " J 3 : L3 " ) .
ClearContents
End Sub

' Kode ketika CommandButton Keluar di-


klik Private Sub cmdKe1uar_C1ick( )

o
' Keluar dari Form Cetak Pelanggan
Unload Me

End Sub

4.16 Membuat Form Cetak Pembelian


Form Cetak Pembelian digunakan untuk mencetak transaksi
pembelian. Selain mencetak seluruh transaksi pembelian, Anda
juga dapat mencetak transaksi pembelian dengan kriteria
tertentu. Hasil pencetakan transaksi pembelian dapat
ditampilkan secara detail atau hanya dalam bentuk ringkasan.
1. Pilih menu utama Insert > dserForm pada jendela Visual
Basic Editor. Atur properti OserForm melalui window
Properties. Pilih menu utama yew > Properties Window
atau tekan tombol F4. dbah properti OserForm sebagai
berikut: Name formCetakPembelian, Caption = (kosong),
Height = 195 dan Width = 354.
2. Tambahkan kontrol ke dalam dserForm hingga tampilan
Form Cetak Pembelian menjadi seperti pada Gambar 4.20.

369
Gambar 4.20 Tampilan Form Cetak Pembelian.

3. Pengaturan properti objek kontrol selengkapnya dapat


dilihat pada tabel berikut:
Objek Setting Properti
Name = cmdKeluar, Caption = Keluar, Height —
24, Left = 216, Top = 144, Width = 60,
CommandButton Accelerator = K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
Keluar.gif, Tablndex = 4
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 282, Top = 144, Width = 60, Accelerator =
CommandButton C, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Print.gif,
Tablndex = 3
Name = frmOpsi, Caption = (kosong), Height =
Frame 30, Left = 6, Top = 36, Width = 168, Tablndex =
0
Name = frmTampilan, Caption = (kosong), Height
Frame = 30, Left = 180, Top = 36, Width = 162,
Tablndex = 1
Name = frmPengaturanOpsi, Caption =
Frame Pengaturan Opsi, Height = 66, Left = 6, Top = 72,
Width = 336, Enabled = False, Tablndex = 2
Name = optAllRecord, Caption = Seluruh Record,
OptionButton Height = 18, Left = 6, Top = 6, Width = 72,
Accelerator = S, Tablndex = 0, Value = True
Name = optOpsi, Caption = Pengaturan Opsi,
OptionButton Height = 18, Left = 84, Top = 6, Width = 81,
Accelerator = O, Tablndex = 1, Value = False
Name = optAntara, Caption = Antara, Height =
18,
OptionButton
Left = 144, Top = 12, Width = 42, Accelerator =
A, Tablndex = 2, Value = True
OptionButton Name = optTanggal, Caption = Tanggal, Height =

370
18, Left = 186, Top = 12, Width = 45, Accelerator
= T, Tablndex = 3, Value = False
Name = optSebelum, Caption = Sebelum, Height
OptionButton = 18, Left = 234, Top = 12, Width = 51,
Accelerator = b, Tablndex = 4, Value = False
Name = optSesudah, Caption = Sesudah, Height
OptionButton = 18, Left = 282, Top = 12, Width = 48,
Accelerator = d, Tablndex = 5, Value = False
ComboBox Name = cmbTam ilan, Height = 18, Left = 78,
Top = 6, Width = 78, style = 2
fmStyleDropDownList, Tablndex = 0, BackColor =
abu-abu
Name = cmbKode, Height = 18, Left = 72, Top =
36, Width = 66, Style = 2 - fmStyleDropDownList,
ComboBox
Tablndex = 1, BackC010r =
(abuabu)
Name = cmbTangga11, Height = 18, Left = 144,
Top = 36, Width = 90, style = 2
fmStyleDropDownList, Tablndex = 6, BackColor =
ComboBox abu-abu
Name = cmbTangga12, Height = 18, Left = 240,
Top = 36, Width = 90, style = 2
fmStyleDropDownList, Tablndex = 7, BackColor =
ComboBox (abu-abu)
Name = chkHutang, Caption = Tunggakan
Hutang, Height - — 18, Left = 72, Top = 60, Width
CheckBox = 87, Accelerator = H, Tablndex = 2
Name = imgForm, Height = 24, Left = 6, Top = 6,
Width = 24, Picture = Cetak.gif, PictureAlignment = 2
Image — frmPictureAlignmentCenter, PictureSizeMode
= 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Cetak Pembelian,
Height = 24, Left = 30, Top = 6, Width = 312, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackColor = (hijau muda),
Forecolor = (merah)

371
Name = lblTampilan, Caption = Tampilan
Label
Laporan, Hei ht = 12, Left = 6, To = 12, Width = 66
Name = lblKode, Caption = Kode Pemasok, Height
Label
= 12, Left = 6, To = 42, Width = 60
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
o
' Kode ketika Form Cetak Pembelian aktif
Private Sub UserForm_Activate( )

wsHdrPb1n adalah worksheet HeaderPembe1ian


Set wsHdrPb1n = Sheets ( " HeaderPembe1ian " )

Memasukkan item Ringkasan ke ComboBox Tampilan Laporan


cmbTampi1an . Addltem " Ringkasan t'
' Memasukkan item Detail ke dalam ComboBox Tampilan
Laporan cmbTampi1an. Addltem "Detail "
' Nilai Tampilan Laporan adalah Ringkasan
cmbTampi1an. Value = " Ringkasan "

' rgTangga1 adalah range dari sel B3 ke bawah


Set rgTangga1 = wsHdrPb1n. Range( "B3
wsHdrPb1n . Range( "B3 " ) . End
( xlDown) )
' Terendah adalah tanggal paling awal dalam range
rgTangga1 Terlama = Application. WorksheetFunction.
Min ( rgTangga1 )
' Tertinggi adalah tanggal paling akhir dalam range
rgTangga1 Terbaru = Application. WorksheetFunction.
Max ( rgTangga1 )
' Pengulangan dari tanggal paling awal ke paling akhir
For InputTangga1 = Terlama To Terbaru
' Memasukkan pengulangan ke dalam ComboBox
Tanggal 1 cmbTangga11. Addltem Format
( InputTangga1, "dd/mm/yyyy" ) ' Memasukkan
pengulangan ke dalam ComboBox Tanggal 2
cmbTangga12. Addltem Format ( InputTangga1,
"dd/mm/yyyy" )
Next InputTangga1

' Lanjutkan Macro -j i ka terjadi


error
On Error Resume Next

' Deklarasi variabel SelKode sebagai range (sel )

372
Dim SelKode As Range
' Deklarasi variabel NonDupKode sebagai koleksi objek
baru
Dim NonDupKode As New Collection

' rgKode merupakan range dari sel E 3 ke bawah


Set rgKode = wsHdrPb1n .Range( "D3 "
wsHdrPb1n . Range ( "D3 " ) . End
( xlDown) )
' Menghapus ComboBox Kode Pemasok
cmbKode . Clear

' SelKode merupakan pengulangan tiap sel dalam range


rgKode
For Each SelKode In rgKode
' Range NonDupKode merupakan sel unik dalam range
rgKode
NonDupKode.Add SelKode . Value, CStr( SelKode .
Value ) Next SelKode

' Item-Kode merupakan pengulangan sel dalam range


NonDupKode
For Each Item-Kode In NonDupKode
' Menambahkan tiap item range NonDupKode ke ComboBox
cmbKode . Addltem ItemKode
Next Item-Kode

' rgHutang adalah range dari sel G3 ke bawah


Set rgHutang = wsHdrPb1n. Range( " G3 TI ,
wsHdrPb1n . Range ( "G3 " ) . End
( xlDown) )
' Struktur pengulangan setiap sel dalam rgHutang
For Each Sel In rgHutang
' Jika ada sel yang nilainya lebih besar dari O
If Sel > O Then
' Mengaktifkan CheckBox Tunggakan
Hutang chkHutang . Enabled = True
' Keluar dari Sub Procedure
Exit Sub
' Jika tidak ada sel yang nilainya lebih besar dari
O Else
' Menonaktifkan CheckBox Tunggakan Hutang
chkHutang. Enabled = False
' CheckBox Tunggakan Hutang tidak terpilih
chkHutang. Value = False
End
If Next
Sel

End Sub

373
' Kode ketika OptionButton Seluruh Record di—klik
Private Sub optA11Record_C1ick( )
' Frame PengaturanOpsi dinonaktifkan
frmPengaturanOpsi . 'Enabled = False dalam
OptionButton Antara keadaan terpilih
optAntara . Value = 'True
ComboBox Tanggal1 dikosongkan
cmbTangga11. Value '
ComboBox Tanggal
cmbTangga12. Value '
ComboBox Kode
cmbKode . Value = '
CheckBox Tunggakan
chkHutang . Value = I dikosongkan
=
End Sub Pemasok dikosongkan

' Kode ketika Hutang tidak terpilih


OptionButton False Pengaturan
Opsi di—klik
Private Sub optOpsi_C1ick( )
' Frame Pengaturan Opsi diaktifkan
frmPengaturanOpsi . Enabled = True

End Sub

' Kode ketika nilai ComboBox Kode Pemasok diubah


Private Sub cmbKode_Change ( )

' wsHdrPb1n adalah worksheet HeaderPembe1ian


Set wsHdrPb1n = Sheets ( " HeaderPembe1ian n )
'Nilai sel L3 sama dengan nilai ComboBox Kode Pemasok
wsHdrPb1n. Range( "L3" ) . Value = cmbKode . Value
End Sub

' Kode ketika OptionButton Antara di—klik


Private Sub optAntara_C1ick( )
' Mengaktifkan ComboBox
Tanggal 1 cmbTangga11.
Enabled = True '
Mengaktifkan ComboBox
Tanggal 2 cmbTangga12 .
Enabled = True ' ComboBox
Tanggal 1 dikosongkan
cmbTangga11. Value = '
ComboBox Tanggal 2
dikosongkan cmbTangga12.
Value =
' Menghapus nilai range J 3 : K3 worksheet
HeaderPembe1ian

374
Sheets ( n HeaderPembe1ian" ) . Range ( "J 3 : K 3 ) .
ClearContents
End Sub

' Kode ketika OptionButton Tanggal di—klik


Private Sub optTangga1_C1ick( )
' Menonaktifkan ComboBox
Tanggal 2 cmbTangga12.
Enabled = False ' ComboBox
Tanggal 1 dikosongkan
cmbTangga11. Value = '
ComboBox Tanggal 2
dikosongkan cmbTangga12 .
Value =
' Menghapus nil ai range J 3 : K 3 worksheet
HeaderPembe1ian
Sheets ( n HeaderPembe1ian" ) . Range ( " J 3 : K 3 " ) .
ClearContents

End Sub
' Kode ketika OptionButton Sebelum di-klik
Private Sub optSebe1um_C1ick( )

' Menonaktifkan ComboBox Tanggal


2 cmbTangga12. Enabled = False '
ComboBox Tanggal 1 dikosongkan
cmbTangga11. Value = ' ComboBox
Tanggal 2 dikosongkan
cmbTangga12. Value =
' Menghapus nilai range J 3 : K 3 worksheet
HeaderPembe1ian
Sheets ( n HeaderPembe1ian" ) . Range ( "J 3 : K 3 ) .
ClearContents
End Sub

' Kode ketika OptionButton Sesudah di—klik


Private Sub optSesudah_C1ick( )
' Menonaktifkan ComboBox
Tanggal 2 cmbTangga12.
Enabled = False ' ComboBox
Tanggal 1 dikosongkan
cmbTangga11. Value = '
ComboBox Tanggal 2
dikosongkan cmbTangga12.
Value =
' Menghapus nilai range J 3 : K3 worksheet
HeaderPembe1ian
Sheets ( n HeaderPembe1ian" ) . Range ( "J 3 : K 3 ) .
ClearContents

375
End Sub

' Kode ketika nilai ComboBox Tanggal 1 diubah


Private Sub )

' wsHdrPb1n adalah worksheet HeaderPembe1ian


Set wsHdrPb1n = Sheets ( " HeaderPembe1ian n )
' Jika ComboBox Tanggal 1 kosong
If cmbTangga11. Value = Then
' Menghapus nilai sel J 3 worksheet HeaderPembe1ian
wsHdrPb1n . Range( "J 3 " ) . ClearContents
' Keluar dari Sub Procedure
Exit Sub
End If

' Jika OptionButton Antara yang terpilih


If optAntara . Value = True Then
' Pengisian nilai sel J 3 >= tanggal terpilih
wsHdrPb1n . Range ( "J 3 " ) . Value —
& Format ( cmbTangga11 . Value , n
mm/dd/yyyy" )
' Jika OptionButton Tanggal yang terpilih
El self optTangga1. Value = True Then
' Pengisian nil ai sel J 3 tanggal terpilih
wsHdrPb1n . Range( "J 3 " ) . Value =
CDate ( cmbTangga11. Value )
' Jika OptionButton Sebelum yang terpilih
El self optSebe1um. Value = True Then
' Pengisian nilai sel J 3 < tanggaL
terpi1ih wsHdrPb1n. Range( "J 3 " ) . Value
= n
< n & Format ( cmbTangga11 . Value ,
nmm/dd/wyy" )
' Jika OptionButton Sesudah yang terpilih
El self optSesudah. Value = True Then
' Pengisian nilai sel J 3 > tanggal
terpilih wsHdrPb1n. Range( "J 3 " ) . Value
= n
> n & Format ( cmbTangga11 . Value ,
nmm/dd/wyy" )
End If

End Sub

' Kode ketika nilai ComboBox Tanggal 2 diubah


Private Sub )

' wsHdrPb1n adalah worksheet HeaderPembe1ian


Set wsHdrPb1n = Sheets ( " HeaderPembe1ian n )
' Jika ComboBox Tanggal 2 kosong
If cmbTangga12. Value = Then

376
' Menghapus nilai sel K3 worksheet HeaderPembe1ian
wsHdrPb1n . Range ( "K3 " ) . ClearContents
' Jika ComboBox Tanggal 2 tidak kosong
Else
' Pengisian nilai sel K3 <= tanggal terpilih
wsHdrPb1n . Range( "K3 " ) . Value =
& Format ( cmbTangga12 . Value , n
mm/dd/yyyy" ) End If

End Sub

' Kode ketika CheckBox Tunggakan Hutang di—klik


Private Sub chkHutang_C1ick( )

' wsHdrPb1n adalah worksheet HeaderPembe1ian


Set wsHdrPb1n = Sheets ( " HeaderPembe1ian n )
' Jika CheckBox Tunggakan Hutang tercontreng
If chkHutang . Value = True
Then ' Sel M3 diisi nilai
wsHdrPb1n . Range( "M3
" ) . Value
' Jika CheckBox Tunggakan Hutang tidak
tercontreng Else
' Menghapus nilai sel M3
wsHdrPb1n . Range( "M3 " ) .
ClearContents
End If

End Sub CommandButton Cetak di —klik


cmdCetak_C1ick( )
' Kode ketika
Private Sub
worksheet HeaderPembe1ian
' wsHdrPb1n adalah Sheets ( " HeaderPembe1ian
Set wsHdrPb1n = " )
' rgAdvFi1ter adalah
range 12 : M3 worksheet HeaderPembe1ian
Set rgAdvFi1ter = wsHdrPb1n . Range
( '1 12 : M3 " )
' Menyaring data menggunakan Advanced Filter
wsHdrPb1n . Range ( "'DatabaseHeaderPembe1ian " ) .
AdvancedFi1ter
Action : =x1Fi1terInP1ace, CriteriaRange :
=rgAdvFi1ter
' Pengulangan tiap sel dalam range NoFakturHdrPb1n
For Each CekSe1Tampi1 In wsHdrPb1n . Range( n

NoFakturHdrPb1n II )
' Jika ada baris yang ditampilkan dari hasil
penyaringan
If CekSe1Tampi1. EntireRow. Hidden = False Then

377
' Memanggil Sub Procedure Laporan
Call Laporan
' Keluar dari Sub Procedure
Exit Sub
End If
Next CekSe1Tampi1

' Menampilkan kotak pesan Tidak Ada Transaksi


MsgBox n Tidak ada transaksi pembelian sesuai kriteria" ,
vbOKOn1y + vblnformation, " Tidak Ada Transaksi "

' OptionButton Seluruh Record terpilih


optA11Record. Value = True
' Jika data yang ditampilkan merupakan hasil penyaringan
If wsHdrPb1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet
HeaderPembe1ian wsHdrPb1n. ShowA11Data
End If

End Sub

' Memanggil Sub Procedure Laporan


Sub Laporan( )
' wsHdrPb1n adalah worksheet HeaderPembe1ian
Set wsHdrPb1n = Sheets ( "
HeaderPembe1ian n ) ' wsDt1Pb1n adalah
worksheet Detail Pembelian
Set wsDt1Pb1n = Sheets( "Detail Pembelian n )
' wsCetak adalah worksheet Cetak
Set wsCetak = Sheets( "Cetak" )
' rgAdvFi1ter adalah range 12 : 13 worksheet Detail
Pembelian
Set rgAdvFi1ter = wsDt1Pb1n.Range( n 12 : 13 n )

' Menghapus seluruh sel worksheet Cetak


wsCetak . Cells . Clear
kolom A worksheet Cetak
' Menentukan lebar
A" ) . ColumnWidth =
wsCetak. Columns( "A:
10
Teks DATABASE
PEMBELIAN pada sel Al worksheet Cetak
wsCetak.Range( "Al") . Value = "DATABASE PEMBELIAN" '
Format font teba1 (bold) pada sel A7 worksheet Cetak
wsCetak.Range( "Al" ) . Font . Bold = True
' Ukuran font ( 12 ) pada sel Al worksheet Cetak
wsCetak.Range( "Al "0 . Font . Size = 12
' Menentukan tinggi baris ke—8 worksheet Cetak
wsCetak. Rows( "2: 2" ) . RowHeight = 5
' Format font tebal (bold) pada sel A3 worksheet Cetak
wsCetak.Range( "A3 'V ) . Font . Bold = True
' Jika nilai ComboBox Tampilan Laporan adalah Ringkasan

378
If cmbTampi1an. Value = " Ringkasan n Then
' Teks pada range Al : HI diformat rata tengah
wsCetak . Range ( "Al : HI " ) .
HorizontalA1ignment = xlCenter ' Menggabungkan
range Al : HI wsCetak . Range( "Al : HI " ) .
Merge ' Menentukan orientasi kertas wsCetak.
PageSetup. Orientation = xlPortrait ' Menentukan
margin kiri kertas wsCetak. PageSetup.
LeftMargin =
Application.
CentimetersToPoints ( 1 . 5 ) '
Menentukan margin kanan kertas
wsCetak. PageSetup. RightMargin =
Application.
CentimetersToPoints ( 1 . 5 ) '
Menentukan margin atas kertas
wsCetak. PageSetup. TopMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup. BottomMargin
= Application.
CentimetersToPoints ( 2 ) '
Menentukan ukuran pencetakan
wsCetak. PageSetup. Zoom = 90 '
Menentukan judul cetak wsCetak.
PageSetup. PrintTit1eRows
' Menentukan area cetak
wsCetak. PageSetup. PrintArea = n
$A: $G TI
' Memasukkan teks
Cetak : Ringkasan Transaksi
wsCetak. Range( "A3 " ) . Value "
Cetak Ringkasan
Transaksi n
' Mengcopy range A2 : G2
wsHdrPb1n . Range ( "A2 :
G2 " ) . Copy
' Menyalin lebar kolom range A2 :
H2 wsCetak. Range( "A4" ) .
PasteSpecia1
Paste : =x1PasteC01umnWidths
' Menyalin range DatabaseHeaderPembe1ian yang
ditampilkan wsHdrPb1n. Range
( "DatabaseHeaderPembe1ian" ) . SpecialCe11s
( xlCe11TypeVisib1e) . Copy
Destination : =wsCetak . Range ( n A4 )
' Jika nilai ComboBox Tampilan Laporan adalah
Detail
El self cmbTampi1an. Value = " Detail n Then ' Teks
pada range Al : FI diformat rata tengah
wsCetak . Range ( "Al : FI " ) .

379
=
HorizontalAlignment = xlCenterxlPortrait '
Menggabungkan range Al : FI
wsCetak. Range ( " Al : FI " ) .
Merge ' Menentukan orientasi ( 1 . 5
kertas wsCetak. PageSetup . )
Orientation ' Menentukan
margin kiri kertas wsCetak.
PageSetup . LeftMargin = ( 1 . 5
Application . CentimetersToPoints )
' Menentukan margin kanan kertas
wsCetak, PageSetup.RightMargin =
Application . CentimetersToPoints
' Menentukan margin atas kertas
wsCetak. PageSetup. TopMargin =
Application.
CentimetersToPoints ( 2 ) '
Menentukan margin bawah kertas
wsCetak. PageSetup. BottomMargin
=
Application.
CentimetersToPoints ( 2 ) '
Menentukan ukuran pencetakan
wsCetak. PageSetup. Zoom = 90 '
Menentukan area cetak wsCetak.
PageSetup. PrintArea =
' Memasukkan teks Cetak : Detail Transaksi
wsCetak. Range( "A3 " ) . Value = " Cetak :
Detail Transaksi "
' Jum1ahSe11 range NoFakturHdrPb1n yang ditampilkan
Set Jum1ahSe11 = wsHdrPb1n. Range( n

NoFakturHdrPb1n" ) . SpecialCe11s ( xlCe1


ITypeVi sible )
' ItemSe1 pengulangan sel dalam range Jum1ahSe11
For Each ItemSe1 In Jum1ahSe11 ' Sel 13
diisi nilai ItemSe1 wsDt1Pb1n. Range (
" 13 " ) . Value = ItemSe1. Value
' Menyaring range DatabaseDetai1Pembe1ian
wsDt1Pb1n. Range ( " DatabaseDetai1Pembe1ian"
) .
AdvancedFi1ter Action :
=x1Fi1terInP1ace ,

CriteriaRange : =wsDt1Pb1n. Range ( " 12 :


13 " )
' RecordAkhir baris terakhir worksheet cetak
RecordAkhir = wsCetak. Cells (Rows .
Count, "A" ) .

End(x1Up) . Offset (O, O ) . Row

380
'No faktur sel kolom A, 2 baris bawah
RecordAkhir wsCetak. Cells (RecordAkhir
+ 2 , 1) . Value = n No Faktur & ItemSe1.
Value
' Pengisian tanggal wsCetak. Cells
(RecordAkhir + 3, 1) . Value = n Tanggal
& ItemSe1. Offset ( O , 1) . Value '
Pengisian tanggal jatuh tempo wsCetak.
Cells (RecordAkhir + 4, 1) . Value =

Jatuh Tempo & ItemSe1. Offset (O, 2) .


Value ' Pengisian kode pemasok wsCetak.
Cells (RecordAkhir + 5, 1) . Value =

Kode Pemasok & ItemSe1.Offset (O, 3) Value


.
' Pengisian teks No Item
wsCetak. Cells (RecordAkhir + 6 , 1) . "No Item
Value = "
' Pengisian teks Kode
wsCetak. Cells (RecordAkhir + 6 , 2 ) . " Kode "
wsCetak.
Value =
Cells
' Pengisian teks Nama Barang
( RecordAkhir 3 ) . Value = n Nama Barang"
' Pengisian teks Harga
teks Jumlah
wsCetak. wsCetak. Cells ( RecordAkhir 6 5 ) . Value "
Cells = Harga
' Pengisian teks Total , "
( RecordAkhir 4 ) . Value = "Jumlah "
' Pengisian

wsCetak. Cells (RecordAkhir 6 6 ) . Value =


"Total
' Menentukan lebar kolom B worksheet Cetak
wsCetak. Columns ( "B : B" ) . ColumnWidth =
10
' Menentukan lebar kolom C worksheet Cetak
wsCetak. Columns ( "C : C " ) . ColumnWidth
= 20
' Menentukan lebar kolom D worksheet Cetak
wsCetak. Columns ( "D : D" ) . ColumnWidth =
12
' Menentukan lebar kolom E worksheet Cetak
wsCetak. Columns ( "E : E " ) . ColumnWidth
= 14
' Menentukan lebar kolom F worksheet Cetak
wsCetak. Columns ( "F : F" ) . ColumnWidth =
16

381
' Pengulangan format rata tengah & menambah
border
For HdrTb1Atas = 1 To 6
' Teks pada judul kolom diformat rata tengah
wsCetak. Cells (RecordAkhir + 6 , HdrTb1Atas)
.
HorizontalA1ignment = xlCenter '
Menambahkan border judul kolom bagian
atas wsCetak. Cells (RecordAkhir + 6 ,
HdrTb1Atas) .
Borders ( xlEdgeTop ) . LineSty1e =
xlContinuous ' Menambahkan border judul
kolom bagian bawah wsCetak. Cells
(RecordAkhir + 6 , HdrTb1Atas) .
Borders ( xlEdgeBottom) . LineSty1e = xlDoub1e
Next HdrTb1Atas
' Range NoFakturDt1Pb1n yang ditampilkan
Set Jum1ahSe12 = Range( "NoFakturDt1Pb1n"
SpecialCe11s ( xlCe1 ITypeVisib1e )
' Pengulangan sel dalam range Jum1ahSe12
For Each ItemSe12 In Jum1ahSe12
' Baris terakhir worksheet Cetak
RecordAkhir2 = wsCetak. Cells (Rows .
Count , End(x1Up) . Offset ( O , O )
. Row ' Pengisian no item wsCetak. Cells
(RecordAkhir2 + 1 , 1 ) . Value =
ItemSe12. Offset ( O , 1 ) .
Value ' Sel no item diformat
rata tengah wsCetak. Cells
(RecordAkhir2 + 1 , 1 ) .
HorizontalA1ignment = xlCenter '
Pengisian kode barang wsCetak. Cells
(RecordAkhir2 + 1 , 2 ) . Value =
ItemSe12. Offset ( O , 2 ) . Value
' Pengisian nama barang wsCetak. Cells
(RecordAkhir2 + 1 , 3 ) . Value =
ItemSe12. Offset ( O , 3 ) . Value
' Pengisian jumlah barang wsCetak.
Cells (RecordAkhir2 + 1 , 4 ) . Value =

ItemSe12. Offset ( O , 4 ) . Value


' Pengisian harga barang
wsCetak. Cells (RecordAkhir2 + 1 ,
5 ) . Value =
ItemSe12 . Offset ( 0 ,
5 ) . Value ' Format data sel
harga barang wsCetak. Cells
(RecordAkhir2 + 1 , 5 ) .
Number Format =

382
' Pengisian total item transaksi
wsCetak. Cells (RecordAkhir2 + 1 ,
6 ) . Value =
ItemSe12 . Offset ( 0 ,
6 ) . Value ' Format data sel
total item transaksi wsCetak .
Cells (RecordAkhir2 + 1 , 6 ) .

NumberFormat
Next ItemSe12

' RecordAkhir 3 = record terakhir worksheet


cetak Re cordAkhir3 = wsCetak. Cells (Rows .
Count, "A" ) .
End(x1Up) . Offset ( O , O ) . Row '
Pengisian teks Total wsCetak. Cells
(RecordAkhir3 + 1 , 1 ) . Value = " Total " '
Memasukkan nilai total transaksi wsCetak.
Cells (RecordAkhir3 + 1 , 2 ) . Value =
ItemSe1. Offset ( O , 4) . Value ' Format
data nilai total transaksi wsCetak. Cells
(RecordAkhir3 + 1 , 2 ) . NumberFormat =

' Pengisian teks Bayar

wsCetak. Cells (RecordAkhir3 + 2 1 ) . Value "


, = Bayar
' Memasukkan jumlah pembayaran "
wsCetak. Cells (RecordAkhir3 + 2 2 ) . Value
, =

ItemSe1. Offset ( O , 5 ) . Value ' Format


data nilai jumlah pembayaran wsCetak. Cells
(RecordAkhir3 + 2 , 2 ) . NumberFormat =
ItemSe1. Offset (O,
' Pengisian teks Hutang wsCetak. 6 ) . Value
Cells (RecordAkhir3 + 3, ' 1) . Value = " Hutang
Memasukkan jumlah hutang wsCetak. "
Cells (RecordAkhir3 + 3,
2 ) . Value =
' Format data nilai jumlah hutang wsCetak.
Cells (RecordAkhir3 + 3, 2 ) . NumberFormat =

' Pengulangan untuk menambahkan border


For AkhirBorder1 = 1 To 6
' Menambahkan border di bagian bawah tabel
wsCetak. Cells (RecordAkhir3 + 1,
AkhirBorder1 ) .

383
Borders ( xlEdgeTop ) . LineSty1e =
xlContinuous Next AkhirBorder1

' Pengulangan untuk menambahkan border


For AkhirBorder2 = 1 To 2
' Border di bawah teks dan nilai hutang
wsCetak. Cells (RecordAkhir3 + 3,
AkhirBorder2) . Borders (xlEdgeBottom) .
LineSty1e = xlContinuous
Next
AkhirBorder2 Next
ItemSe1

End If

' Mencetak transaksi pembelian


wsCetak. PrintOut Copies :=1,
Collate: =True

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsHdrPb1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet
HeaderPembe1ian wsHdrPb1n. ShowA11Data
End If

' Jika data yang ditampilkan merupakan hasil penyaringan


If wsDt1Pb1n . FilterMode Then
' Tampilkan seluruh data dalam worksheet Detail
Pembelian wsDt1Pb1n. ShowA11Data
End If

' Menghapus nilai range J 3 : 03 worksheet


HeaderPembe1ian wsHdrPb1n . Range( "J 3 : 03 " ) .
ClearContents
' Menghapus nilai range 13 worksheet DetailPembe1ian
wsDt1Pb1n. Range( " 13 " ) . ClearContents

End Sub

' Kode ketika CommandButton Keluar di—klik


Private Sub cmdKe1uar_C1ick( )
' Keluar dari Form Cetak Pembelian
Unload Me
End Sub

4.17 Membuat Form Cetak Penjualan

384
Form Cetak Penjualan digunakan untuk mencetak transaksi
penjualan yang sudah dilakukan. Selain mencetak seluruh
transaksi penjualan, Anda juga dapat mencetak transaksi
penjualan dengan kriteria tertentu. Hasil pencetakan transaksi
penjualan dapat ditampilkan secara detail atau hanya dalam
bentuk ringkasan. Kode Macro dalam Form Cetak Penjualan
tidak diberi komentar penjelasan, karena pada prinsipnya
mempunyai isi penjelasan yang hampir sama dengan Form Cetak
Pembelian.
1. Pilih menu utama Insert > dserForm pada jendela Visual
Basic Editor. Atur properti OserForm melalui window
Properties. Pilih menu utama yew > Properties Window
atau tekan tombol F4. Obah properti OserForm sebagai
berikut: Name formCetakPenjuaIan, Caption = (kosong),
Height = 198 dan Width = 354.
2. Tambahkan kontrol ke dalam OserForm hingga tampilan
Form Cetak Penjualan menjadi seperti pada Gambar 4.21.

Cetak

Gambar 4.21 Tampilan Form Cetak Peqjualan.

3. Pengaturan properti objek kontrol selengkapnya dapat


dilihat pada tabel berikut:

Objek Setting Properti

385
Name = cmdKeluar, Caption = Keluar, Height —
24, Left = 216, Top = 144, Width = 60,
Accelerator = K, PicturePosition = 1 —
frmPicturePositionLeftCenter, Picture =
CommandButton Keluar.gif, Tablndex = 4
Name = cmdCetak, Caption = Cetak, Height = 24,
Left = 282, Top = 144, Width = 60, Accelerator =
C, PicturePosition = 1—
frmPicturePositionLeftCenter, Picture = Print.gif,
CommandButton Tablndex = 3
Name = frmOpsi, Caption = (kosong), Height =
Frame 30, Left = 6, Top = 36, Width = 168, Tablndex =

Name = frmTampilan, Caption = (kosong), Height


Frame = 30, Left = 180, Top = 36, Width = 162,
Tablndex = 1
Name = frmPengaturanOpsi, Caption =
Pengaturan Opsi, Height = 66, Left = 6, Top = 72,
Frame Width = 336, Enabled = False, Tablndex = 2
Name = optAllRecord, Caption = Seluruh Record,
Height = 18, Left = 6, Top = 6, Width = 72,
OptionButton Accelerator = S, Tablndex = 0, Value = True
Name = optOpsi, Caption = Pengaturan Opsi,
Height —- 18, Left = 84, Top = 6, Width = 81,
OptionButton Accelerator = O, Tablndex = 1, Value = False
Name = optAntara, Caption = Antara, Height =
OptionButton 18, Left = 144, Top = 12, Width = 42, Accelerator
= A, Tablndex = 2, Value = True
Name = optTanggal, Caption = Tanggal, Height =
18, Left = 186, Top = 12, Width = 45, Accelerator
OptionButton = T, Tablndex = 3, Value = False
Name = optSebelum, Caption = Sebelum, Height
= 18, Left = 234, Top = 12, Width = 51,
OptionButton Accelerator = b, Tablndex = 4, Value = False

386
Name = optSesudah, Caption = Sesudah, Height
= 18, Left = 282, Top = 12, Width = 48,
OptionButton Accelerator = d, Tablndex = 5, Value = False
Name = cmbTampilan, Height = 18, Left = 78,
Top = 6, Width = 78, style = 2
fmStyleDropDownList, Tablndex = 0, BackColor
=
ComboBox (abu-abu)
Name = cmbKode, Height = 18, Left = 72, Top =
36, Width = 66, Style = 2 - fmStyleDropDownList,
Tablndex = 1, BackC010r =
ComboBox (abuabu)
Name = cmbTangga11, Height = 18, Left = 144,
Top = 36, Width = 90, style = 2
fmStyleDropDownList, Tablndex = 6, BackColor
=
ComboBox (abu-abu)
Name = cmbTangga12, Height = 18, Left = 240,
Top = 36, Width = 90, style = 2
fmStyleDropDownList, Tablndex = 7, BackColor =
ComboBox (abu-abu)
Name = chkPiutang, Caption = Piutang, Height =
18, Left = 6, Top = 12, Width = 60, Accelerator =
CheckBox P, Tablndex = 0
Name = imgForm, Height = 24, Left = 6, Top =
6, Width = 24, Picture = Cetak.gif,
Image
PictureAlignment = 2 — frmPictureAlignmentCenter,
PictureSizeMode = 0 — frmPictureSizeModeCli
Name = lblForm, Caption = Cetak Penjualan,
Height = 24, Left = 30, Top = 6, Width = 312, Font
Label = (Font = Tahoma; Font style = Bold; Size =
16), BackC010r = (hijau muda),
Forecolor = (merah)
Name = lblTampilan, Caption = Tampilan
Label Laporan, Height = 12, Left = 6, Top = 12, Width =

387
66
Name = lblKode, Caption = Kode Pelanggan,
Label Height = 12, Left = 6, To = 42, Width = 60
4. Pilih menu yew > Code atau tekan F7 untuk menampilkan
window Code. Hapus kode Macro yang ditampilkan
kemudian ketikkan kode Macro sebagai berikut:
Private Sub UserForm_Activate( )

Set wsHdrPj1n = Sheets ( "


HeaderPenjua1an" )
cmbTampi1an . Addltem
Ringkasan " cmbTampi1an . Add
Item " Detail " cmbTampi1an .
Value = 't Ringkasan "

Set rgTangga1 = wsHdrPj1n . Range ( " B3


" wsHdrPj In . Range ("B3 " ) . End
( x1Down )
Terlama = Application.
WorksheetFunction. Min
( rgTangga1 )

Terbaru = Application.
WorksheetFunction. Max
( rgTangga1 )

For InputTangga1 = Terlama To Terbaru cmbTangga11.


Addltem Format ( InputTangga1 , "dd/mm/yyyy" )
cmbTangga12. Addltem Format ( InputTangga1 ,
"dd/mm/yyyy" )
Next InputTangga1

On Error Resume Next

Dim SelUser As Range Dim


NonDupUser As New
Collection

Dim SelKode As Range


Dim NonDupKode As New Collection

Set rgKode = wsHdrPj1n. Range( "D3 "


wsHdrPj1n . Range( "D3 " ) . End
( xlDown) )
cmbKode . Clear
For Each SelKode

388
NonDupKode . Add SelKode . Value CStr
( SelKode . Value ) Next SelKode

For Each Item-Kode In NonDupKode


cmbKode . Addltem ItemKode
Next Item-Kode

Set rgPiutang = wsHdrPj1n. Range( "13


wsHdrPj In . Range ( " 13 " ) .
End(x1Down) )
For Each Sel In rgPiutang
If Sel > O Then
chkPiutang. Enabled
= True Exit Sub
Else chkPiutang. Enabled
= False chkPiutang.
Value = False
End
If Next
Sel

End Sub

Private Sub optA11Record_C1ick( )

frmPengaturanOpsi . Enabled
= False optAntara . Value =
True cmbTangga11. Value =
cmbTangga12. Value =
cmbKode . Value =
chkPiutang . Value = False
End Sub

Private Sub optOpsi_C1ick( )


frmPengaturanOpsi . Enabled = True
End Sub

Private Sub cmbKode_Change ( )


Set wsHdrPj1n = Sheets ( " HeaderPenjua1an n
)
wsHdrPj1n . Range( "N3 " ) . Value = cmbKode . Value
End Sub

Private Sub optAntara_C1ick( )


cmbTangga11. Enabled = True
cmbTangga12 . Enabled = True
cmbTangga11. Value = cmbTangga12.
Value =

389
Sheets ( " HeaderPenjua1an" ) . Range ( " L3 : M3 " ) .
ClearContents
End Sub

Private Sub

optTangga1_C1ick( )
cmbTangga12. Enabled =
False cmbTangga11.
Value = cmbTangga12.
Value = -
Sheets ( " HeaderPenjua1an " ) . Range ( " L3 : M3 " ) .
ClearContents

End Sub

Private Sub optSebe1um_C1ick( )


cmbTangga12. Enabled =
False cmbTangga11.
Value = cmbTangga12.
Value =
Sheets ( n Headerpenjualan" ) . Range ( " L3 : M3 ) .
ClearContents
End Sub

Private Sub optSesudah_C1ick( )


cmbTangga12. Enabled =
False cmbTangga11.
Value = cmbTangga12.
Value =
Sheets ( n Headerpenjualan" ) . Range ( " L3 : M3 ) .
ClearContents
End Sub
Private Sub cmbTangga11_Change( )

Set wsHdrPj1n = Sheets ( " HeaderPenjua1an n


)
If cmbTangga11. Value = Then
wsHdrPj1n . Range( "L3 " ) .
ClearContents Exit Sub
End If

If optAntara . Value = True Then


wsHdrPj1n.Range( "L3 " ) . Value =
& Format ( cmbTangga11. Value , "mm/dd/yyyy" )

390
El self optTangga1. Value = True Then
wsHdrPj1n.Range( "L3 " ) . Value =
CDate ( cmbTangga11. Value )
El self optSebe1um. Value = True Then
wsHdrPj1n.Range( "L3 " ) . Value = n < n &
Format ( cmbTangga11. Value , "mm/dd/yyyy" )
El self optSesudah. Value = True Then
wsHdrPj1n.Range( "L3 " ) . Value = n > n &
Format ( cmbTangga11. Value , "mm/dd/yyyy" )
End If

End Sub

Private Sub
cmbTangga12_Change ( )

Set wsHdrPj1n = Sheets


( "HeaderPenjua1an " )
If cmbTangga12. Value = " ) .
wsHdrPj1n . Range( "M3 ClearContents
Else wsHdrPj1n.Range( "M3
" ) . Value =
& Format ( cmbTangga12. Value ,
"mm/dd/yyyy" ) End If

End Sub

Private Sub chkPiutang_C1ick( )

Set wsHdrPj1n = Sheets ( " HeaderPenjua1an n


)
If chkPiutang . Value = True Then
wsHdrPj1n . Range( "03 " ) .
Value
Else wsHdrPj1n . Range( "03 " ) .
ClearContents
End If

End Sub

Private Sub cmdCetak_C1ick( )

Set wsHdrPj1n = Sheets ( " HeaderPenjua1an n )


Set rgAdvFi1ter = wsHdrPj1n.Range( n K2 :03" )
wsHdrPj In. Range ( "DatabaseHeaderPenjua1an n ) .
AdvancedFi1ter
Action : =x1Fi1terInP1ace, CriteriaRange :
=rgAdvFi1ter
For Each CekSe1Tampi1 In
wsHdrPj1n.Range( "NoFakturHdrPj1n II )
If CekSe1Tampi1. EntireRow. Hidden = False
Then Call Laporan

391
Exit Sub
End If
Next CekSe1Tampi1

MsgBox "Tidak ada transaksi penjualan sesuai


kriteria" , vbOKOn1y + vblnformation, " Tidak Ada
Transaksi " optA11Record. Value = True

If wsHdrPj1n . FilterMode
Then wsHdrP j In.
ShowA11Data
End If

End Sub

Sub Laporan( )

Set wsHdrPj1n = Sheets ( "HeaderPenjua1an" )


Set wsDt1Pj1n = Sheets ( "Detail Penjualan" )
Set wsCetak = Sheets ( " Cetak" )
Set rgAdvF i 1 t er = wsDt1Pj1n. Range( "K 2 : K3 tI
)

wsCetak . Cells . Clear


wsCetak.C01umns( "A: A" ) .C01umnWidth = 10
wsCetak.Range( "Al") . Value
= "DATABASE PENJUALAN"
wsCetak.Range( "Al" ) .
Font . Bold =
wsCetak.Range( "Al" ) . Font. Size = 12
wsCetak.Rows( "2: 2" ) .RowHeight — wsCetak
. Range ( "A3 " ) . Font . Bold = True

If cmbTampi1an . Value = " Ringkasan n Then wsCetak .


Range( "Al : 11 " ) . HorizontalA1ignment =
xlCenter wsCetak . Range( "Al : 11 " ) . Merge
wsCetak. PageSetup . Orientation = xlLandscape
wsCetak. PageSetup . LeftMargin =
Application. CentimetersToPoints ( 1 .
5 ) wsCetak. PageSetup . RightMargin =
Application. CentimetersToPoints ( 1 .
5 ) wsCetak. PageSetup . TopMargin =
Application. CentimetersToPoints
( 2 ) wsCetak. PageSetup . BottomMargin =

Application. CentimetersToPoints ( 2 ) wsCetak.


PageSetup . Zoom = 90 wsCetak. PageSetup .
PrintTit1eRows wsCetak. PageSetup . PrintArea =
n
$A:$I 'I wsCetak . Range( "A3 " ) . Value " Cetak
Ringkasan

392
Transaksi " wsHdrPj1n .
Range( "A2 : 12 " ) .
Copy wsCetak .
Range( "A4 " ) .
PasteSpecia1
Paste : =x1PasteC01umnWidths wsHdrPj
In. Range ( "DatabaseHeaderPenjua1an "

SpecialCe11s (xlCe11TypeVisib1e ) . Copy


Destination : =wsCetak . Range ( n A4 )
El self cmbTampi1an. Value = " Detail n Then
wsCetak . Range( "Al : GI " ) .
HorizontalA1ignment = xlCenter wsCetak .
Range( "Al : GI " ) . Merge wsCetak. PageSetup .
Orientation = xlPortrait wsCetak. PageSetup .
LeftMargin =
Application. CentimetersToPoints ( 1 .
5 ) wsCetak. PageSetup . RightMargin =
Application. CentimetersToPoints ( 1 .
5 ) wsCetak. PageSetup . TopMargin =
Application. CentimetersToPoints
( 2 ) wsCetak. PageSetup . BottomMargin =

Application. CentimetersToPoints ( 2 )
wsCetak. PageSetup . Zoom = 90 wsCetak. PageSetup
. PrintArea = n $A: $G 'I wsCetak . Range( "A3 " )
. Value = " Cetak : Detail Transaksi "

Set Jum1ahSe11 = wsHdrPj1n. Range( "NoFakturHdrPj1n"


) . SpecialCe11s ( xlCe1 ITypeVi sible )
For Each ItemSe1 In Jum1ahSe11 wsDt1Pj1n.
Range( "K3" ) . Value = ItemSe1. Value
wsDt1Pj1n . Range
( "DatabaseDetai1Penjua1an" ) .
AdvancedFi1ter Action:
=x1Fi1terInP1ace ,

CriteriaRange : =wsDt1Pj1n . Range ( "K2 :


K3 " )
RecordAkhir = wsCetak. Cells (Rows .
Count, "A" ) .

End(x1Up) . Offset ( 0 , 0 ) . Row


wsCetak. Cells (RecordAkhir + 2, 1) .
Value =

"No Faktur
wsCetak. Cells (RecordAkhir + 3, 1) .
Value = n Tanggal : & ItemSe1.Offset(O,

393
1) . Value wsCetak. Cells (RecordAkhir +
4, 1 ) . Value =

Jatuh Tempo & ItemSe1. Offset (O, 2) .


Value wsCetak . Cells ( RecordAkhir
Value =

Kode Pelanggan ItemSe1. Offset (O, 3) .


Value wsCetak . Cells ( RecordAkhir 6 , 1 ) .
Value = "No Item " wsCetak . Cells
( RecordAkhir 6 , 2) . Value = " Kode "
wsCetak . Cells ( RecordAkhir 6 , 3 ) . Value
= "Nama Barang " wsCetak . Cells ( RecordAkhir
6 , 4 ) . Value = "Jumlah " wsCetak . Cells (
RecordAkhir 6 , 5 ) . Value = "Diskon "
wsCetak . Cells ( RecordAkhir 6 , 6 ) . Value
= " Harga " wsCetak . Cells ( RecordAkhir 6 ,
7 ) . Value = "Total wsCetak . Columns ( "B :
B" ) . ColumnWidth = 10 wsCetak . Columns
( "C : C " ) . ColumnWidth = 20 wsCetak .
Columns ( "D : D" ) . ColumnWidth wsCetak .
Columns ( "E : E " ) . ColumnWidth wsCetak .
Columns ( " F : F" ) . ColumnWidth = 12 wsCetak
. Columns ( "G ) . ColumnWidth = 14
For HdrTb1Atas To 7 wsCetak. Cells
(RecordAkhir + 6 , HdrTb1Atas) .
HorizontalA1ignment = xlCenter
wsCetak. Cells (RecordAkhir + 6 ,
HdrTb1Atas) .
Borders ( xlEdgeTop ) . LineSty1e =
xlContinuous wsCetak. Cells (RecordAkhir + 6
, HdrTb1Atas) .
Borders ( xlEdgeBottom) . LineSty1e = xlDoub1e
Next HdrTb1Atas

Set Jum1ahSe12 = Range( "NoFakturDt1Pj1n" ) .


SpecialCe11s ( xlCe1 ITypeVisib1e )
For Each ItemSe12 In Jum1ahSe12
RecordAkhir2 = wsCetak. Cells (Rows .
Count ,
End(x1Up) . Offset ( O , O ) . Row
wsCetak. Cells (RecordAkhir2 + 1 ,
1 ) . Value =

ItemSe12. Offset ( O , 1 ) .
Value wsCetak. Cells (RecordAkhir2
+ 1 , 1 ) .
HorizontalA1ignment = xlCenter
wsCetak. Cells (RecordAkhir2 + 1 ,
2 ) . Value = ItemSe12. Offset ( O ,

394
2 ) . Value wsCetak. Cells
(RecordAkhir2 + 1 , 3 ) . Value =
ItemSe12. Offset ( O , 3 ) . Value
wsCetak. Cells (RecordAkhir2 + 1 ,
4 ) . Value = ItemSe12. Offset ( O ,
4 ) . Value wsCetak.Ce11s (RecordAkhir2
A- 1 , 5 ) . Value = ItemSe12. Offset
( 0 , 6 ) . Value wsCetak. Cells
(RecordAkhir2 + 1 , 6 ) . Value =

ItemSe12 . Offset ( 0 , 7 ) .
Value wsCetak. Cells (RecordAkhir2
+ 1 , 6 ) .
Number Format = wsCetak.
Cells (RecordAkhir2 + 1 , 7 ) . Value =

ItemSe12 . Offset ( 0 , 8 ) .
Value wsCetak. Cells (RecordAkhir2
+ 1 ,
7 ) .

NumberFormat —
Next ItemSe12

RecordAkhir3 = wsCetak. Cells (Rows . Count ,

End(x1Up) . Offset ( O , O ) . 2 ) . Value =


Row wsCetak. Cells (RecordAkhir3 +
1 ,
Grand Total " wsCetak. Cells 2 ) . NumberFormat =
(RecordAkhir3 + 1 , ItemSe1. Offset (
O , 4) . Value wsCetak. Cells
(RecordAkhir3 + 1 ,
1 ) .
Value =
wsCetak. Cells (RecordAkhir3 + 2 ,
"Diskon ( % ) " wsCetak. Cells
(RecordAkhir3 + 2 , ItemSe1. Offset (
O , 5 ) . Value wsCetak. Cells 2 ) .
(RecordAkhir3 + 2 , Value =

wsCetak. Cells (RecordAkhir3 + 3,


wsCetak. Cells (RecordAkhir3 + 3, 2 ) . NumberFormat =
ItemSe1. Offset ( O , 6 ) . Value
wsCetak . Cells ( RecordAkhir3 + 3 ,
1 ) . Value =
wsCetak . Cells ( RecordAkhir3 + 4 , "Total
wsCetak . Cells ( RecordAkhir3 + 4 , 2 ) . Value =
1 ) . Value =

395
2 ) . NumberFormat = 1 ) . Value =
" Bayar "
2 ) . Value =

ItemSe1 . Offset ( 0 , 7 ) . Value wsCetak .


Cells (RecordAkhir3 + 4, 2 ) . NumberFormat =

wsCetak . Cells (RecordAkhir3 + 5," Piutang "


wsCetak . Cells (RecordAkhir3 + 5, 2) . Value
ItemSe1 . Offset ( 0 , 8 ) . Value wsCetak . Cells
(RecordAkhir3 + 5, 2 ) . NumberFormat —

For AkhirBorder1 = 1 To 7 wsCetak. Cells


(RecordAkhir3 + 1, AkhirBorder1 ) .
Borders ( xlEdgeTop) . LineSty1e — xlContinuous
Next AkhirBorder1

For AkhirBorder2 = 1 To 2 wsCetak . Cells


(RecordAkhir3 + 2, AkhirBorder2) . Borders
(xlEdgeBottom) . LineSty1e — xlContinuous
wsCetak . Cells (RecordAkhir3 + 5,
AkhirBorder2) . Borders (xlEdgeBottom) .
LineSty1e — xlContinuous
Next AkhirBorder2

Next ItemSeI

End If
wsCetak. PrintOut Copies :=1, Collate. • ——True

If wsHdrPj1n .
FilterMode Then
wsHdrPj In .
ShowA11Data
End If

If wsDt1Pj1n. FilterMode Then


wsDt1Pj In . ShowA11 Data
End If

wsHdrPj1n . Range ( "L3 : Q3 " ) .


ClearContents wsDt1Pj1n . Range ( "K 3 ) .
ClearContents

End Sub

396
UTAMA APLIKASI
Private Sub cmdKe1uar_C1ick( )

Unload Me

End Sub

MEMBUAT TAMPILAN
Tampilan utama aplikasi digunakan sebagai tempat penampung
kontrol (tombol) untuk menjalankan form dalam aplikasi.
Tampilan utama tidak dibuat menggunakan OserForm,
melainkan worksheet. Keuntungan tampilan utama pada
worksheet adalah Anda dapat bekerja dengan lebih dari satu
workbook dalam waktu bersamaan. Ketika Anda menggunakan
Aplikasi Penjualan, Anda dapat membuka workbook yang lain
dalam waktu bersamaan. Secara garis besar tombol
dikelompokkan menjadi dua kelompok yaitu Database dan Fitur.

5.1 Desain Tampilan Utama Aplikasi


Desain tampilan utama yang dibahas dalam buku ini sifatnya
tidaklah baku. Anda dapat mendesain tampilan utama dengan
model sesuai keinginan Anda. Penulis menggunakan resolusi
monitor 1024 x 768. Jika Anda menggunakan resolusi monitor
yang berbeda, Anda dapat menyesuaikan tampilan utama
dengan cara mengubah ukuran kontrol serta ukuran baris dan
kolom dalam worksheet.
1. Buka file Aplikasi Penjualan.xlsm hasil latihan Bab 4, atau
dapat Anda download di www.solusi-kantor.com

397
2. Pilih worksheet Menuatama. Klik kotak di sebelah pojok kiri
atas perpotongan baris dan kolom untuk menyeleksi
seluruh sel. Klik tombol Format dalam tab Home group Cells
kemudian pilih menu Format Cells... Muncul kotak dialog
Format Cells.
c
1
2

Gambar 5.1 Klik perpotongan baris dan kolom.

3. Pilih tab Fill. Pada daftar pilihan Background Color: pilih


warna abuabu kemudian klik tombol OK.

Gambar 5.2 Pengaturan warna background sel.

4. Blok range Al:C1. Klik tombol Format dalam tab Home


group Cells kemudian pilih menu Column Width... Muncul
kotak dialog Column Width. Pada kotak isian Column
width: ketikkan 2. Klik tombol OK.
5. Blok range DI :FI. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Column Width... Muncul

398
kotak dialog Column Width. Pada kotak isian Column
width: ketikkan 21. Klik tombol OK.
6. Blok range Gl :ll. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Column Width... Muncul
kotak dialog Column Width. Pada kotak isian Column
width: ketikkan 2. Klik tombol OK.

Calumn Width

2
Column width:

Gambar 5.3 Kotak dialog Column Width.

7. Blok range B2:H18. Klik tombol Format dalam tab Home


group
Cells kemudian pilih menu Format Cells... Muncul kotak
dialog Format Cells. Pilih tab Fill. Pada daftar pilihan
Background Color: pilih warna merah kecoklatan kemudian
klik tombol OK.
8. Atur background warna merah muda pada range C3:G7,
CIO:GI 1 dan C14:G17 dengan cara yang sama seperti pada
langkah 7.
9. Blok range D4:F6. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul
kotak dialog Format Cells.
o Pilih tab Alignment. Pilih Center pada kotak pilihan
Horizontal: dan yertical: Ontuk menggabungkan range
yang diseleksi, beri tanda contreng pada pilihan Merge
cells.

399
Gambar 5.4 Menggabungkan range dan perataan teks.

o Pilih tab Font. Pada daftar pilihan Eont: pilih Calibri


(Body). Pada daftar pilihan Font style: pilih Bold.
Ketikkan 26 pada kotak isian Size: Pada kotak pilihan
Color: pilih warna merah kemudian klik tombol OK.

Gambar 5.5 Format font pada teks.

400
o Ontuk menampilkan nama aplikasi, ketikan APLIKASI
PENJ(..IALAN pada range hasil penggabungan (D4:F6).
10. Blok range C8:G9. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul
kotak dialog Format Cells.
o Pilih tab Alignment. Pilih Center pada kotak pilihan
Horizontal: dan yertical: Ontuk menggabungkan range
yang diseleksi, beri tanda contreng pada pilihan Merge
cells.
o Pilih tab Font. Pada daftar pilihan Eont: pilih Calibri
(Body). Pada daftar pilihan Fent style: pilih Bold.
Ketikkan 20 pada kotak isian Size: Pada kotak pilihan
Color: pilih warna merah muda kemudian klik tombol
OK.
o Ketikkan DATABASE pada range hasil penggabungan
(C8:G9).
11. Blok range C12:G13. Klik tombol Format dalam tab Home
group Cells kemudian pilih menu Format Cells... Muncul
kotak dialog Format Cells.
Pilih tab Alignment. Pilih Center pada kotak pilihan
Horizontal: dan yertical: Ontuk menggabungkan range
yang diseleksi, beri tanda contreng pada pilihan Merge
cells.
Pilih tab Font. Pada daftar pilihan Eont: pilih Calibri
(Body). Pada daftar pilihan Font style: pilih Bold.
Ketikkan 20 pada kotak isian Size: Pada kotak pilihan
Color: pilih warna merah muda kemudian klik tombol
OK.
Ketikkan FIT(.IR pada range hasil penggabungan
(C12:G13).

.ÅP•UKAS4

401
Gambar 5.6 Hasil desain tampilan utama aplikasi.

5.2 Menambahkan Macro


Agar lebih interaktif, kita perlu menambahkan Macro untuk
menjalankan Form dalam aplikasi. Macro dikaitkan dengan
kontrol (tombol) sehingga dapat mempermudah untuk
menampilkan Form.
1. Tekan kombinasi tombol Alt+F11 untuk menampilkan Visual
Basic Editor.
2. Pilih menu utama Insert > Module untuk membuat modul
baru. Ketikkan kode Macro sebagai berikut:
' Macro untuk menampilkan Form Barang
Sub LoadFormBarang( )
Mengaktifkan Form Barang
oad formBaran
Menampilkan Form Barang
formBarang . Show
End Sub

Macro untuk menampilkan Form Pemasok


Sub LoadFormPemasok( )
Mengaktifkan Form Pemasok

402
Load formPemasok
Menampilkan Form
Pemasok f ormPemasok
. Show
End Sub

Macro untuk menampilkan Form Pelanggan


Sub LoadFormPe1anggan( )
Mengaktifkan Form Pelanggan
Load formPe1anggan
Menampilkan Form
Pelanggan f
ormPe1anggan . Show

End Sub
Macro untuk
menampilkan Form ( )
Transaksi
Pembelian Sub Transaksi Pembelian

Transaksi Pembelian
. Show

LoadFormTransaksiBe1i

Mengaktifkan Form
Load
formTransaksiBe1i
Menampilkan Form
formTransaksiBe1i

End Sub

Macro untuk menampilkan Form Transaksi Penjualan


Sub LoadFormTransaksiJua1 ( )
Mengaktifkan Form Transaksi Penjualan
Load formTransaksiJua1
Menampilkan Form Transaksi
Penjualan formTransaksiJua1.
Show

End Sub

Macro untuk menampilkan Form Kasi r


Sub LoadFormKasir( )
Mengaktifkan Form Kasi r
Load form-Kasi r
Menampilkan Form

403
Kasi r form-Kasi r
. Show
End Sub
' Macro untuk menampxlkan Form Pembayaran Hutang
Sub LoadFormHutang( )

'
o
Mengaktifkan Form Hutang
Pembayaran Load formHutang 0
' Menampilkan Form Hutang
Pembayaran f ormHutang .
Show

End Sub
Penerimaan Piutang
' Macro untuk menampilkan
Form Sub LoadFormPiutang( )
Piutang
I
' Mengaktifkan Form
Piutang
Penerimaan
Load formPiutang '
Menampilkan Form
Penerimaan
formPiutang . Show Cetak
End Sub

Macro untuk menampilkan


Form
Sub LoadFormCetak( )
' Mengaktifkan Form Cetak
Load formCetak '
Menampilkan Form Cetak
formCetak . Show

End Sub

5.3 Menambahkan Tombol Kelompok


Database
Seluruh tombol (kontrol) yang digunakan dalam tampilan utama
aplikasi adalah Rounded Rectangle (Shapes). Walaupun desain
tampilan utama sifatnya tidak baku, seluruh kontrol harus tetap
tersedia dalam aplikasi. Penempatan kontrol dapat Anda atur

404
sesuai keinginan. Dalam kelompok Database, kontrol yang
ditambahkan ialah Barang, Pemasok dan Pelanggan.
1. Kembali ke tampilan utama Excel. Klik tombol Shapes dalam
tab Insert group Illustrations. Pilih Rounded Rectangle.

Gambar 5.7 Menambahkan Rounded Rectangle.

2. Klik mouse dalam area worksheet untuk menambahkan


Rounded Rectangle ke dalam worksheet.
3. Klik kanan tombol kemudian pilih menu Fermat Shape...
Muncul kotak dialog Format Shape.

Gambar 5.8 Mengatur ukuran tombol.

4. Pilih opsi Size pada daftar pilihan sebelah kiri untuk


mengatur ukuran tombol. Ketikkan O, 7 pada kotak isian
Height: dan 4 pada kotak isian Width:

405
5. Ontuk mengatur properti tombol pilih opsi Properties pada
daftar pilihan sebelah kiri. Pilih opsi Don't move or size with
cells agar tombol tidak ikut berpindah dan tidak berubah
ukurannya ketika ada perubahan range yang ditempati.
Hilangkan tanda contreng pada pilihan print object. Beri
tanda contreng pada pilihan Locked
dan Lock text. Klik tombol Close. Pengaturan Locked dan
Lock text hanya berlaku apabila worksheet terproteksi.

Gambar 5.9 Mengatur properti tombol.

6. Klik kanan tombol kemudian pilih menu Edit Text. Ketikkan


Barang untuk menambahkan teks tombol. Blok teks
kemudian klik tombol Bold • dalam tab Home group Font.
Klik tombol Middle Align dan Center dalam tab Home group
Alignment.
7. Atur posisi tombol menggunakan mouse hingga terlihat
seperti pada Gambar 5.10.

406
Gambar 5.10 Mengatur posisi tombol Barang.

8. Ontuk mengaitkan tombol dengan Macro, klik kanan


tombol kemudian pilih menu Assign Macro...

AP

Barang
Gambar 5.11 Mengaitkan tombol dengan Macro.

9. Muncul kotak dialog Assign Macro. Pilih Macro


LoadFormBarang kemudian klik tombol OK. Tombol Barang
yang dikaitkan dengan Macro akan menampilkan Form
Barang jika di-klik.

407
Gambar 5.12 Kotak dialog Assign Macro.

10. Tambahkan tombol Pemasok dan Pelanggan dengan cara


yang sama seperti pada langkah 1 sampai 9.

Teks Macro Perintah


Pemasok LoadFormPemasok Menampilkan Form Pemasok
Pelanggan LoadFormPelanggan Menampilkan Form Pelanggan
11. Atur posisi masing-masing tombol kelompok Database
menggunakan mouse hingga terlihat seperti pada Gambar
5.13.

408
Gambar 5.13 Mengatur posisi tombol kelompok Database.

5.4 Menambahkan Tombol Kelompok


Fitur
Sama halnya dengan tombol kelompok Database, tombol
kelompok Fitur juga dibuat menggunakan Rounded Rectangle
(Shapes). Tombol dalam kelompok Fitur ialah Pembelian,
Penjualan, Kasir, Pembayaran Hutang, Penerimaan Piutang dan
Cetak.
1. Klik tombol Shapes dalam tab Insert group Illustrations. Pilih
Rounded Rectangle.
2. Klik mouse dalam area worksheet untuk menambahkan
Rounded Rectangle ke dalam worksheet.
3. Klik kanan tombol kemudian pilih menu Fermat Shape...
Muncul kotak dialog Format Shape.
4. Pilih opsi Size pada daftar pilihan sebelah kiri untuk
mengatur ukuran tombol. Ketikkan O, 7 pada kotak isian
Height: dan 4 pada kotak isian Width:
5. dntuk mengatur properti tombol pilih opsi Properties pada
daftar pilihan sebelah kiri. Pilih opsi Don't move or size with
cells agar tombol tidak ikut berpindah dan tidak berubah
ukurannya ketika ada perubahan range yang ditempati.
Hilangkan tanda contreng pada pilihan print object. Beri
tanda contreng pada pilihan Locked dan Lock text. Klik
tombol Close. Pengaturan Locked dan Lock text hanya
berlaku apabila worksheet terproteksi.
6. Klik kanan tombol kemudian pilih menu Edit Text. Ketikkan
Pembelian untuk menambahkan teks tombol. Blok teks
kemudian klik tombol Bold dalam tab Home group Font. Klik
tombol Middle Align dan Center • dalam tab Home group
Alignment.

409
7. Atur posisi tombol menggunakan mouse hingga terlihat
seperti pada Gambar 5.14.

Gambar 5.14 Mengatur posisi tombol Pembelian.

8. dntuk mengaitkan tombol dengan Macro, klik kanan tombol


kemudian pilih menu Assign Macro... Muncul kotak dialog
Assign Macro. Pilih Macro LoadFormTransaksiBeli kemudian
klik tombol OK. Tombol Pembelian yang dikaitkan dengan
Macro akan menampilkan Form Transaksi Pembelian jika di-
klik.
9. Tambahkan tombol Penjualan, Kasir, Pembayaran Hutang,
Penerimaan Piutang dan Cetak dengan cara yang sama
seperti pada langkah 1 sampai 8.
Teks Macro Perintah
Penjualan LoadFormTransaksiJual Menampilkan Form
Transaksi Penjualan
Kasir LoadFormKasir Menampilkan Form
Kasir
Pembayaran LoadFormHutang Menampilkan Form
Hutang Pembayaran Hutang
Penerimaan LoadFormPiutang Menampilkan Form
Piutang Penerimaan Piutang
Cetak LoadFormCetak Menampilkan Form
Cetak

410
10. Atur posisi masing-masing tombol kelompok Fitur
menggunakan mouse hingga terlihat seperti pada Gambar
5.15.

Gambar 5.15 Mengatur posisi tombol kelompok Fitur.

11. dntuk menyembunyikan kolom yang tidak masuk dalam


area tampilan aplikasi penjualan, blok kolom J:XFD. Klik
tombol Format dalam tab Home group Cells. Pilih menu
Hide E, dnhide > Hide Columns.
12. dntuk menyembunyikan baris yang tidak masuk dalam area
tampilan aplikasi penjualan, blok baris 20: 1048576. Klik
tombol Format dalam tab Home group Cells. Pilih menu
Hide E, dnhide > Hide Rows.

411
Gambar 5.16 Menyembunyikan kolom dan baris.

5.5 Proteksi Aplikasi Penjualan


Aplikasi Penjualan yang sudah Anda buat sebaiknya Anda
proteksi agar tidak diubah pengguna lain yang tidak bertanggung
jawab. Jika aplikasi diubah (walaupun hanya dari segi tampilan),
pengguna yang sudah terbiasa dengan tampilan asli biasanya
akan merasa kebingungan. Kejadian lebih parah bisa terjadi jika
yang diubah adalah objek atau kode Macro dalam aplikasi.
Proteksi yang diperlukan meliputi proteksi worksheet dan
proteksi Macro.

5.5.1 Proteksi Worksheet


Proteksi worksheet dilakukan untuk menghindari pengguna lain
yang berusaha mengubah kontrol, menghapus kontrol atau
mengubah pengaturan worksheet.
1. dntuk memproteksi worksheet, pastikan worksheet
Menudtama dalam keadaan terpilih. Klik tombol Protect
Sheet dalam tab Review grup Changes. Muncul kotak dialog
Protect Sheet.
2. Pada kotak isian password to unprotect sheet: ketikkan
password untuk membuka proteksi, misalnya ElexMedia.
3. Beri tanda contreng pada pilihan Protect worksheet and
contents of locked cells. Pada pilihan Allow all users of this
worksheet to: hilangkan tanda contreng pada semua pilihan
yang tersedia.

412
Gambar 5.17 Kotak dialog Protect Sheet.

4. Klik tombol OK. Muncul kotak dialog Confirm Password.


Ketikkan password yang sama (ElexMedia) pada kotak isian
yang tersedia kemudian klik tombol OK.

Gambar 5.18 Kotak dialog Confirm Password.

5. Apabila suatu saat Anda akan melakukan modifikasi


terhadap worksheet, klik tombol dnprotect Sheet dalam tab
Review grup Changes. Muncul kotak dialog Onprotect
Sheet.

413
Gambar 5.19 Kotak dialog Unprotect Sheet.

6. Masukkan password yang Anda isikan saat memproteksi


worksheet (ElexMedia) pada kotak isian password: Klik
tombol OK.

5.5.2 Proteksi Macro


Proteksi Macro dilakukan untuk menghindari pengguna lain yang
berusaha melihat atau melakukan modifikasi terhadap kode
Macro atau objek Macro dalam aplikasi.
1. Tekan Alt+F11 atau klik tombol Visual Basic dalam tab
Developer group Code untuk membuka Visual Basic Editor.
2. dntuk memproteksi Macro pilih VBAProject(Aplikasi
Penjualan.xlsm) pada Project Explorer. Pilih menu
utama 1001s > VBAProject Properties... Muncul kotak
dialog Project Properties.

414
Gambar 5.20 Kotak dialog VBAProject - Project Properties.

3. Pilih tab Protection. Beri tanda contreng pada pilihan Lock


project for yiewing. Ketikkan password pada kotak isian
password, misalnya ElexMedia. Pada kotak isian Confirm
password ketikkan password yang sama. Klik tombol OK.
4. Apabila suatu saat Anda akan melakukan modifikasi
terhadap kode atau objek Macro, pilih menu utama 1001s >
VBAProject Properties... Muncul kotak dialog VBAProject
Password.
VBAProject Password

Cancel

Password

Gambar 5.21 Kotak dialog VBAProject Password.

5. Masukkan password yang Anda isikan saat memproteksi


Macro (ElexMedia) pada kotak isian Password. Klik tombol
OK.

415
356

PENGGUNAAN APLIKASI
PENJUALAN

Penggunaan aplikasi penjualan relatif mudah karena tampilannya


yang user friendly. Penulis sengaja menambahkan ikon gambar untuk
mewakili arti tombol-tombol tertentu, dengan harapan agar
pengguna dapat langsung mengetahui apa kegunaan tombol
tersebut. Hampir setiap tombol dalam form aplikasi juga diberi garis
bawah pada huruf tertentu (properti Accelerator) sehingga Anda
dapat mengeksekusi tombol tersebut menggunakan kombinasi
tombol Alt dan huruf yang di garis bawah. Misalnya, tombol Hapus
dapat Anda jalankan dengan shortcut Alt+H.

6.1 Menggunakan Form Barang


Bagi Anda yang sudah terbiasa menggunakan Data Form Excel tentu
tidak akan kesulitan ketika menggunakan Form Barang karena form
ini mempunyai fungsi hampir sama dengan Data Form. Pengelolaan
database meliputi penambahan record data barang baru, mengedit
atau menghapus record data barang yang sudah ada serta melakukan
pencarian record data barang.

6.1.1 Input Data Barang


Ketika memasukkan record data barang ke dalam database, field stok
akan terisi O. Jumlah stok secara otomatis akan mengalami
perubahan jika ada pembelian atau penjualan barang. Stok barang
akan bertambah jika ada pembelian dan akan berkurang jika ada
penjualan.
1. Buka file Aplikasi Penjualan.xlsm hasil latihan Bab 5, atau dapat
Anda download di www.solusi-kantor.com
2. Pilih worksheet Menu0tama. Klik tombol Barang untuk
menampilkan Form Barang. Karena database barang belum diisi
(kosong), muncul kotak pesan Database Barang Kosong. Klik
tombol OK.
Database Barang Kosong

Tidak ada data dalam database barang

OK

Gambar 6.1 Kotak pesan Database Barang Kosong.

3. Ontuk memasukkan record data ke dalam database barang,


lakukan langkah-langkah sebagai berikut:
0 Ketikkan ADPTR USB pada kotak isian Kode Barang.
Ketikkan Adaptor (ISB lengkap pada kotak isian Nama Barang.
Ketikkan (Init pada kotak isian Satuan.
Pilih Produk Laku pada kotak pilihan Status.
o Ketikkan 36000 pada kotak isian Harga Beli.
o Ketikkan 40000 pada kotak isian Harga Jual.
o Ketikkan O pada kotak isian Diskon.
Ketikkan 5 pada kotak isian Stok Min.

417
Gambar 6.2 Record data barang yang akan dimasukkan.

4. Klik tombol Tambah. Form Barang kemudian akan menampilkan


record data yang sudah dimasukkan. Label record data juga akan
menunjukkan record data yang aktif dari seluruh record data
yang ada dalam database barang.

418
Gambar 6.3 Record data
barang sudah ditambahkan.

5. Dengan cara yang sama, penulis memasukkan record barang lain


sehingga database barang total mempunyai 64 record data (lihat
keterangan label record data dalam Form Barang).

Gambar 6.4 Record terpilih dari seluruh record database.

6. Klik tombol scroll bar di sebelah kiri untuk menampilkan data


sebelum record terpilih. Klik tombol scroll bar di sebelah kanan
untuk menampilkan data sesudah record terpilih.
7. dntuk menampilkan record data pertama, klik tombol Awal yang
terletak di sebelah kiri scroll bar. Klik tombol Akhir yang terletak
di sebelah kanan scroll bar untuk menampilkan record data
terakhir.
8. dntuk menampilkan nomor record data tertentu, ketikkan
nomor record data yang akan ditampilkan pada kotak isian No
Record. Detail barang dengan nomor record yang Anda

419
masukkan kemudian ditampilkan. Jika nomor record tidak ada,
muncul kotak pesan peringatan.

Gambar 6.5 No record tidak ada.

9. Ontuk mengurutkan nama barang secara ascending (dari A ke Z)


klik tombol Sort Ascending ••l . Klik tombol Sort Descending
untuk mengurutkan nama barang secara descending (dari Z ke
A).

6.1.2 Pencarian Barang


Jika record data yang sudah dimasukkan ke dalam database sudah
sangat banyak, maka penggunaan scroll bar untuk menyeleksi record
data menjadi kurang efektif. antuk mengatasi hal tersebut, Anda
dapat melakukan pencarian barang dengan memasukkan kata kunci
kode atau nama barang.
1. Ketikkan kata kunci kode barang pada kotak isian Kode Barang,
misalnya ketikkan HD. Klik tombol Cari Kode Barang yang
terletak di sebelah kanan kotak isian Kode Barang. Barang yang
mempunyai kode HD akan ditampilkan dalam daftar di bagian
bawah Form Barang.
2. Ontuk menampilkan informasi barang secara detail, klik barang
hasil pencarian dalam daftar.

420
Gambar 6.6 Pencarian dengan kata kunci kode barang.

3. (-lntuk melakukan pencarian barang berdasarkan kata kunci nama


barang, ketikkan kata kunci nama barang pada kotak isian Nama
Barang. Misalnya, ketikkan Modem kemudian klik tombol Cari
Nama Barang yang terletak di sebelah kanan kotak isian Nama
Barang. Hasil pencarian barang yang mempunyai nama modem
akan ditampilkan dalam daftar di bagian bawah Form Barang.
4. Klik barang hasil pencarian dalam daftar untuk menampilkan
informasi barang secara detail. Jika pencarian barang sudah
selesai, klik tombol Tutup.

421
Gambar 6.7 Pencarian dengan kata kunci nama barang.

6.1.3 Edit dan Hapus Record Data


Record data yang sudah Anda masukkan ke dalam database suatu
saat mungkin mengalami perubahan, misalnya barang mengalami
perubahan harga beli atau harga jual. Anda perlu mengedit record
data untuk melakukan penyesuaian dengan kondisi saat ini. Selain
edit record data, Anda juga dapat menghapus record data jika ada
barang yang sudah tidak dijual lagi. Namun demikian, record barang
yang sudah dimasukkan dalam transaksi pembelian atau transaksi
penjualan tidak dapat dihapus.
1. antuk mengedit record data, pilih record data yang akan diedit
menggunakan scroll bar, tombol Awal, tombol Akhir atau kotak
isian No Record. antuk menyeleksi record data dengan cepat,

422
gunakan fitur
pencarian barang.
2. Setelah dipilih, lakukan penyesuaian data barang kemudian klik
tombol Edit. Muncul kotak pesan Edit Data.

Gambar 6.8 Kotak pesan Edit Data.

3. Kotak pesan tersebut memberikan informasi bahwa record data


yang dipilih akan diedit. Klik tombol OK untuk melanjutkan. Klik
tombol Cancel untuk membatalkan edit record data.
4. Ontuk menghapus record data, pilih record data yang akan
dihapus kemudian klik tombol Hapus. Muncul kotak pesan Hapus
Data.

Gambar 6.9 Kotak pesan Hapus Data.

5. Kotak pesan tersebut memberikan informasi bahwa record data


yang dipilih akan dihapus. Klik tombol OK untuk melanjutkan.
Ontuk membatalkan hapus record data, klik tombol Cancel.
6. Klik tombol Keluar untuk keluar dari Form Barang.

6.2 Menggunakan Form Pemasok

423
Penggunaan Form Pemasok pada prinsipnya sama dengan Form
Barang. Kita dapat menambah record data pemasok baru, mengedit
atau menghapus record data pemasok yang sudah ada serta
melakukan pencarian record data pemasok.

424
6.2.1 Input Data Pemasok
Ketika memasukkan record data pemasok ke dalam database, field
hutang pada awalnya akan terisi 0. Data hutang secara otomatis akan
bertambah jika ada kekurangan pembayaran dalam transaksi
pembelian. Hutang akan berkurang apabila ada transaksi pembayaran
hutang. Daftar pemasok yang akan dimasukkan ke dalam database
dapat dilihat pada tabel berikut:
Kode
Kode Nama Alamat Kontak Telp/HP
Pos
BMOOI CV Berlian JI. Kampus No 51324 Nurul 0281925914
Mas 841
MAOOI CV JI. Pramuka No 51234 Eko 0281912541
Makmur 514
Abadi
AJOOI PT Agung JI. Jenderal 54321 Syahrul 0281942154
Jaya Soedirman No
761
GSOOI PD Gunung JI. Gunung 53412 Sigit 0281936842
Slamet Slamet No 479
MA002 PT JI. HR Bunyamin 52413 Eti 0281932592
Makmur No 912
Alami
Seluruh pemasok berdomisili di kota Purwokerto. Berikut
langkahlangkah input record data pemasok ke dalam database:
1. Klik tombol Pemasok untuk menampilkan Form Pemasok. Karena
database pemasok belum diisi (kosong), muncul kotak pesan
Database Pemasok Kosong. Klik tombol OK.

425
Gambar 6. IO Kotak pesan Database Pemasok Kosong.

2. dntuk memasukkan record data ke dalam database pemasok,


lakukan langkah-langkah sebagai berikut:
o Ketikkan BMOOI pada kotak isian Kode Pemasok.
Ketikkan CV Berlian Mas pada kotak isian Nama Pemasok.
o Ketikkan Jl. Kampus No 841 pada kotak isian Alamat.
o Ketikkan Purwokerto pada kotak isian Kota.
o Ketikkan 51324 pada kotak isian Kode Pos.
o Ketikkan Nurul pada kotak isian Kontak.
Ketikkan 0281912541 pada kotak isian Telepon/HP.

Gambar 6.11 Record data pemasok yang akan dimasukkan.

3. Klik tombol Tambah. Form Pemasok kemudian menampilkan


record data yang sudah dimasukkan.

426
Gambar 6.12 Record data pemasok sudah ditambahkan.

4. Dengan cara yang sama, masukkan seluruh data pemasok yang


ada dalam tabel sehingga database pemasok total mempunyai 5
record data (lihat keterangan label record data dalam Form
Pemasok).

Gambar 6.13 Record pemasok terpilih.

5. Klik tombol scroll bar di sebelah kiri untuk menampilkan data


pemasok sebelum record terpilih. Klik tombol scroll bar di

427
sebelah kanan untuk menampilkan data pemasok sesudah record
terpilih.
6. dntuk menampilkan record data pertama, klik tombol Awal yang
terletak di sebelah kiri scroll bar. Klik tombol Akhir yang terletak
di sebelah kanan scroll bar untuk menampilkan record data
terakhir.
7. dntuk menampilkan nomor record data tertentu, ketikkan
nomor record data yang akan ditampilkan pada kotak isian yang
terletak di sebelah kanan scroll bar. Detail pemasok dengan
nomor record yang Anda masukkan kemudian ditampilkan. Jika
nomor record tidak ada, muncul kotak pesan peringatan.
8. dntuk mengurutkan nama pemasok secara ascending klik tombol
Sort Ascending . Klik tombol Sort Descending untuk
mengurutkan nama pemasok secara descending.

6.2.2 Pencarian Pemasok


Anda juga dapat melakukan pencarian record data pemasok
menggunakan kata kunci kode pemasok atau nama pemasok. Dengan
fitur pencarian tersebut, pencarian record data pemasok akan lebih
cepat sehingga dapat menghemat waktu dan tenaga.
1. Ketikkan kata kunci kode pemasok pada kotak isian Kode
Pemasok, misalnya ketikkan MA. Klik tombol Cari Kode Pemasok
yang terletak di sebelah kanan kotak isian Kode Pemasok. Data
Pemasok yang mempunyai kode MA akan ditampilkan dalam
daftar di bagian bawah Form Pemasok.
2. dntuk menampilkan informasi pemasok secara detail, klik data
pemasok hasil pencarian dalam daftar.

428
Gambar 6.14 Pencarian dengan kata kunci kode pemasok.

3. (]ntuk melakukan pencarian data pemasok berdasarkan kata


kunci nama pemasok, ketikkan kata kunci nama pemasok pada
kotak isian Nama Pemasok. Misalnya, ketikkan CV kemudian klik
tombol Cari Nama Pemasok yang terletak di sebelah kanan kotak
isian Nama Pemasok. Hasil pencarian pemasok yang mempunyai
nama CV akan ditampilkan dalam daftar di bagian bawah Form
Pemasok.
4. Klik data pemasok hasil pencarian dalam daftar untuk
menampilkan informasi data pemasok secara detail. Jika
pencarian pemasok sudah selesai, klik tombol Tutup.

429
Gambar 6.15 Pencarian dengan kata kunci nama pemasok.

6.2.3 Edit dan Hapus Record Data


Pada proses edit record data pemasok, Anda tidak diperkenankan
mengedit kode pemasok. Hal ini dilakukan untuk mencegah adanya
kode pemasok yang sama (kode pemasok ganda). Record pemasok
yang sudah dimasukkan dalam transaksi pembelian tidak dapat
dihapus.
1. Ontuk mengedit record data, pilih record data yang akan diedit.
Setelah record data yang akan diedit dipilih, lakukan
penyesuaian data pemasok kemudian klik tombol Edit. Muncul
kotak pesan Edit Data.
2. Kotak pesan tersebut memberikan informasi bahwa record yang
Anda pilih akan diedit. Klik tombol OK untuk mengedit data

430
pemasok terpilih. Ontuk membatalkan edit data pemasok, klik
tombol Cancel.
Edit Data

Record CV Makmur Abadi akan diedit

Cancel

Gambar 6.16 Edit data pemasok.

3. dntuk menghapus record data, pilih record data yang akan


dihapus kemudian klik tombol Hapus. Muncul kotak pesan Hapus
Data.
Hapus Data

Record CV Makmur Abadi akan dihapus

Gambar 6.17 Hapus data pemasok.

4. Klik tombol OK untuk menghapus data pemasok terpilih. Ontuk


membatalkan hapus data pemasok terpilih, klik tombol Cancel.
5. Klik tombol Keluar untuk keluar dari Form Pemasok.

6.3 Menggunakan Form Pelanggan


Dengan menggunakan Form Pelanggan, Anda dapat menambah
record data pelanggan baru, mengedit atau menghapus record data
pelanggan yang sudah ada serta melakukan pencarian record data
pelanggan.

431
6.3.1 Input Data Pelanggan
Ketika memasukkan record data pelanggan ke dalam database, field
(kolom) piutang pada awalnya akan terisi O. Data piutang secara
otomatis akan bertambah jika ada kekurangan pembayaran dalam
transaksi penjualan. Piutang akan berkurang apabila ada transaksi
penerimaan piutang. Daftar pelanggan yang akan dimasukkan ke
dalam database dapat dilihat pada tabel berikut:
Kode
Kode Nama Alamat Kontak Telp/HP
Pos
SAKOOI Sinar 53412 Toni 0281962199
JI. KH Agus Salim
Abadi
No 741
Komputer
LKOOI Lima JI. Buaran 51234 Tangkas 0281922485
Komputer Selatan No 329
DCOOI Didi JI. Raya 54321 Mini 0281987264
Comp Baturraden No
5
FCOOI Fajar JI. Gunung Salak 52413 Nurul 0281938641
Comp No 415

RMKOO Roda Mas JI. Sokaraja 51234 Heru 0281921450


1 Komputer Timur No 519

FC002 Fokus JI. Berkoh KM 5 54321 Yono 0281901529


Comp No 682
IKOOI Idaman JI. Raya Tanjung 52413 Esti 0281934852
Komputer No 822
BCOOI Bintang JI. Sawangan No 53412 Putri 0281926281
Comp 788
DKOOI Dwi JI. Kebon Dalem 51324 Hendra 0281905117
Komputer No 611
Seluruh pelanggan berdomisili di kota Purwokerto. Berikut
langkahlangkah input record data pelanggan ke dalam database:

432
1. Klik tombol Pelanggan untuk menampilkan Form Pelanggan.
Karena database pelanggan belum diisi (kosong), muncul kotak
pesan Database Pelanggan Kosong. Klik tombol OK.
Database Pelanggan Kosong

Tidak ada data dalam database pelanggan


OK

Gambar 6.18 Kotak pesan Database Pelanggan Kosong.

2. Ontuk memasukkan record data ke dalam database pelanggan,


lakukan langkah-langkah sebagai berikut:
Ketikkan SAKOOI pada kotak isian Kode Pelanggan.
Ketikkan Sinar Abadi Komputer pada kotak isian Nama
Pelanggan.
Ketikkan JI. KH Agus Salim No 741 pada kotak isian Alamat.
o Ketikkan Purwokerto pada kotak isian Kota.
o Ketikkan 53412 pada kotak isian Kode Pos.
o Ketikkan Toni pada kotak isian Kontak.
Ketikkan 0281962199 pada kotak isian Telepon/HP.

433
Gambar 6.19 Record data pelanggan yang akan dimasukkan.
3. Klik tombol Tambah. Form Pelanggan kemudian menampilkan
record data yang sudah dimasukkan.

Gambar 6.20 Record data pelanggan sudah ditambahkan.

4. Dengan cara yang sama, masukkan seluruh data pelanggan yang


ada dalam tabel sehingga database pelanggan mempunyai 9
record data (lihat keterangan label record data dalam Form
Pelanggan).

434
Gambar 6.21 Record pelanggan terpilih.

5. Klik tombol scroll bar di sebelah kiri untuk menampilkan data


pelanggan sebelum record terpilih. Klik tombol scroll bar di
sebelah kanan untuk menampilkan data pelanggan sesudah
record terpilih.
6. Ontuk menampilkan record data pertama, klik tombol Awal yang
terletak di sebelah kiri scroll bar. Klik tombol Akhir yang terletak
di sebelah kanan scroll bar untuk menampilkan record data
terakhir.
7. Ontuk menampilkan nomor record data tertentu, ketikkan
nomor record data yang akan ditampilkan pada kotak isian yang
terletak di sebelah kanan scroll bar. Detail pelanggan dengan
nomor record yang Anda masukkan kemudian ditampilkan. Jika
nomor record tidak ada, muncul kotak pesan peringatan.
8. Ontuk mengurutkan nama pelanggan secara ascending, klik
tombol Sort Ascending . Klik tombol Sort Descending untuk
mengurutkan nama pelanggan secara descending.

6.3.2 Pencarian Pelanggan

435
Anda dapat melakukan pencarian record data pelanggan dengan
cepat menggunakan kata kunci kode pelanggan atau nama
pelanggan.
1. Ketikkan kata kunci kode pelanggan pada kotak isian Kode
Pelanggan, misalnya ketikkan D. Klik tombol Cari Kode Pelanggan
yang terletak di sebelah kanan kotak isian Kode Pelanggan.
Data Pelanggan yang mempunyai kode D akan ditampilkan
dalam daftar di bagian bawah Form Pelanggan.

Gambar 6.22 Pencarian dengan kata kunci kode pelanggan

2. (]ntuk menampilkan informasi pelanggan secara detail, klik data


pelanggan hasil pencarian dalam daftar.
3. (]ntuk melakukan pencarian data pelanggan berdasarkan kata
kunci nama pelanggan, ketikkan kata kunci nama pelanggan
pada kotak isian Nama Pelanggan. Misalnya, ketikkan Comp
kemudian klik tombol Cari Nama Pelanggan yang terletak di
sebelah kanan kotak isian Nama Pelanggan. Hasil pencarian

436
pelanggan yang mempunyai nama Comp akan ditampilkan dalam
daftar di bagian bawah Form Pelanggan.
4. Klik data pelanggan hasil pencarian dalam daftar untuk
menampilkan informasi data pelanggan secara detail. Jika
pencarian pelanggan sudah selesai, klik tombol Tutup.

Gambar 6.23 Pencarian dengan kata kunci nama pelanggan

6.3.3 Edit dan Hapus Record Data


Pada proses edit record data pelanggan, Anda juga tidak
diperkenankan untuk mengedit kode pelanggan untuk menghindari
adanya kode pelanggan yang sama (kode pelanggan ganda).
1. Ontuk mengedit record data, pilih record data yang akan diedit.
Setelah dipilih, lakukan penyesuaian data pelanggan kemudian
klik tombol Edit. Muncul kotak pesan Edit Data.

437
Gambar 6.24 Edit data pelanggan.

2. Klik tombol OK untuk mengedit record data terpilih. Ontuk


membatalkan edit record data, klik tombol Cancel.
3. dntuk menghapus record data, pilih record data yang akan
dihapus kemudian klik tombol Hapus. Muncul kotak pesan Hapus
Data.
Hapus Data

O'F Record Idaman Komputer akan dihapus

Cancel

Gambar 6.25 Hapus data pelanggan.

4. Klik tombol OK untuk menghapus record data terpilih. Ontuk


membatalkan hapus record data, klik tombol Cancel.
5. Klik tombol Keluar untuk keluar dari Form Pelanggan.

6.4 Menggunakan Form Transaksi


Pembelian
Form Transaksi Pembelian digunakan untuk mencatat transaksi
pembelian yang dilakukan perusahaan. Transaksi pembelian tidak
dapat dilakukan apabila database barang atau database pemasok
kosong. Setelah terjadi transaksi pembelian, jumlah stok barang

438
dalam database barang (worksheet DatabaseBarang) akan
bertambah.
Ringkasan transaksi pembelian akan dimasukkan ke dalam worksheet
HeaderPembelian, sedangkan detail transaksi pembelian dimasukkan
ke dalam worksheet DetailPembelian. Apabila dalam transaksi
pembelian jumlah uang yang dibayarkan perusahaan kurang,
transaksi pembelian juga dimasukkan ke dalam worksheet
PembayaranHutang.
Tanggal jatuh tempo pelunasan hutang adalah 3 bulan, terhitung
sejak pembelian. Kekurangan pembayaran merupakan hutang
perusahaan kepada pemasok. Transaksi yang akan dicatat berikut ini
adalah 4 transaksi pembelian dengan rincian sebagai berikut:
Pemasok PD Gunung Slamet
Total pembelian
Rp5.476.OOO,Pembayaran Rp5.476
.OOO,Hutang Rpo,-
Kode Barang Nama Barang Jumlah
DVDRW ST DVDRW SATA 8
CD-R CD-R 700MB 80 Min 20
DVD-R DVD-R 4,7GB 120 Min 20
KB PS-2 Keyboard PS-2 25
ms PS2 Mouse PS2 25
ms PC-ISB mouse PS2 & OSB 25
Pemasok PT Agung Jaya Total
pembelian Rp9.405.OOO,Pembayara
n Rp7.500.OOO,Hutang Rp1.905.OO
O,-
Kode Barang Nama Barang Jumlah
SCAN Scanner 5
PR Printer 10
SPK Speaker 5

439
SPK RMT Speaker + Remote 5
Pemasok CV Makmur Abadi Total
pembelian Rp8.325.OOO,Pembayaran
Rp5.OOO.OOO,Hutang Rp3.325.OOO,-
Kode Barang Nama Barang Jumlah
HD 250 Hard Disk 250GB SATA 5
HD 500 Hard Disk 500GB SATA 5
DDR2 2000 DDR 2 2GB 5
DDR3 1000 DDR 3 IGB 5
Flash Disk 4GB 20

Flash Disk 8GB 20


Pemasok CV Berlian Mas Total pembelian
Rp16.897.500,Pembayaran RplO.OOO.O
OO,Hutang Rp6.897.500,-
Kode Barang Nama Barang Jumlah
BLTH (ISB Bluetooth 10

LED 16 Monitor LED 16” 10

LCD 16 Monitor LCD 16” 10


PS 500 Power Suppy 500 Watt 5
STBZ Stabilizer 15
1. Klik tombol Pembelian untuk menampilkan Form Transaksi
Pembelian. Pada kotak pilhan Kode Pemasok pilih GSOOI. Kotak
isian Nama Pemasok secara otomatis akan terisi PD Gunung
Slamet. (]ntuk memudahkan dalam pemilihan kode pemasok,
Anda dapat mengurutkan nama pemasok secara ascending
dengan cara klik tombol Sort Ascending Pemasok yang terletak di
sebelah kanan kotak isian Kode Pemasok. Klik tombol Sort
Descending Pemasok untuk mengurutkan nama pemasok secara
descending.

440
Transaksi

Gambar 6.26 Memilih kode pemasok.

2. Pilih DVDRW ST pada kotak pilihan Kode Barang untuk


memasukkan barang DVDRW SATA ke dalam transaksi pembelian.
3. Anda dapat menggunakan fitur pencarian untuk memasukkan
barang ke dalam transaksi pembelian. Klik tombol Cari Barang
yang terletak di sebelah kanan kotak isian Nama Barang.
4. Pilih opsi Nama Barang kemudian ketikkan kata kunci nama
barang yang akan dicari, misalnya ketikkan DVD. Hasilnya akan
terlihat seperti pada Gambar 6.27.
5. Pilih barang yang akan dimasukkan ke dalam Form Transaksi
Pembelian. Jika sudah, klik tombol Keluar.

Gambar 6.27 Hasil pencarian barang.

6. Ketikkan 8 pada kotak isian Jumlah. Klik tombol Input untuk


memasukkan item barang DVDRW SATA ke dalam daftar item
transaksi pembelian.

441
Gambar 6.28 Item transaksi pembelian sudah dimasukkan.

7. Ontuk menginput item transaksi pembelian 5 barang yang lain,


lakukan dengan cara yang sama seperti pada langkah 2 sampai 6.
8. Anda dapat meng-edit item transaksi pembelian, apabila terjadi
kesalahan saat menginput item tersebut. Misalnya, pada no item
4 jumlah DVD-R 16X 4,7GB 120 Min seharusnya 20 tetapi tertulis
dalam daftar transaksi 25 unit. Ontuk mengatasi masalah
tersebut, pilih no item transaksi pembelian yang akan diedit. Pada
kotak isian Jumlah ketikkan 20 kemudian klik tombol Edit.
9. Jika Anda ingin menghapus item transaksi pembelian, pilih no
item transaksi pembelian yang akan dihapus kemudian klik
tombol Hapus.

442
Gambar 6.29 Edit item transaksi pembelian

10. Ketikkan jumlah uang yang dibayarkan, yaitu 5.476.000. Kotak


isian Sisa secara otomatis akan terisi O karena jumlah
pembayaran sama dengan total transaksi pembelian.

Gambar 6.30 Memasukkanjumlah pembayaran.

443
11. (]ntuk menyimpan transaksi pembelian klik tombol Simpan. Klik
tombol Cetak untuk mencetaknya. (]ntuk menyimpan sekaligus
mencetak transaksi pembelian klik tombol Bayar.

Gambar 6.31 Hasil cetak transaksi pembelian.

12. (]ntuk mencatat 3 transaksi pembelian yang lain, lakukan dengan


cara yang sama seperti pada langkah 1 sampai 11.
13. (]ntuk melihat ringkasan dan detail transaksi pembelian dengan
no faktur tertentu, pilih no faktur transaksi pembelian yang akan
ditampilkan pada kotak pilihan No Faktur.
14. Klik tombol Keluar untuk keluar dari Form Transaksi Pembelian.

Gambar 6.32 Menampilkan transaksi pembelian.

444
6.5 Menggunakan Form Transaksi Penjualan
Form Transaksi Penjualan digunakan untuk mencatat transaksi
penjualan barang yang dilakukan perusahaan. Transaksi penjualan
tidak dapat dilakukan apabila database barang kosong. Jika database
pelanggan kosong, Anda masih dapat melakukan transaksi penjualan
menggunakan Form Kasir.
Anda hanya dapat melakukan transaksi penjualan untuk item barang
yang sudah dibeli sebelumnya. Dalam transaksi penjualan, setiap
barang yang dijual akan mengurangi jumlah Stok barang dalam
gudang (database barang). Oleh karena itu, sebelum menginput
barang ke dalam Form Transaksi Penjualan, Macro akan mengecek
terlebih dahulu apakah Stok barang yang akan di-input mencukupi
atau tidak.
Jumlah barang yang dijual juga tidak boleh melebihi Stok barang
dalam database barang. Misalnya, jumlah DVDRW SATA yang Anda
beli hanya 8 unit. Jika Anda akan memasukkan DVDRW SATA
sebanyak 10 unit ke dalam daftar item transaksi penjualan, muncul
kotak pesan Stok Barang Tidak Ada.

Gambar 6.33 Jumlah barang yang diJual melebihi stok.

Ringkasan transaksi penjualan akan dimasukkan ke dalam worksheet


HeaderPenjualan, sedangkan detail transaksi penjualan dimasukkan
ke dalam worksheet DetailPenjualan. Apabila dalam transaksi
penjualan jumlah uang yang dibayarkan pelanggan kurang, transaksi
penjualan juga dimasukkan ke dalam worksheet PenerimaanPiutang.
Kekurangan pembayaran merupakan piutang perusahaan. Transaksi
yang akan dicatat berikut ini adalah 3 transaksi penjualan dengan
rincian sebagai berikut:

445
Pelanggan Lima
Komputer
Diskon
(Rp209.OOO,-)
Total Rp1.881.OOO,-
Penjualan
Pembayaran Rp1.500.OOO,-

Piutang Rp381.000,-
Kode Nama Barang Jumlah
Barang
CD-R CD-R 56X 700MB 80 5
Min
DVD-R DVD-R 4,7GB 120
Min
5
KB PS-2 Keyboard PS-2 10
ms PS2 Mouse PS2 10
SPK Speaker 3
Pelanggan Bintang Comp
Diskon 0% (RpO,-)
Total Rp4.585.OOO,-
Penjualan
Pembayaran Rp3.500.OOO,-

Piutang Rp 1.085.OOO,-
Kode BarangNama Barang Jumlah
HD 250 Hard Disk 250GB
2
SATA
HD 500 Hard Disk 500GB
2
SATA
LCD 16 Monitor LCD 16" 2
LED 16 Monitor LED 16" 2
Pelanggan Fajar Comp

446
Diskon 0% (RpO,-)
Total Rp2.675.OOO,-
Penjualan
Pembayaran Rp2.675.OOO,-

Piutang Rpo,-
Kode BarangNama Barang Jumlah
BLTH USB Bluetooth 5
PR Printer 5
MS PUSB Mouse PS2 & USB 5
Power Suppy 500 3
PS 500
Watt
1. Klik tombol Penjualan untuk menampilkan Form Transaksi
Penjualan. Pada kotak pilhan Kode Pelanggan pilih LKOOI. Kotak
isian Nama Pelanggan secara otomatis akan terisi Lima Komputer.
2. Pilih CD-R pada kotak pilihan Kode Barang untuk memasukkan
barang CD-R 56X 700MB 80 Min ke dalam transaksi penjualan.
3. Ketikkan 5 pada kotak isian Jumlah. Klik tombol Input untuk
memasukkan item barang CD-R 56X 700MB 80 Min ke dalam
daftar item transaksi penjualan.
4. (]ntuk menginput item transaksi penjualan 4 barang yang lain,
lakukan dengan cara yang sama seperti pada langkah 2 dan 3.
5. Pada kotak isian Diskon ketikkan 10. Kotak isian di sebelah kanan
secara otomatis terisi 209.000. Ketikkan jumlah uang yang
dibayarkan, yaitu 1.500.000 pada kotak isian Bayar. Kotak isian
Piutang secara otomatis akan terisi 381.000 karena jumlah
pembayaran lebih kecil dari nilai total transaksi penjualan.

447
Gambar 6.34 Seluruh iłem transaksi penJualan.

6. (]ntuk menyimpan transaksi penjualan klik tombol Simpan. Klik


tombol Cetak untuk mencetak transaksi penjualan. (]ntuk
menyimpan sekaligus mencetak transaksi penjualan klik tombol
Bayar.
7. (]ntuk mencatat 2 transaksi penjualan yang lain, lakukan dengan
cara yang sama seperti pada langkah 1 sampai 6.

Gambar 6.35 Hasil cetak transaksi penJualan.

448
8. (]ntuk melihat ringkasan dan detail transaksi penjualan dengan no
faktur tertentu, pilih no faktur transaksi penjualan yang akan
ditampilkan pada kotak pilihan No Faktur.
9. Klik tombol Keluar untuk keluar dari Form Transaksi Penjualan.

Gambar 6.36 Menampilkan transaksi penjualan.

6.6 Menggunakan Form Kasir


Form Kasir mempunyai fungsi dan bentuk tampilan yang hampir sama
dengan Form Transaksi Penjualan. Perbedaannya adalah Form Kasir
hanya digunakan untuk transaksi penjualan bagi pembeli umum
(bukan pelanggan). Dalam transaksi penjualan, pembeli harus
membayar kontan seluruh barang yang dibeli (pembeli tidak
diperbolehkan untuk hutang). Transaksi yang akan dicatat berikut ini
adalah 2 transaksi penjualan dengan rincian sebagai berikut:
Diskon
(Rp37.OOO,-)
Total Rp333.OOO,-

449
Penjualan
Pembayaran
Rp400.OOO,-
Kembali Rp67.OOO,-
Kode Barang Nama Barang Jumlah
CD-R CD-R 56X 700MB 1
80 Min
DDR3 1000 DDR 3 IGB 1
DVDRW ST DVDRW SATA 1
Diskon 0% (Rpo,-)
Total Rp207.500,-
Penjualan
Pembayaran Rp250.OOO,-
Kembali Rp42.500,-
Kode Barang Nama Barang Jumlah
DVD-R DVD-R 16X 4,7GB 1
120 Min
FD 8 Flash Disk 8GB 1
1. Klik tombol Kasir untuk menampilkan Form Kasir.
2. Pilih CD-R pada kotak pilihan Kode Barang untuk memasukkan
barang CD-R 56X 700MB 80 Min ke dalam transaksi penjualan.
3. Ketikkan 1 pada kotak isian Jumlah. Klik tombol Input untuk
memasukkan item barang CD-R 56X 700MB 80 Min ke dalam
daftar item transaksi penjualan.
4. (-lntuk menginput item transaksi pembelian 2 barang yang lain,
lakukan dengan cara yang sama seperti pada langkah 2 dan 3.

450
Gambar 6.37 Item transaksi pen,jualan dalam Form Kasir.

5. Pada kotak isian Diskon ketikkan 10. Kotak isian di sebelah kanan
secara otomatis terisi 37.000. Ketikkan jumlah uang yang
dibayarkan, yaitu 400.000 pada kotak isian Bayar. Kotak isian
Kembali secara otomatis akan terisi 67.000 karena jumlah
pembayaran lebih besar dari nilai total transaksi penjualan.
6. Klik tombol Cetak untuk mencetak transaksi penjualan. Ontuk
mencetak sekaligus menyimpan transaksi penjualan klik tombol
Bayar.
7. dntuk mencatat transaksi penjualan yang Iain, lakukan dengan
cara yang sama seperti pada langkah 2 sampai 6.
8. Klik tombol Keluar untuk keluar dari Form Kasir.

6.7 Menggunakan Form Pembayaran


Hutang

451
Form Pembayaran Hutang digunakan untuk mencatat transaksi
pembayaran hutang perusahaan kepada pemasok. Proses transaksi
pembayaran hutang hanya dapat dilakukan untuk transaksi
pembelian dengan sistem hutang.
1. Klik tombol Pembayaran Hutang untuk menampilkan Form
Pembayaran Hutang. Ketika dijalankan, Form Pembayaran
Hutang akan menampilkan ringkasan seluruh transaksi
pembelian dengan sistem hutang.
2. (-lntuk mencatat transaksi pembayaran hutang, pilih salah satu
transaksi pembelian dałam daftar, misalnya pilih TB0002. Kołak
isian Hutang secara otomatis akan menampilkan besarnya
hutang transaksi pembelian dengan no faktur TB0002, yaitu
1.905.000.

Gambar 6.38 Transaksi pembayaran hutang.

3. Ketikkan besarnya uang untuk membayar hutang, misalnya


1.500.000. Klik tombol Bayar. Jumlah hutang transaksi
pembelian dengan no faktur TB0002 secara otomatis berkurang
menjadi
405.000.

452
Gambar 6.39 Jumlah hutang berkurang.

4. (-lntuk menampilkan detail pembayaran hutang per faktur, pilih


opsi Detail pembayaran hutang per faktur. Pilih no faktur
transaksi pembelian yang detail pembayaran hutangnya akan
ditampilkan, misalnya pilih TB0002.

Form Pem avaran Hutang

Gambar 6.40 Detail pembayaran hutang per faktur.

5. (-lntuk mencetak seluruh transaksi pembayaran hutang, pilih


opsi lampilkan faktur dengan hutang kemudian klik tombol
Cetak.

453
Gambar 6.41 Mencetak seluruh transaksi pembayaran hutang.

6. Pilih opsi Detail pembayaran hutang per faktur untuk mencetak


pembayaran hutang nomor faktur tertentu. Pilih no faktur yang
akan dicetak pada kotak pilihan yang tersedia. Klik tombol Cetak.
7. Klik tombol Keluar untuk keluar dari Form Pembayaran Hutang.

6.8 Menggunakan Form Penerimaan Piutang


Form Penerimaan Piutang digunakan untuk mencatat transaksi
penerimaan piutang dari pelanggan. Proses transaksi penerimaan
piutang hanya dapat dilakukan untuk transaksi penjualan dengan
sistem hutang.
1. Klik tombol Penerimaan Piutang untuk menampilkan Form
Penerimaan Piutang. Ketika dijalankan, Form Penerimaan
Piutang akan menampilkan ringkasan seluruh transaksi
penjualan dengan sistem hutang.

454
Gambar 6.42 Transaksi penJualan dengan piutang ditampilkan.

2. (]ntuk mencatat transaksi penerimaan piutang, pilih salah satu


transaksi pembelian dałam daftar, misalnya pilih TJ0002. Kołak
isian Piutang secara otomatis akan menampilkan besarnya
piutang transaksi penjualan dengan no faktur TJ0002, yaitu
1.085.000.

455
Form

Gambar 6.43 Mencatat penerimaan piutang.

3. Ketikkan besarnya uang untuk penerimaan piutang, misalnya


1.085.000. Klik tombol Bayar. Jumlah piutang transaksi
penjualan dengan no faktur TJ0002 secara otomatis berkurang
menjadi O dan transaksi penjualan akan dihapus dari daftar.
4. (-lntuk menampilkan detail penerimaan piutang per faktur, pilih
opsi Detail penerimaan piutang per faktur. Pilih no faktur
transaksi penjualan yang detail penerimaan piutangnya akan
ditampilkan, misalnya pilih TJ0002.

Gambar 6.44 Detail penerimaan piutang per faktur.

456
Form Cetak
5. (-lntuk mencetak seluruh transaksi penerimaan piutang, pilih
opsi lampilkan faktur dengan piutang kemudian klik tombol
Cetak.
6. Pilih opsi Detail penerimaan piutang per faktur untuk mencetak
penerimaan piutang nomor faktur tertentu. Pilih no faktur yang
akan dicetak pada kotak pilihan yang tersedia. Klik tombol Cetak.
7. Klik tombol Keluar untuk keluar dari Form Penerimaan Piutang.

PIUTANG
Cet:ak N. F-aktur:

Gambar 6.45 Mencetak penerimaan piutang nomor faktur tertentu.

6.9 Menggunakan Form Cetak Barang


Form Cetak Barang digunakan untuk mencetak database barang.
Anda dapat mengetahui detail informasi seluruh barang seperti harga
beli, harga jual, jumlah stok dan informasi lain dengan mudah setelah
database barang dicetak. Database barang dapat dicetak untuk
seluruh record, atau hanya record tertentu menurut status barang.
1. Klik tombol Cetak untuk menampilkan Form Cetak. Pilih opsi
Database Earang pada daftar pilihan yang tersedia.

Gambar 6.46 Tampilan Form Cetak.


457
396
2. Klik tombol OK. Muncul Barang. Ontuk mencetak seluruh record
dalam database barang, pilih opsi Seluruh Record kemudian klik
tombol Cetak.

Cetak Barang
Seluruh Record

• Status *rang Produk Laku

Gambar 6.47 Form Cetak Barang.

3. dntuk mencetak record tertentu menurut status barang, pilih


opsi Status Earang. Pilih status barang pada kotak pilihan yang
tersedia, misalnya pilih Produk Laku. Klik tombol Cetak.
4. Klik tombol Keluar untuk keluar dari Form Cetak Barang.

Gambar 6.48 Database barang dengan status Produk Laku.


Menggunakan Form Cetak
Cetak digunakan untuk mencetak
6.10 Pemasok
Form Pemasok database pemasok dalam aplikasi. Anda dapat
mencetak seluruh record data pemasok dalam database atau
mencetak record data pemasok tertentu, di mana perusahaan
mempunyai hutang.
1. Klik tombol Cetak untuk menampilkan Form Cetak. Pilih opsi
Database Pemasok pada daftar pilihan yang tersedia.
2. Klik tombol OK. Muncul Form Cetak Pemasok. Ontuk mencetak
seluruh record dalam database pemasok, pilih opsi Seluruh
Record kemudian klik tombol Cetak.

Gambar 6.49 Form Cetak Pemasok.

3. Ontuk mencetak record tertentu, di mana perusahaan


mempunyai hutang, pilih opsi Hutang Pada Pemasok. Klik
tombol Cetak.

459
Menggunakan Form Cetak
Cetak digunakan untuk mencetak
Gambar 6.50 Mencetak data pemasok di mana perusahaan
berhutang.

4. Klik tombol Keluar untuk keluar dari Form Cetak Pemasok.


6.11 Pelanggan
Form Pelanggan database pelanggan dalam aplikasi. Anda dapat
mencetak seluruh record data pelanggan dalam database atau
mencetak record data pelanggan tertentu, di mana perusahaan
mempunyai piutang pada pelanggan tersebut.
1. Klik tombol Cetak untuk menampilkan Form Cetak. Pilih opsi
Database Eelanggan pada daftar pilihan yang tersedia.
2. Klik tombol OK. Muncul Form Cetak Pelanggan. Ontuk mencetak
seluruh record dalam database pelanggan, pilih opsi Seluruh
Record kemudian klik tombol Cetak.

Gambar 6.51 Form Cetak Pemasok.

3. Ontuk mencetak record tertentu, di mana perusahaan


mempunyai piutang pada pelanggan tersebut, pilih opsi Eiutang
Pelanggan. Klik tombol Cetak.

460
Menggunakan Form Cetak
Cetak digunakan untuk mencetak

Gambar 6.52 Mencetak seluruh record database pelanggan.

4. Klik tombol Keluar untuk keluar dari Form Cetak Pelanggan.


6.12 Pembelian
Form Pembelian transaksi pembelian. Selain mencetak seluruh
transaksi pembelian, Anda juga dapat mencetak transaksi pembelian
dengan kriteria tertentu. Hasil pencetakan transaksi pembelian dapat
ditampilkan secara detail atau hanya dalam bentuk ringkasan.
1 . Klik tombol Cetak untuk menampilkan Form Cetak. Pilih opsi
Iransaksi Pembelian pada daftar pilihan yang tersedia. Klik
tombol OK. Muncul Form Cetak Pembelian.

etakfem e tan

Gambar 6.53 Form Cetak Pembelian.

2. dntuk mencetak seluruh record transaksi pembelian, pilih opsi


Seluruh Record. Pada kotak pilihan Tampilan Laporan, Anda
dapat memilih apakah akan mencetak transaksi pembelian

461
Menggunakan Form Cetak
Cetak digunakan untuk mencetak
secara Detail atau hanya Ringkasan. Jika sudah, klik tombol
Cetak.

PE-ME-ELIAN

Gambar 6.54 Hasil cetak ringkasan transaksi pembelian.

462
3. Ontuk mencetak transaksi pembelian dengan kriteria tertentu,
pilih Pengaturan Qpsi.
o Beri tanda contreng pada pilihan Hutang untuk mencetak
transaksi pembelian nomor faktur tertentu yang masih ada
tunggakan hutang.
o Pilih kode pemasok pada kotak pilihan Kode Pemasok untuk
mencetak transaksi pembelian berdasarkan kode pemasok
terpilih.
o Pilih salah satu opsi tanggal yang tersedia, yaitu Antara
(transaksi pembelian pada kisaran waktu yang Anda pilih
pada kotak pilihan 1 dan 2), langgal (transaksi pembelian
pada tanggal yang Anda pilih pada kotak pilihan 1), Sebelum
(transaksi pembelian sebelum tanggal yang Anda pilih pada
kotak pilihan 1) dan Sesudah (transaksi pembelian sesudah
tanggal yang Anda pilih pada kotak pilihan 1).

Gambar 6.55 Hasil cetak detail transaksi pembelian (1)

463
Gambar 6.56 Hasil cetak detail transaksi pembelian (2)

4. Klik tombol Cetak. Jika tidak ada transaksi pembelian yang sesuai
dengan kriteria yang Anda tentukan, muncul kotak pesan seperti
terlihat pada Gambar 6.56.

T'dak Ada Transaksi


Tidak ada transaksi pembelian sesuai kriteria

Gambar 6.57 Kotak pesan Tidak Ada Transaksi.

5. Klik tombol Keluar untuk keluar dari Form Cetak Pembelian.

6.13 Menggunakan Form Cetak Penjualan


Form Cetak Penjualan digunakan untuk mencetak transaksi penjualan
yang sudah dilakukan. Selain mencetak seluruh transaksi penjualan,
Anda juga dapat mencetak transaksi penjualan dengan kriteria

464
tertentu. Hasil pencetakan transaksi penjualan dapat ditampilkan
secara detail atau hanya dalam bentuk ringkasan.
1. Klik tombol Cetak untuk menampilkan Form Cetak. Pilih opsi
Transaksi Peniualan pada daftar pilihan yang tersedia. Klik
tombol
OK. Muncul Form Cetak Penjualan.

Gambar 6.58 Form Cetak Pen,jualan.

2. Ontuk mencetak seluruh record transaksi penjualan, pilih opsi


Seluruh Record. Pada kotak pilihan Tampilan Laporan, Anda
dapat memilih apakah akan mencetak transaksi penjualan secara
Detail atau hanya Ringkasan. Jika sudah, klik tombol Cetak.

Gambar 6.59 Hasil cetak ringkasan transaksi penjualan.

3. Ontuk mencetak transaksi penjualan dengan kriteria tertentu,


pilih Pengaturan Qpsi.

465
o Beri tanda contreng pada pilihan Riutang untuk mencetak
transaksi pembelian nomor faktur tertentu yang masih ada
piutang.
o Pilih kode pelanggan pada kotak pilihan Kode Pelanggan
untuk mencetak transaksi penjualan berdasarkan kode
pelanggan terpilih.
o Pilih salah satu opsi tanggal yang tersedia, yaitu Antara
(transaksi penjualan pada kisaran waktu yang Anda pilih pada
kotak pilihan 1 dan 2), langgal (transaksi penjualan pada
tanggal yang Anda pilih pada kotak pilihan 1), Sekelum
(transaksi penjualan sebelum tanggal yang Anda pilih pada
kotak pilihan 1) dan Sesudah (transaksi penjualan sesudah
tanggal yang Anda pilih pada kotak pilihan 1).
4. Klik tombol Cetak. Jika tidak ada transaksi penjualan yang sesuai
dengan kriteria yang Anda tentukan, muncul kotak pesan Tidak
Ada Transaksi.
5. Klik tombol Keluar untuk keluar dari Form Cetak Penjualan.

%•
• 111

466
Gambar 6.60 Hasil cetak detail transaksi penjualan.

TENTANG PENUI-IS

Yudhy Wicaksono merupakan penulis buku komputer, yang mulai


menulis buku sejak tahun 2006. Sampai saat ini, penulis sudah
menghasilkan lebih dari 60 buku komputer. Penulis dapat dihubungi
melalui email dengan alamat: yudhy_wicakson02000@yahoo.com
Solusi Kantor merupakan unit usaha yang bergerak di bidang book
content. Solusi kantor beralamat di Purwokerto, Jawa Tengah. Solusi
Kantor dapat dihubungi melalui email dengan alamat:
kantorsolusi@gmail.com Anda dapat membeli buku karya Yudhy
Wicaksono dan Solusi Kantor di website: www.solusi-kantor.com

467
406
Membuat Aplikasi Penjualan
dengan Macro Excel

Excel menyediakan fitur macro yang dapat digunakan untuk


menyelesaikan pekerjaan kompleks dengan cepat dan mudah. Salah
satu contoh penerapan macro adalah untuk membuat aplikasi
penjualan. Aplikasi penjualan yang dibuat dengan macro dapat
menyelesaikan transaksi pembelian dan penjualan dengan mudah dan
cepat, karena hampir semuanya dikerjakan secara otomatis.

Membuat Aplikasi Penjualan dengan Macro Excel berisi panduan


langkah demi langkah pembuatan aplikasi penjualan siap pakai
dengan macro Excel. Beberapa fitur yang terdapat dalam aplikasi
penjualan ini di antaranya ialah:

E Aplikasi dijalankan di lingkungan Excel yang sangat familiar.


Pencarian produk, pemasok, dan pelanggan.
E Perhitungan diskon secara otomatis untuk tiap barang atau
transaksi penjualan.
E Transaksi pembelian dan penjualan dapat dilakukan dengan sistem
kontan atau hutang.
Mencetak laporan pembelian dan penjualan seluruh transaksi
atau hanya transaksi tertentu, dalam bentuk ringkasan atau detail.
E Dan masih banyak lagi.

Kelompok
Apl.
Perkantoran
Keterampilan
Tingkat Pemula
PT ELEX MEDIA KOMPUTINDO Tingkat
Menengah
Tingkat Mahir
Jenis Buku
Referensi
Tutorial
Latihan
Kompas Gramedia Building
Jl. Palmerah Barat 29-37, Jakarta 10270
Telp. (021) 536501 10-536501 1 1, Ext 3214
Webpage: http://elexmedia.co.id

Anda mungkin juga menyukai