Anda di halaman 1dari 152

BELAJAR

VBA

EXCEL
Untuk Pemula

MOH SHIDDIQ ZAMRONI


(1411900116)

-0-
KATA PENGANTAR
Segala puji bagi Allah, Tuhan semesta raya. Shalawat dan salam
semoga tetap terlimpah kepada Nabi Agung junjungan kita, Nabi Muhamad
SAW, keluarga, sahabat dan seluruh umatnya hingga akhir zaman.

Pembaca yang budiman, buku ini kami hadirkan di hadapan Anda


dengan judul ”Belajar VBA Excel untuk Pemula” semoga buku ini dapat
memberikan manfaat bagi kita semua. Tentunya masih banyak kekurangan
dalam penyusunan buku ini, oleh karena itu saran dan masukan selalu kami
harapkan untuk menjadikan buku ini lebih baik lagi.

Ucapan terima kasih kami haturkan kepada semua pihak yang


membantu terselesaikannya buku kecil ini. Semoga Allah mencatatnya
sebagai tanaman yang selalu tumbuh dan dapat kita panen buahnya di
akhirat nanti. Amin.

Tim Penyusun

-1-
DAFTAR ISI

I.
Database........................................................................................................6

II.
Form............................................................................................................16

III.Coding
Form..................................................................,,,.......................................31

IV.Hamalan
Utama........................................................................................................147

V.Penggunaan
Aplikasi......................................................................................................150

Daftar Pustaka

-2-
Pendahuluan

Pada sesi kali ini akan membahas tentang pembuatan program dengan
menggunakan Macro Excel. Program yang dibuat yakni Aplikasi
Pergudangan atau Stok Barang. Dimana aplikasi akan menyimpan dan
memproses data Barang, Customer, Supplier serta Flow barang masuk &
keluar.

-3-
Secara Umum bagin penting dari sebuah aplikasi harus
mengandung 3 unsur seperti diatas.

Database
Merupakan tempat penyimpanan data. Dalam pembuatan
aplikasi semua data akan disimpan pada database. Database tidak
dapat dilihat oleh user atau tidak dapat ditampilkan. secara umum semua
proses yang dilakukan user berjalan di Form tanpa melihat databasenya.

FORM
Merupakan user interface yang langsung berhadapan dengan
user. Semua aktifitas user terjadi disini. Form berisi beberapa aturan
atau coding yang berguna untuk menyampaikan informasi ke Database
atau menyimpannya ke database. Selain itu form juga berfungsi menjadi
penghubung antara database dan report.

REPORT
Merupakan bagian pelengkap dalam aplikasi. Tapi
penggunaannya sangat penting. report berisi Ringkasan Informasi atau
laporan dari beberapa kegiatan yang terjadi dalam aplikasi.

-4-
Tab Developer Excel

Proses pembuatan program di excel terjadi di menu Developer.


secara umum menu ini tidak tampil di worksheet MS Excel. Untuk
menampilkan tab menu ini bisa masuk di menu File – Options

Pilih Customize Ribbon - Pada Main tabs Centang Developer

-5-
I.Database VBA
Dalam VBA Excel database disimpan dalam beberapa sheet. Pada Aplikasi
ini membutuhkan 11 Sheet yang terdiri dari :

1. MenuUtama

2. TblSatuan

3. TblBarang

4. TblPemasok

5. TblKonsumen

6. TblMasuk

7. TblDtlMasuk

8. TblKeluar

9. TblDetailkeluar

10. TblKartuStok

11. Cetak
Beri Warna Masing-masing Sheet sehingga tampil sebagai berikut

-6-
TblSatuan
Pada sheet satuan berisi data Satuan barang yang disimpan dalam 1
kolom Satuan

Buat range Satuan Klik Formulas - Define Name


Name --> Satuan
Refers To -->
=OFFSET(TblSatuan!$A$2,1,0,COUNTA(TblSatuan!$A:$A)-2,1)

TblBarang
Pada sheet barang berisi 2 tabel, yakni tabel barang & tabel filter
barang dengan masing2 kolom berisi sebagai berikut :

-7-
3 Define Name

TblBarang -->
=OFFSET(TblBarang!$A$2,0,0,COUNTA(TblBarang!$A:$A)-1,4)
KodeBarang --
> =OFFSET(TblBarang!$A$2,1,0,COUNTA(TblBarang!$A:$A)-
2,1)
Barang --
> =OFFSET(TblBarang!$B$2,1,0,COUNTA(TblBarang!$B:$B)-
1,1)

TblPemasok
Pada sheet TblPemasok berisi 2 tabel, yakni tabel Pemasok & tabel filter
pemasok dengan masing2 kolom berisi sebagai berikut :

3 Define Name
TblPemasok -->
=OFFSET(TblPemasok!$A$2,0,0,COUNTA(TblPemasok!$A:$A)-1,4)
KodePemasok --
> =OFFSET(TblPemasok!$A$2,1,0,COUNTA(TblPemasok!$A:$A)-
2,1)
NamaPemasok--
> =OFFSET(TblPemasok!$A$2,1,0,COUNTA(TblPemasok!$B:$B)-
1,1)

-8-
TblKonsumen
Pada sheet tblKonsumen berisi 2 tabel, yakni tabel konsumen& tabel
filter Konsumendengan masing2 kolom berisi sebagai berikut :

3 Define Name
TblKonsumen -->
=OFFSET(TblKonsumen!$A$2,0,0,COUNTA(TblKonsumen!$A:$A)-
1,4)
KodeKonsumen --
> =OFFSET(TblKonsumen!$A$2,1,0,COUNTA(TblKonsumen!$A:
$A)
-2,1)
NamaKonsumen--
> =OFFSET(TblKonsumen!$B$2,1,0,COUNTA(TblKonsumen!$B:
$B)
-1,1)

-9-
TblMasuk
Pada sheet TblMasuk berisi 2 tabel, yakni tabel Barang masuk & tabel
filter Barang masuk dengan masing2 kolom berisi sebagai berikut :

2 Define Name
TblMasuk -->
=OFFSET(TblMasuk!$A$2,0,0,COUNTA(TblMasuk!$A:$A)-1,4)
NoMasuk --
> =OFFSET(TblMasuk!$A$2,1,0,COUNTA(TblMasuk!$A:$A)-
2,1)

TblDtlMasuk
Pada sheet TblDtlMasuk berisi 2 tabel, yakni tabel Detail Barang
masuk & tabel filter Detail Barang masuk dengan masing2 kolom berisi
sebagai berikut :

- 10 -
2 Define Name
TblDetailMasuk -->
=OFFSET(TblDtlMasuk!$A$2,0,0,COUNTA(TblDtlMasuk!$A:$A)-
1,9)
NoDetailMasuk --
> =OFFSET(TblDtlMasuk!$A$2,1,0,COUNTA(TblDtlMasuk!$A:$A)-
2,1)

TblKeluar
Pada sheet Tblkeluar berisi 2 tabel, yakni tabel Barang
Keluar& tabel filter Barang keluar dengan masing2 kolom berisi sebagai
berikut :

2 Define Name
TblKeluar --> =OFFSET(Tblkeluar!$A$2,0,0,COUNTA(Tblkeluar!$A:$A)-
1,4)
NoKeluar --> =OFFSET(Tblkeluar!$A$2,1,0,COUNTA(Tblkeluar!$A:$A)-
2,1)

TblDtlKeluar
Pada sheet TblDtlkeluar berisi 2 tabel, yakni tabel Detail Barang
Keluar& tabel filter detail Barang keluar dengan masing2 kolom berisi
sebagai berikut :

- 11 -
2 Define Name
TblDetailKeluar -->
=OFFSET(TblDetailKeluar!$A$2,0,0,COUNTA(TblDetailKeluar!$A:$A)-1,9)
NoDetailKeluar --
> =OFFSET(TblDetailKeluar!$A$2,1,0,COUNTA(TblDetailKeluar!$A:$A)-
2,1)
TblKartuStok
Pada sheet TblkartuStok berisi 2 tabel, yakni tabel Kartu
Stok & tabel filter Kartu Stok dengan masing2 kolom berisi sebagai
berikut :

2 Define Name
TblKartuStok -->
=OFFSET(TblKartuStok!$A$2,0,0,COUNTA(TblKartuStok!$A:$A)-1,9)
BarangStok--
> =OFFSET(TblKartuStok!$A$2,1,3,COUNTA(TblKartuStok!$A:$A)-
2,1)

Simpan
Simpan Project dengan Extensi XLSM atau file type Excel Macro-Enable
Workbook

- 12 -
Pengantar FORM
Pada sesi kali ini kita akan membuat Form Aplikasi
Pertama silahkan buka file project yang kemarin. setelah itu bisa masuk
pada Tab Dveloper

Pilih menu Visual Basic untuk bisa membuat Form Aplikasi.

Berikut tampilan halaman Virtual Basic for Application (VBA) yang


digunakan untuk mwmbuat form dan memasukkan beberap modul code
program.

- 13 -
Untuk membuat form bisa diklik menu Insert – UseForm

Maka akan tampil satu halaman form kosong yang siap untuk diolah
Yang perlu diperhatikan adalah menu toolbox & properties form pada
bagian kiri

Toolbox

toolbox merupakan bagian terpenting dalam form. pada menu ini berisi
beberapa media yang dapat digunakan untuk operasi form
 Label : Digunakan untuk membuat text atau Tulisan
 TextBox : Digunakan untuk membuat isian atau inputan
 CommandButton : Digunakan untuk membuat Tombol

- 14 -
Properties Form

Dalam properties form berisi beberapa konfigurasi yang digunana untuk


mempercantik form & digunakan dalam proses coding.

- 15 -
II.PEMBUATAN FORM
FORM STOK BARANG
pada tahap selanjutnya kita akan membuat form dengan beberapa propertis
yang sudah kita tentukan. jumlah form yang digunakan ada 7 form yang
terdiri dari :

1. Form Satuan
2. Form Barang
3. Form pemasok
4. Form Konsumen
5. Form Barang Masuk
6. Form Barang Keluar
7. Form Cetak

- 16 -
Form Satuan

Klik pada bagian Form kemudian rubah properties Formnya


--> Name : frmSatuan | Caption : Form Satuan

SIlahkan ditambahkan form control lainnya

1. TextBox
Properties
Name : txtSatuan

2. ListBox
Properties
Name :
listSatuan
3. CommandButton
Properties
Name :
cmdTambah |
Caption :
Tambah

4. CommandButton
Properties
Name : cmdEdit |
Caption : Edit
5. CommandButton
Properties
Name :
cmdhapus | - 17 -
Caption : Hapus
6. CommandButton
Form Barang
Selahkan buat form seperti dibawah ini

Klik pada bagian Form kemudian rubah properties Formnya


--> Name : frmBarang | Caption : Form Barang

SIlahkan ditambahkan form control lainnya


1. Label
Properties
Caption : Kode Barang
2. Label
Properties
Caption : Nama Barang
3. Label
Properties
Caption : Satuan
4. Label
Properties
Caption : Stok
5. TextBox
Properties
Name :
txtKodeBarang
6. TextBox
Properties
Name :
txtNamaBaran
g - 18 -
7. TextBox
Properties
Name : txtStok
8. ComboBox
Properties
Name :
cmbSatuan
9. ListBox
Properties
Name : listData
10. CommandButto
n
Properties
Name :
cmdCariKode |
Caption : ...
11. CommandButto
n
Properties
Name :
cmdCariNama |
Caption : ...
12. CommandButto
n
Properties
Name :
cmdFormSatua
n | Caption : ...
13. CommandButto
n
Properties
Name :
cmdSimpan |
Caption :
Simpan
14. CommandButto
n
Properties
Name :
cmdEdit |
Caption : Edit
15. CommandButto - 19 -
n
Properties
Form Pemasok

Klik pada bagian Form kemudian rubah properties Formnya


--> Name : frmPemasok | Caption : Form Pemasok

SIlahkan ditambahkan form control lainnya


1. Label
Properties
Caption : Kode Pemasok
2. Label
Properties
Caption : Nama Pemasok
3. Label
Properties
Caption : Alamat Pemasok
4. Label
Properties
Caption : No HP
5. TextBox
Properties
Name :
txtKodePemasok
6. TextBox
Properties
Name :
txtNamaPemasok
7. TextBox
Properties
Name : - 20 -
txtAlamat
8. TextBox
Properties
Name : txtNoHP

9. ListBox
Properties
Name : listData
10. CommandButto
n
Properties
Name :
cmdCariKode |
Caption : ...
11. CommandButto
n
Properties
Name :
cmdCariNama |
Caption : ...
12. CommandButto
n
Properties
Name :
cmdSimpan |
Caption :
Simpan

13. CommandButto
n
Properties
Name :
cmdEdit |
Caption : Edit
14. CommandButto
n
Properties
Name :
cmdhapus |
Caption :
Hapus
15. CommandButto - 21 -
n
Properties
Form Konsumen

Klik pada bagian Form kemudian rubah properties Formnya


--> Name : frmKonsumen | Caption : Form Konsumen

Silahkan ditambahkan form control lainnya


1. Label
Properties
Caption : Kode Konsumen
2. Label
Properties
Caption : Nama Konsumen
3. Label
Properties
Caption : Alamat Konsumen
4. Label
Properties
Caption : No HP
5. TextBox
Properties
Name :
txtKodeKonsume
n
6. TextBox
Properties
Name :
txtNamakonsume
n - 22 -
7. TextBox
Properties
Name : txtAlamat
8. TextBox
Properties
Name : txtNoHP

9. ListBox
Properties
Name : listData
10. CommandButto
n
Properties
Name :
cmdCariKode |
Caption : ...
11. CommandButto
n
Properties
Name :
cmdCariNama |
Caption : ...
12. CommandButto
n
Properties
Name :
cmdSimpan |
Caption :
Simpan

13. CommandButto
n
Properties
Name :
cmdEdit |
Caption : Edit
14. CommandButto
n
Properties
Name :
cmdhapus | - 23 -
Caption :
Hapus
Form Barang Masuk

Klik pada bagian Form kemudian rubah properties Formnya


--> Name : frmBarangMasuk | Caption : Form Barang Masuk

Silahkan ditambahkan form control lainnya


1. Frame
Properties Caption
: Transaksi
2. Frame
Properties
Caption : Barang
3. Label
Properties
Caption : Nomor
Masuk
4. Label
Properties
Caption :
Tanggal Masuk
5. Label
Properties
Caption : Kode
Pemasok
6. Label
Properties
Caption : Nama
Pemasok - 24 -
7. Label
Properties
Caption : Kode Barang
8. Label
Properties
Caption : Nama Barang
9. Label
Properties
Caption : Satuan
10. Label
Properties
Caption : Stok
11. Label
Properties
Caption :
Jumlah Masuk
12. Label
Properties
Caption : Stok
Akhir
13. TextBox
Properties
Name :
txtNoMasuk
14. TextBox
Properties
Name :
txtTanggalMas
uk
15. TextBox
Properties
Name :
txtKodePemas
ok
16. TextBox
Properties
Name :
txtNamaPemas
ok
17. TextBox
Properties
Name : - 25 -
txtKodeBarang
18. TextBox
20. TextBox
Properties
Name : txtStok
21. TextBox
Properties
Name :
txtJumlahMasu
k
22. TextBox
Properties
Name :
txtStokAkhir

23. ListBox
Properties
Name : listData
24. CommandButto
n
Properties
Name :
cmdFormPema
sok |
Caption : ...
25. CommandButto
n
Properties
Name :
cmdFormBaran
g | Caption : ...
26. CommandButto
n
Properties
Name :
cmdTambah |
Caption :
Tambah
27. CommandButto
n
Properties
Name :
cmdHapus |
- 26 -
Caption :
Hapus
Form Barang Keluar

Klik pada bagian Form kemudian rubah properties Formnya


--> Name : frmBarangKeluar | Caption : Form Barang Keluar

Silahkan ditambahkan form control lainnya


1. Frame
Properties Caption
: Transaksi
2. Frame
Properties
Caption : Barang
3. Label
Properties
Caption : Nomor
keluar
4. Label
Properties
Caption :
Tanggal Keluar
5. Label
Properties
Caption : Kode
Konsumen
6. Label
Properties
Caption : Nama
Konsumen
7. Label
Properties - 27 -
Caption : Kode
8. Label
Properties
Caption : Nama Barang
9. Label
Properties
Caption : Satuan
10. Label
Properties
Caption : Stok
11. Label
Properties
Caption :
Jumlah Keluar
12. Label
Properties
Caption : Stok
Akhir
13. TextBox
Properties
Name :
txtNoKeluar
14. TextBox
Properties
Name :
txtTanggalKel
uar
15. TextBox
Properties
Name :
txtKodeKonsu
men
16. TextBox
Properties
Name :
txtNamaKonsu
men
17. TextBox
Properties
Name :
txtKodeBarang
18. TextBox
Properties - 28 -
Name :
txtNamaBaran
21. TextBox
Properties
Name : txtJumlahKeluar
22. TextBox
Properties
Name : txtStokAkhir

23. ListBox
Properties
Name : listData
24. CommandButto
n
Properties
Name :
cmdFormKons
umen | Caption
: ...
25. CommandButto
n
Properties
Name :
cmdFormBaran
g | Caption : ...
26. CommandButto
n
Properties
Name :
cmdTambah |
Caption :
Tambah
27. CommandButto
n
Properties
Name :
cmdHapus |
Caption :
Hapus
28. CommandButto
n
Properties
Name :
- 29 -
cmdSimpan |
Caption :
Form Cetak

Klik pada bagian Form kemudian rubah properties Formnya


--> Name : frmCetak | Caption : Form Cetak
Silahkan ditambahkan form control lainnya
1. OptionButton
Properties
Name : optTblBarang | Caption : Tabel
Barang
2. OptionButton
Properties
Name : optTblPemasok | Caption : Tabel
Pemasok
3. OptionButton
Properties
Name : optTblKonsumen | Caption :
Tabel Konsumen
4. OptionButton
Properties
Name : optTransaksiMasuk | Caption :
Transaksi Masuk
5. OptionButton
Properties
Name : optTransaksiKeluar | Caption :
Transaksi Keluar
6. OptionButton
Properties
Name : optKartuStok | Caption : Kartu
Stok
7. CommandButton
Properties
- 30 -
Name : cmdOk | Caption : Cetak
8. CommandButton
III. CODING FORM

Buka project yang sudahdibuatkemarin. Buka Form Satuan yang sudah di


buat.

Isian kode program akan kita lakukan pada editor diatas. Untuk
menampilkan editor diatas bisa di dluble klik salah satu elemen pada form.

- 31 -
Form
Double klik form satuan maka akan tampil seperti berikut

userForm :menandakan element form yang akan kita isikan kodenya


Click : event yang dilakukan saat kode dijalankan.

Ubah Klik menjadi Active -->untuk membuat event dilakukan saat posisi
form aktif

Form - Active

Masukkan kode berikut.


Usahakan memasukkan kode antara baris pertama
(privat sub ...)danbaristrakhir(End Sub)atauhanya di area yg di blok
seperti pada gambar diatas.

- 32 -
Code :
Private Sub UserForm_Activate()
'Jikasel A3 worksheet TblSatuankosong
If Sheets("TblSatuan").Range("A3").Value = "" Then
'Keluardari Sub Procedure
Exit Sub
Else
'Meng
isiListB
ox
listSatuan.RowSource = "Satuan"
End If
End Sub

CmdTambah - Click

Double klik tombol


tambah&masukkan code berikut

Code :
Private Sub cmdTambah_Click()
'DeklarasivariabelwsTblSatuan
Dim wsTblSatuan As Worksheet
'DeklarasivariabelRecordAkhir
Dim RecordAkhirAs Integer
'DeklarasivariabelCekSel
Dim CekSelAs Range

- 33 -
'wsTblSatuanmerupakan worksheet TblSatuan
Set wsTblSatuan = Sheets("TblSatuan")
'RecordAkhirmerupakanbaristerakhirkolom A
RecordAkhir = wsTblSatuan.Cells(wsTblSatuan.Rows.Count, _
"A").End(xlUp).Offset(0, 0).Row

'JikaTextBoxbelumdiisi
If txtSatuan.Value = "" Then
'MenampilkankotakpesanSatuanKosong
MsgBox "Satuanbelumdiisi", _
vbOKOnly + vbCritical, "SatuanKosong"
'TextBoxmenjadifokus
txtSatuan.SetFocus
'Keluardari Sub
Procedure Exit Sub
End If

'Jikasel A3
worklsheetTblSatuantidakko
song
If wsTblSatuan.Range("A3").Value <> "" Then
'Memeriksaapakahsatuansudahada
For Each CekSel In wsTblSatuan.Range("Satuan")
'Jikasatuansudahada
If txtSatuan.Value = CekSel.Value Then
'MenampilkankotakpesanSatuanGanda
MsgBox "Satuansudahada", vbOKOnly + _
vbCritical, "SatuanGanda"
'TextBoxdikosongkan
txtSatuan.Value =
""
'TextBoxmenjadifoku
s txtSatuan.SetFocus
'Keluardari Sub
Procedure Exit Sub
End If
Next CekSel
End If

With wsTblSatuan
'MasukkanSatuan - 34 -
.Cells(RecordAkhir + 1, 1).Value = txtSatuan.Value
'Sumber data ListBoxdari range Satuan
listSatuan.RowSource = "Satuan"
End With

'Menyimpan workbook
ThisWorkbook.Save
End Sub

CmdEdit -
Click

Double klik tombol edit &masukkan kode berikut :

Code :
Private Sub cmdEdit_Click()
'DeklarasivariabelwsTblSatuan
Dim wsTblSatuan As Worksheet
'DeklarasivariabelCekSel
Dim CekSelAs Range
'Deklarasivariabel c
Dim c As Range

'wsTblSatuanmerupakan worksheet TblSatuan


Set wsTblSatuan = Sheets("TblSatuan")

'Jikatidakada item ListBox yang dipilih


If listSatuan.ListIndex< 0 Then
- 35 -
'MenampilkankotakpesanPilihSatuan
MsgBox "Pilihsatuan yang akandiedit", _
vbOKOnly + vbInformation,
"PilihSatuan"
'ListBoxmenjadifokus
listSatuan.SetFocus
'Keluardari Sub Procedure
Exit Sub
'Jikaada item ListBox yang dipilih
Else
'Memeriksaapakahsatuansudaha
da
For Each CekSel In wsTblSatuan.Range("Satuan")
'Jikasatuansudahada
If txtSatuan.Value = CekSel.Value Then
'MenampilkankotakpesanSatuanGanda
MsgBox "Satuansudahada", vbCritical _
+ vbOKOnly, "SatuanGanda"
'TextBoxdikosongkan
txtSatuan.Value = ""

'TextBoxmenjadifoku
s txtSatuan.SetFocus
'Keluardari Sub
Procedure Exit Sub
End If
Next CekSel
'Pencarian
satuanberdas
arkanListBo
x
Set c =
wsTblSatua
n.Range("Sa
tuan"). _
Find(listSatuan.Value, LookAt:=xlWhole, LookIn:=xlValues)
'Edit satuandarinilaiTextBox
c.Value = txtSatuan.Value
'Sumber data ListBoxdari range
Satuan listSatuan.RowSource =
"Satuan"
End If - 36 -

'Menyimpan
CmdHapus -
Click

Double klik tombol hapus dan masukkan kode berikut :

Private Sub cmdHapus_Click()


'DeklarasivariabelwsTblSatuan
Dim wsTblSatuan As Worksheet
'Deklarasivariabel c
Dim c As Range
'wsTblSatuanmerupakan worksheet TblSatuan
Set wsTblSatuan = Sheets("TblSatuan")
'Jikatidakada item ListBox yang dipilih
If listSatuan.ListIndex< 0 Then
'MenampilkankotakpesanPilihSatuan
MsgBox "Pilihsatuan yang akandihapus", _
vbOKOnly + vbInformation, "PilihSatuan"
'ListBoxmenjadifokus
listSatuan.SetFocus
'Keluardari Sub Procedure
Exit Sub
'Jikaada item ListBox yang dipilih
Else
'PencariansatuanberdasarkanListB
ox
Set c =
wsTblSatuan.Range("Satuan").
_ - 37 -
Find(listSatuan.Value,
LookAt:=xlWhole,
'Menghapus record satuanterpilih
c.Delete Shift:=xlUp
'MengosongkanListBox
listSatuan.Value = ""
'Jikasel A3 worksheet
TblSatuankosong
If wsTblSatuan.Range("A3").Value = "" Then
'MengosongkanTextBox
txtSatuan.Value = ""
'Keluardari Sub Procedure
Exit Sub
'Jikasel A3 worksheet TblSatuantidakkosong
Else
'Sumber data ListBoxdari range Satuan
listSatuan.RowSource = "Satuan"
End If
End If
'Menyimpan
workbook
ThisWorkbook.Save
End Sub

- 38 -
CmdKeluar –
Click

Double klik tombol keluar dan masukkan kode


berikut :
Private Sub cmdKeluar_Click()
Unload Me
End Sub

listSatu
an- Click

Double klik list satuan dan masukkan kode berikut :


Private Sub listSatuan_Click()
'Jikatidakada item ListBox yang dipilih
If listSatuan.ListIndex< 0 Then
'Keluardari Sub Procedure
Exit Sub
'Jikaada item ListBox yang
dipilih
Else
'NilaiTextBoxSataundiisinilaiListbox
txtSatuan.Value = listSatuan.Value
End If
End Sub
Untuk
menjal
akan
Form - 39 -
tekanto
mbol
CODING FORM BARANG
Form Barang

Buka form barang yang sudah dibuat kemarin.

- 40 -
General - TampilkanSemua

Kita akan menambahkan 1 fungsi baru yg digunakan untuk semua proses


dalam form
Buka code edioratau double klik form barang.
PadabagiankiriatasPilih General &masukkan full code (masukkansemua
code berikut) berikut :

Sub TampilkanSemua()
'DeklarasivariabelwsTblBrg
Dim wsTblBrg As Worksheet
'DeklarasivariabelrgTampil
Dim rgTampil As Range
'DeklarasivariabelsTampil
Dim sTampil As Range

'wsTblBrgadalah worksheet TblBarang


Set wsTblBrg = Sheets("TblBarang")

'MenghapusListBox
ListData.Clear

- 41 -
With ListData
'MenambahkanjudulkolomListBox
.AddItem
'JudulListBoxkolompertama
.List(.ListCount - 1, 0) = "KodeBarang"
'JudulListBoxkolomkedua
.List(.ListCount - 1, 1) = "NamaBarang"
'JudulListBoxkolomketiga
.List(.ListCount - 1, 2) = "Satuan"
'JudulListBoxkolomkeempat
.List(.ListCount - 1, 3) = "Stok"
End With

With wsTblBrg
'rgTampiladalah range KodeBarang yang
ditampilkan Set rgTampil =
wsTblBrg.Range("KodeBarang"). _
SpecialCells(xlCellTypeVisible)
'sTampilpengulangansetiapseldalamrgTam
pil For Each sTampilInrgTampil
With ListData
'Memasukkan item kedalamListBox
.AddItem
'KodebarangberdasarkannilaidalamsTampil
.List(.ListCount - 1, 0) = sTampil.Value
'Namabarang 1
kolomsebelahkanansTampil
.List(.ListCount - 1, 1) = _
sTampil.Offset(0, 1).Value
'Satuanbarang 2
kolomsebelahkanansTampil
.List(.ListCount - 1, 2) = _
sTampil.Offset(0, 2).Value
'Stokbarang 3
kolomsebelahkanansTampil
.List(.ListCount - 1, 3) = _
Format(sTampil.Offset(0, 3).Value, "#,##0")
End With
Next sTampil
End With
End Sub
- 42 -
UserForm -
Active

Double klik form barang - Ubahfungsi Click bagianataskananmenjadi


Active danmasukkankodeberikut :
Private Sub UserForm_Activate()
'DeklarasivariabelwsTblBrg
Dim wsTblBrg As Worksheet
'wsTblBrgadalah worksheet
TblBarang
Set wsTblBrg = Sheets("TblBarang")
'Jikatabelbarangkosong
If wsTblBrg.Range("A3").Value = "" Then
'Keluardari Sub Procedure

Exit Sub
End If
'Jika
data yang
ditampilka
nmerupaka
nhasilpeny
aringan
If - 43 -
wsTblBrg.
FilterMode
'Memanggil Sub Procedure TampilkanSemua
Call TampilkanSemua
End Sub

cmbSatuan - Enter

Double klik cmbSatuan (isiansatuan) – Ubah fungsi Click bagian atas


kanan menjadi Enter dan masukkan kode berikut :
Private Sub cmbSatuan_Enter()
'Jikatabelsatuantidakkosong
If Sheets("TblSatuan").Range("A3") <> "" Then
'MengisiComboBoxSatuan
cmbSatuan.RowSource = "Satuan"
End If
End Sub

- 44 -
CmdSimpan -
Click

Double klik tombol tambah&masukkan code berikut


Private Sub cmdSimpan_Click()
'DeklarasivariabelwsTblBrg
Dim wsTblBrg As Worksheet
'DeklarasivariabelRecordAkhir
Dim RecordAkhirAs Integer
'DeklarasivariabelCekSel
Dim CekSelAs Range
'wsTblBrgmerupakan worksheet TblBarang
Set wsTblBrg = Sheets("TblBarang")
'RecordAkhirmerupakan record terakhirtabelbarang
RecordAkhir = wsTblBrg.Cells(wsTblBrg.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row
'JikaTextBoxKodeBarangkosong
If txtKodebarang.Value = "" Then
'MenampilkankotakpesanKodeBarangKosong
MsgBox "Kodebarangbelumdiisi", _
vbOKOnly + vbCritical, "KodeBarangKosong"
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocu
s 'Keluardari Sub
Procedure
Exit Sub
'JikaTextBoxNamaBarangkosong
ElseIftxtNamaBarang.Value = "" Then
'MenampilkankotakpesanNamaBarangKoso
ng MsgBox "Namabarangbelumdiisi", _
- 45 -
vbOKOnly + vbCritical, "NamaBarangKosong"
'TextBoxNamaBarangmenjadifokus
txtNamaBarang.SetFocus
'Keluardari Sub
Procedure Exit Sub
'JikaComboBoxSatuankosong
ElseIfcmbSatuan.Value = "" Then
'MenampilkankotakpesanSat
uanKosong
MsgBox "Satuanbarangbelumdiisi", vbOKOnly, _
"SatuanKosong"
'ComboBoxSatuanmenjadifokus
cmbSatuan.SetFocus
'Keluardari Sub Procedure
Exit Sub
'JikaTextBoxStokkosong
ElseIftxtStok.Value = "" Then
'MenampilkankotakpesanStok
Kosong
MsgBox "Stokbarangbelumdiisi", vbOKOnly, _
"StokKosong"
'TextBoxStokmenjadifokus
txtStok.SetFocus
'Keluardari Sub Procedure
Exit Sub
End If
'Jika data yang ditampilkanmerupakanhasilpenyaringan
If wsTblBrg.FilterMode Then
'Tampilkanseluruh data dalam worksheet TblBarang
wsTblBrg.ShowAllData
End If
'Jikatabelbarangtidakkosong
If wsTblBrg.Range("A3").Value <> "" Then
'Memeriksaapakahkodebarangsudahada
For Each CekSel In wsTblBrg.Range("KodeBarang")
'Jikakodebarangsamadenganisiselpadakolom A
If txtKodebarang.Value = CekSel.Value Then
'MenampilkankotakpesanKodeBarangGanda
MsgBox "Kodebarangsudahada", _
vbCritical + vbOKOnly, "KodeBarangGanda"
'TextBoxKodeBarangdikosongkan
txtKodebarang.Value = "" - 46 -
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocus
'Keluardari Sub Procedure
Exit Sub
End If
Next CekSel
End If
With
wsTblBrg
'Masukka
nkodebarang
di bawah
record
terakhirkolo
mA
.Cells(RecordAkhir + 1, 1).Value =
txtKodebarang.Value 'Masukkannamabarangpada record
yang sama
.Cells(RecordAkhir + 1, 2).Value =
txtNamaBarang.Value 'Masukkansatuanpada record yang
sama
.Cells(RecordAkhir + 1, 3).Value =
cmbSatuan.Value 'MasukkanStokpada record yang
sama
.Cells(RecordAkhir + 1, 4).Value = _
CDbl(txtStok.Value)
End With
'TextBoxKodeBarangdikosongkan
txtKodebarang.Value = ""
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocus
'Memanggil Sub Procedure TampilkanSemua
Call TampilkanSemua
'Menyimpan workbook
ThisWorkbook.Save
End Sub

- 47 -
CmdEdit -
Click

Double klik tombol edit &masukkan kodeberikut :


Private Sub cmdEdit_Click()
'DeklarasivariabelwsTblBrg
Dim wsTblBrg As Worksheet
'Deklarasivariabel c
Dim c As Range
'DeklarasivariabelPesanEdit
Dim PesanEditAs Integer
'wsTblBrgmerupakan worksheet TblBarang
Set wsTblBrg = Sheets("TblBarang")
'Jikatabelbarangkosong
If wsTblBrg.Range("A3").Value = "" Then
'MenampilkankotakpesanTabelKosong
MsgBox "Tabelbarangmasihkosong", _
vbOKOnly + vbInformation, "TabelKosong"
'Keluardari Sub Procedure
Exit Sub
End If
'cmerupakanselhasilpencariankodebarang
Set c = wsTblBrg.Range("KodeBarang"). _
Find(txtKodebarang.Value, LookAt:=xlWhole,
LookIn:=xlValues) 'Jikatidakadaselberisi kata kunciKodeBarang
If c Is Nothing Then
'Menampilkankotakpesan Data Tidak Ada
MsgBox "Data yang akandiedittidakada", _
vbOKOnly + vbInformation, "Data Tidak Ada"
'TextBoxKodeBarangdikosongkan
- 48 -
txtKodebarang.Value = ""
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocus
'Keluardari Sub Procedure
Exit Sub
Else
'Menampilkankotakpesansebelum record data
diedit PesanEdit = MsgBox("Record " & _
c.Offset(0, 1).Value & " akandiedit", _
vbOKCancel + vbInformation, "Edit Data")
'Jika yang dikliktombol
Cancel If PesanEdit =
vbCancel Then
'TextBoxKodeBarangmen
jadifokus
txtKodebarang.SetFocu
s 'Keluardari Sub
Procedure Exit Sub
End If
'JikaTextBoxNamaBarangkoson
g If txtNamaBarang.Value = ""
Then
'MenampilkankotakpesanNam
aBarangKosong
MsgBox "namabarangbelumdiisi", vbOKOnly, _
"NamaBarangKosong"
'TextBoxNamaBarangmenjadifokus
txtNamaBarang.SetFocus
'Keluardari Sub Procedure
Exit Sub
'JikaComboBoxSatuankosong
ElseIfcmbSatuan.Value = "" Then
'MenampilkankotakpesanSatuanKosong
MsgBox "Satuanbarangbelumdiisi",
vbOKOnly, _
"SatuanKosong"
'ComboBoxSatuanmenjadifokus
cmbSatuan.SetFocus
'Keluardari Sub Procedure
Exit Sub
'JikaTextBoxStokkosong
ElseIftxtStok.Value = "" Then - 49 -
'Menampilkankotakpesa
nStokKosong
'TextBoxStokmenjadifokus
txtStok.SetFocus
'Keluardari Sub Procedure
Exit Sub
End If
'MengeditnilaidariTextBoxNamaBarang
c.Offset(0, 1).Value = txtNamaBarang.Value
'MengeditnilaidariComboBoxSatuan
c.Offset(0, 2).Value = cmbSatuan.Value
'MengeditnilaidariTextBoxStok
c.Offset(0, 3).Value = CDbl(txtStok.Value)
End If
'TextBoxKodeBarangdikosongkan
txtKodebarang.Value = ""
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocus
'Memanggil Sub Procedure TampilkanSemua
Call TampilkanSemua
'Menyimpan workbook
ThisWorkbook.Save
End Sub

- 50 -
CmdHapus -
Click

Double klik tombol hapus dan masukkan kode berikut


Private Sub cmdHapus_Click()
'DeklarasivariabelwsTblBrg
Dim wsTblBrg As Worksheet
'Deklarasivariabel c
Dim c As Range
'DeklarasivariabelPesanHapus
Dim PesanHapusAs Integer
'wsTblBrgadalah worksheet TblBarang
Set wsTblBrg = Sheets("TblBarang")
'cmerupakanselhasilpencarianKodeBarang
Set c = wsTblBrg.Range("KodeBarang"). _
Find(txtKodebarang.Value, LookAt:=xlWhole, LookIn:=xlValues)
'Jikatidakadaselberisi kata kunciKodeBarang
If c Is Nothing Then
'Menampilkankotakpesan Data Tidak Ada
MsgBox "Data yang akandihapustidakada",
_
- 51 -
vbOKOnly + vbInformation, "Data Tidak Ada"
'TextBoxKodeBarangdikosongkan
txtKodebarang.Value = ""
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocus
'Keluardari Sub
Procedure Exit Sub
Else
'Menampilkankotakpesansebelum record data
dihapus PesanHapus = MsgBox("Record " & _
c.Offset(0, 1) & " akandihapus", _
vbOKCancel + vbInformation, "Hapus Data")
'Jika yang dikliktombol Cancel
If PesanHapus = vbCancel Then
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocus
'Keluardari Sub Procedure
Exit Sub
Else
'Hapu
s record
terpilih
Range(c, c.Offset(0, 3)).Delete _
Shift:=xlUp
End If
End If
'Text - 52 -
BoxKod
eBarang
txtKodebarang.Value = ""
'TextBoxKodeBarangmenjadifokus
txtKodebarang.SetFocus
'Memanggil Procedure TampilkanSemua
Call TampilkanSemua
'Menyimpan workbook
ThisWorkbook.Save
End Sub

CmdKeluar -
Click

Double kliktombolkeluardanmasukkankodeberikut :
Private Sub cmdKeluar_Click()
'Keluardari Form
Barang Unload Me
End Sub

- 53 -
listData - Click
Sebelummengisikan code ubah properties ListData
BoundColumn = 4
ColumnCount = 4

Double klik list data danmasukkankodeberikut :


Private Sub listData_Click()
With ListData
'Jika yang di klikbukanjudulListBox
If .ListIndex> 0 Then
'MengisiTextBoxKodeBarang
txtKodebarang.Value = .List(.ListIndex, 0)
'MengisiTextBoxNamaBarang
txtNamaBarang.Value = .List(.ListIndex, 1)
'MengisiComboBoxSatuan
cmbSatuan.Value = .List(.ListIndex, 2)
'MengisiTextBoxStok
txtStok.Value = _
Format(.List(.ListIndex, 3), "#,##0")
'Jika yang di klikjudulListBox
ElseIf .ListIndex = 0 Then
'TextBoxKodeBarangdikosongkan
txtKodebarang.Value = ""
'TextBoxNamaBarangdikosongkan
txtNamaBarang.Value = ""
'ComboBoxSatuandikosongkan
cmbSatuan.Value = ""
'TextBoxStokdikosongkan
txtStok.Value = ""
End If
End
With - 54 -
End Sub

listData -
DblClick

Double klik list data rubah bagian atas kanan menjadi dbl Click dan
masukkan kode berikut :
Private Sub listData_DblClick(ByVal Cancel As
MSForms.ReturnBoolean)
'Jika Form BarangMasuk ditampilkan
If formBarangMasuk.Visible = True Then
'Memasukkankodebarangke
Form BarangMasuk
formBarangMasuk.txtKodebarang.Value = _
ListData.List(ListData.ListIndex, 0)
'Keluardari Form Barang
Unload Me
'Keluardari Sub
Procedure Exit Sub
'Jika Form BarangKeluar ditampilkan
ElseIfformBarangKeluar.Visible = True Then
'Memasukkankodebarangke
Form BarangKeluar - 55 -
formBarangKeluar.txtKodebarang.Value = _
ListData.List(ListData.ListIndex, 0)
'Keluardari Form Barang
Unload Me
'Keluardari Sub
Procedure Exit Sub
'Jika Form Cetak
KartuStokBarangditampilkan
ElseIfformCetakKartuStok.Visible = True Then
'Memasukkankodebarangke Form Cetak
KartuStokBarang
formCetakKartuStok.txtKodebarang.Value = _
ListData.List(ListData.ListIndex, 0)
'Keluardari Form Barang
Unload Me
'Keluardari Sub
Procedure Exit Sub
End If
End Sub
Cobamasukkanbeberap
abarang& Data
akandisimpan di excel

- 56 -
Form Pemasok

Buka form pemasok yang sudah dibuat kemarin.

- 57 -
General - TampilkanSemua

Kita akan menambahkan 1 fungsi baru yg digunakan untuk semua proses


dalam form
Buka code edioratau double klik form Pemasok.
Pada bagian kiri atas Pilih General &masukkan full
code (masukkansemua code berikut) berikut :
Sub TampilkanSemua()
'DeklarasivariabelwsTblPmsk
Dim wsTblPmsk As Worksheet
'DeklarasivariabelrgTampil
Dim rgTampil As Range
'DeklarasivariabelsTampil
Dim sTampil As Range
'wsTblPmskadalah worksheet TblPemasok
Set wsTblPmsk = Sheets("TblPemasok")
'MenghapusListBox
ListData.Clear
With ListData

- 58 -
'MenambahkanjudulkolomListBox
.AddItem
'JudulListBoxkolompertama
.List(.ListCount - 1, 0) = "KodePemasok"
'JudulListBoxkolomkedua
.List(.ListCount - 1, 1) = "NamaPemasok"
'JudulListBoxkolomketiga
.List(.ListCount - 1, 2) = "Alamat"
'JudulListBoxkolomkeempat
.List(.ListCount - 1, 3) = "No Handphone"
End With
With wsTblPmsk
'rgTampiladalah range KodePemasok yang
ditampilkan Set rgTampil =
wsTblPmsk.Range("KodePemasok"). _
SpecialCells(xlCellTypeVisible)
'sTampilpengulangansetiapseldalamrgTampil
For Each sTampilInrgTampil
With ListData
'Memasukkan item kedalamListBox

.AddItem
'KodepemasokberdasarkannilaidalamsTampil
.List(.ListCount - 1, 0) = sTampil.Value
'Namapemasok 1
kolomsebelahkanansTampil
.List(.ListCount - 1, 1) = _
sTampil.Offset(0, 1).Value
- 59 -
'Alamatpemasok 2
kolomsebelahkanansTampil
.List(.ListCount - 1, 2) = _
sTampil.Offset(0, 2).Value
'No Handphonepemasok 3 kolomsebelahkanansTampil
.List(.ListCount - 1, 3) = _
sTampil.Offset(0, 3).Value
End With
Next sTampil
End With
End Sub

UserForm -
Active

Double klik form barang - Ubahfungsi Click bagian atas kanan menjadi
Active dan masukkan kode berikut :
Private Sub UserForm_Activate()

'DeklarasivariabelwsTblPmsk
Dim wsTblPmsk As Worksheet
'wsTblPmskadalah worksheet
TblPemasok
Set wsTblPmsk =
Sheets("TblPemasok") - 60 -
'Jikatabelpemasokkosong
If wsTblPmsk.Range("A3").Value = "" Then
'Keluardari Sub Procedure
Exit Sub
End If
'Jika data yang
ditampilkanmerupakanhasilpenyaringan If
wsTblPmsk.FilterMode Then
'Tampilkanseluruh data dalam worksheet
TblPemasok wsTblPmsk.ShowAllData
End If

'Memanggil Sub Procedure


TampilkanSemua Call TampilkanSemua
End Sub

CmdSimpan -
Click

Double klik tombol tambah&masukkan code berikut

Private Sub cmdSimpan_Click()


'DeklarasivariabelwsTblPmsk
Dim wsTblPmsk As Worksheet

- 61 -
'DeklarasivariabelRecordAkhir
Dim RecordAkhirAs Integer
'DeklarasivariabelCekSel
Dim CekSelAs Range
'wsTblPmskmerupakan worksheet TblPemasok
Set wsTblPmsk = Sheets("TblPemasok")

'RecordAkhirmerupakan record terakhirtabelpemasok


RecordAkhir = wsTblPmsk.Cells(wsTblPmsk.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row
'JikaTextBoxKodePemasokkosong
If txtKodePemasok.Value = "" Then
'MenampilkankotakpesanKodePemasokKosong
MsgBox "Kodepemasokbelumdiisi", _

vbOKOnly + vbCritical, "KodePemasokKosong"


'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFocus
'Keluardari Sub Procedure
Exit Sub
'JikaTextBoxNamaPemasokkosong
ElseIftxtNamaPemasok.Value = "" Then
'MenampilkankotakpesanNamaPemasokKoso
ng MsgBox "Namapemasokbelumdiisi", _
vbOKOnly + vbCritical,
"NamaPemasokKosong"
'TextBoxNamaPemasokmenjadifok
us txtNamaPemasok.SetFocus
'Keluardari Sub Procedure

- 62 -
Exit Sub
'JikaTextBoxAlamatkosong
ElseIftxtAlamat.Value = "" Then
'MenampilkankotakpesanAla
matKosong
MsgBox "Alamatpemasokbelumdiisi", vbOKOnly, _
"AlamatKosong"
'TextBoxAlamatmenjadifokus
txtAlamat.SetFocus
'Keluardari Sub Procedure
Exit Sub

'JikaTextBox No Handphonekosong
ElseIftxtNoHP.Value = "" Then
'Menampilkankotakpesan No
HandphoneKosong

MsgBox "No Handphonepemasokbelumdiisi", vbOKOnly, _


"No HandphoneKosong"
'TextBox No Handphonemenjadifokus
txtNoHP.SetFocus
'Keluardari Sub Procedure
Exit Sub
End If
'Jika data yang ditampilkanmerupakanhasilpenyaringan
If wsTblPmsk.FilterMode Then

'Tampilkanseluruh data dalam worksheet TblPemasok


wsTblPmsk.ShowAllData
'Jikatabelpemasoktidakkosong
End If
- 63 -
If wsTblPmsk.Range("A3").Value <> "" Then
'Memeriksaapakahkodepemasoksudahada
For Each CekSel In wsTblPmsk.Range("KodePemasok")
'Jikakodepemasoksamadenganisiselpadakolom A
If txtKodePemasok.Value = CekSel.Value Then
'MenampilkankotakpesanKodePemasokGanda
MsgBox "Kodepemasoksudahada", _
vbCritical + vbOKOnly, "KodePemasokGanda"
'TextBoxKodePemasokdikosongkan
txtKodePemasok.Value = ""
'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFocus
'Keluardari Sub
Procedure Exit Sub
End If
Next CekSel
End If
With
wsTblPmsk
'Masukka
nkodepema
sok di
bawah
record
terakhirkolo
mA

.Cells(RecordAkhir + 1, 1).Value =
txtKodePemasok.Value 'Masukkannamapemasokpada
.Cells(RecordAkhir + 1, 4).Value = txtNoHP.Value
record yang sama
.Cells(RecordAkhir + 1, 2).Value
- 64= -
txtNamaPemasok.Value
End With
'TextBoxKodePemasokdikosongkan
txtKodePemasok.Value = ""
'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFocus
'Memanggil Sub Procedure TampilkanSemua
Call TampilkanSemua
'Menyimpan workbook
ThisWorkbook.Save
End Sub

CmdEdit -
Click

Double kliktombol edit &masukkankodeberikut :


Private Sub cmdEdit_Click()
Dim wsTblPmsk As Worksheet
'Deklarasivariabel c
Dim c As Range
'DeklarasivariabelPesanEdit
Dim PesanEditAs Integer
- 65 -
'wsTblPmskmerupakan worksheet TblPemasok
Set wsTblPmsk = Sheets("TblPemasok")
'Jikatabelpemasokkosong
If wsTblPmsk.Range("A3").Value = "" Then
'MenampilkankotakpesanTabelKosong
MsgBox "Tabelpemasokmasihkosong", _

vbOKOnly + vbInformation, "TabelKosong"


'Keluardari Sub Procedure
Exit Sub
End If
'cmerupakanselhasilpencariankodepemasok
Set c = wsTblPmsk.Range("KodePemasok"). _
Find(txtKodePemasok.Value, LookAt:=xlWhole, LookIn:=xlValues)
'Jikatidakadaselberisi kata kunciKodePemasok
If c Is Nothing Then
'Menampilkankotakpesan Data Tidak Ada
MsgBox "Data yang akandiedittidakada", _
vbOKOnly + vbInformation, "Data Tidak Ada"
'TextBoxKodePemasokdikosongkan
txtKodePemasok.Value = ""
'TextBoxKodePemasokmenjadifok
us txtKodePemasok.SetFocus
'Keluardari Sub Procedure
Exit Sub
Else

'Menampilkankotakpesansebelum record data diedit

- 66 -
PesanEdit = MsgBox("Record " & _
c.Offset(0, 1).Value & " akandiedit", _
vbOKCancel + vbInformation, "Edit Data")
'Jika yang dikliktombol Cancel
If PesanEdit = vbCancel
Then
'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFocus
'Keluardari Sub Procedure
Exit Sub
End If
'JikaTextBoxNamaPemasokkosong
If txtNamaPemasok.Value = "" Then
'MenampilkankotakpesanNamaPemasokKosong
MsgBox "Namapemasokbelumdiisi", vbOKOnly, _
"NamaPemasokKosong"
'TextBoxNamaPemasokmenjadifokus
txtNamaPemasok.SetFocus
'Keluardari Sub Procedure
Exit Sub
'JikaTextBoxAlamatkosong
ElseIftxtAlamat.Value = "" Then
'MenampilkankotakpesanAlamatKosong

MsgBox "Alamatpemasokbelumdiisi", vbOKOnly, _


"AlamatKosong"
'TextBoxAlamatmenjadifokus
txtAlamat.SetFocus

- 67 -
'Keluardari Sub Procedure
Exit Sub
'JikaTextBox No Handphonekosong
ElseIftxtNoHP.Value = "" Then
'Menampilkankotakpesan No
HandphoneKosong
MsgBox "No Handphonepemasokbelumdiisi", vbOKOnly, _
"No HandphoneKosong"
'TextBox No Handphonemenjadifokus
txtNoHP.SetFocus
'Keluardari Sub Procedure
Exit Sub
End If 'MengeditnilaidariTextBoxNamaPemasok
c.Offset(0, 1).Value = txtNamaPemasok.Value
'MengeditnilaidariTextBoxAlamat
c.Offset(0, 2).Value = txtAlamat.Value
'MengeditnilaidariTextBox No Handphone
c.Offset(0, 3).Value = txtNoHP.Value
End If
'TextBoxKodePemasokdikosongkan
txtKodePemasok.Value = ""
'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFocus
'Memanggil Sub Procedure TampilkanSemua
Call TampilkanSemua
'Menyimpan workbook

- 68 -
ThisWorkbook.Save
End Sub

CmdHapus -
Click

Double kliktombol hapus dan masukkan kode berikut


Private Sub cmdHapus_Click()
'DeklarasivariabelwsTblPmsk
Dim wsTblPmsk As Worksheet
'Deklarasivariabel c
Dim c As Range
'DeklarasivariabelPesanHapus
Dim PesanHapusAs Integer
'wsTblPmskadalah worksheet TblPemasok
Set wsTblPmsk = Sheets("TblPemasok")
'cmerupakanselhasilpencarianKodePemasok
Set c = wsTblPmsk.Range("KodePemasok"). _
Find(txtKodePemasok.Value, LookAt:=xlWhole, LookIn:=xlValues)
'Jikatidakadaselberisi kata kunciKodePemasok

- 69 -
If c Is Nothing Then
'Menampilkankotakpesan Data Tidak Ada
MsgBox "Data yang akandihapustidakada", _
vbOKOnly + vbInformation, "Data Tidak Ada"
'TextBoxKodePemasokdikosongkan
txtKodePemasok.Value = ""
'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFo
cus 'Keluardari Sub
Procedure Exit Sub
Else
'Menampilkankotakpesansebelum record data
dihapus PesanHapus = MsgBox("Record " & _
c.Offset(0, 1) & " akandihapus", _
vbOKCancel + vbInformation, "Hapus Data")
'Jika yang dikliktombol Cancel
If PesanHapus = vbCancel Then
'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFocus
'Keluardari Sub Procedure
Exit Sub
Else
'Hap
us
record
terpilih
Range(c, c.Offset(0, 3)).Delete _
Shift:=xlUp
- 70 -
End If
End If
'TextBoxKodePemasokdikosongkan
txtKodePemasok.Value = ""
'TextBoxKodePemasokmenjadifokus
txtKodePemasok.SetFocus
'Memanggil Procedure TampilkanSemua
Call TampilkanSemua
'Menyimpan workbook
ThisWorkbook.Save
End Sub

CmdKeluar -
Click

Double klik tombol keluar dan masukkan kode berikut :


Private Sub cmdKeluar_Click()
'Keluardari Form
Pemasok Unload Me
End Sub

- 71 -
listData - Click
Sebelum mengisikan code ubah properties ListData
BoundColumn = 4
ColumnCount = 4

Double klik list data dan masukkan kode berikut :


Private Sub listData_Click()
With listData
'Jika yang di klikbukanjudulListBox
If .ListIndex> 0 Then
'MengisiTextBoxKodePemasok
txtKodePemasok.Value = .List(.ListIndex, 0)
'MengisiTextBoxNamaPemasok
txtNamaPemasok.Value = .List(.ListIndex, 1)
'MengisiTextBoxAlamat
txtAlamat.Value = .List(.ListIndex, 2)
'MengisiTextBox No Handphone
txtNoHP.Value = .List(.ListIndex, 3)
'Jika yang di klikjudulListBox
ElseIf .ListIndex = 0 Then
- 72 -
'TextBoxKodePemasokdikosongkan
txtKodePemasok.Value = ""
'TextBoxNamaPemasokdikosongkan
txtNamaPemasok.Value = ""
'TextBoxAlamatdikosongkan
txtAlamat.Value = ""

'TextBox No Handphonedikosongkan
txtNoHP.Value = ""
End If
End With
End Sub

listData -
DblClick

Double klik list data rubah bagian atas kanan menjadi dblClick dan
masukkan kode berikut :
Private Sub listData_DblClick(ByVal Cancel As
MSForms.ReturnBoolean)
'Jika Form BarangMasuk ditampilkan
If formBarangMasuk.Visible = True Then

- 73 -
'Memasukkankodepemasokke Form BarangMasuk
formBarangMasuk.txtKodePemasok.Value = _
listData.List(listData.ListIndex, 0)
'Keluardari Form Pemasok
Unload Me
'Keluardari Sub Procedure
Exit Sub
End If
End Sub

Cobamasukkanbeberapa Data Pemasok& Data akandisimpan di


excel

- 74 -
Form Konsumen

Buka form Kosumen yang sudahdibuatkemarin.

- 75 -
General - TampilkanSemua

Kita akan menambahkan 1 fungsi baru yg digunakan untuk semua proses


dalam form
Buka code edioratau double klik form Konsumen.
Pada bagian kiri atas Pilih General &masukkan full code (masukkan
semua code berikut) berikut :
Sub TampilkanSemua()
'DeklarasivariabelwsTblKnsmn
Dim wsTblKnsmn As Worksheet
'DeklarasivariabelrgTampil
Dim rgTampil As Range
'DeklarasivariabelsTampil
Dim sTampil As Range
'wsTblKnsmnadalah worksheet TblKonsumen
Set wsTblKnsmn = Sheets("TblKonsumen")
'MenghapusListBox

listData.Clear
With listData

- 76 -
'MenambahkanjudulkolomListBox
.AddItem
'JudulListBoxkolompertama
.List(.ListCount - 1, 0) = "KodeKonsumen"
'JudulListBoxkolomkedua
.List(.ListCount - 1, 1) = "NamaKonsumen"
'JudulListBoxkolomketiga
.List(.ListCount - 1, 2) = "Alamat"
'JudulListBoxkolomkeempat
.List(.ListCount - 1, 3) = "No Handphone"
End With
With wsTblKnsmn
'rgTampiladalah range KodeKonsumen yang
ditampilkan Set rgTampil =
wsTblKnsmn.Range("KodeKonsumen"). _
SpecialCells(xlCellTypeVisible)
'sTampilpengulangansetiapseldalamrgTampil
For Each sTampilInrgTampil
With listData
'Memasukkan item kedalamListBox

.AddItem
'KodekonsumenberdasarkannilaidalamsTampil
.List(.ListCount - 1, 0) = sTampil.Value
'Namakonsumen 1
kolomsebelahkanansTampil
.List(.ListCount - 1, 1) = _
sTampil.Offset(0, 1).Value
- 77 -
'Alamatkonsumen 2
kolomsebelahkanansTampil
.List(.ListCount - 1, 2) = _
sTampil.Offset(0, 2).Value
'No Handphonekonsumen 3 kolomsebelahkanansTampil
.List(.ListCount - 1, 3) = _
sTampil.Offset(0, 3).Value
End With
Next sTampil
End With
End Sub

UserForm -
Active

Double klik form barang - Ubah fungsi Click bagian atas kanan menjadi
Active dan masukkan kode berikut :
Private Sub UserForm_Activate()
'DeklarasivariabelwsTblKnsmn
Dim wsTblKnsmn As Worksheet
'wsTblKnsmnadalah worksheet TblKonsumen
Set wsTblKnsmn = Sheets("TblKonsumen")

- 78 -
'Jikatabelkonsumenkosong
If wsTblKnsmn.Range("A3").Value = "" Then
'Keluardari Sub Procedure
Exit Sub
End If
'Jika data yang
ditampilkanmerupakanhasilpenyaringan If
wsTblKnsmn.FilterMode Then
'Tampilkanseluruh data dalam worksheet
TblKonsumen wsTblKnsmn.ShowAllData
End If

'Memanggil Sub Procedure


TampilkanSemua Call TampilkanSemua
End Sub

- 79 -
CmdSimpan -
Click

Double klik tombol tambah&masukkan code berikut

Private Sub cmdSimpan_Click()


'DeklarasivariabelwsTblKnsmn
Dim wsTblKnsmn As Worksheet
'DeklarasivariabelRecordAkhir
Dim RecordAkhirAs Integer
'DeklarasivariabelCekSel
Dim CekSelAs Range
'wsTblKnsmnmerupakan worksheet TblKonsumen
Set wsTblKnsmn = Sheets("TblKonsumen")
'RecordAkhirmerupakan record
terakhirtabelkonsumen
RecordAkhir = wsTblKnsmn.Cells(wsTblKnsmn.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row
'JikaTextBoxKodeKonsumenkosong
If txtKodeKonsumen.Value = "" Then
'MenampilkankotakpesanKodeKonsumenKosong
MsgBox "Kodekonsumenbelumdiisi", _
- 80 -
vbOKOnly + vbCritical, "KodeKonsumenKosong"
'TextBoxKodeKonsumenmenjadifokus
txtKodeKonsumen.SetFocus
'Keluardari Sub Procedure
Exit Sub
'JikaTextBoxNamaKonsumenkosong
ElseIftxtNamaKonsumen.Value = "" Then
'MenampilkankotakpesanNamaKonsumenKoso
ng MsgBox "Namakonsumenbelumdiisi", _
vbOKOnly + vbCritical, "NamaKonsumenKosong"
'TextBoxNamaKonsumenmenjadifokus
txtNamaKonsumen.SetFo
cus 'Keluardari Sub
Procedure Exit Sub
'JikaTextBoxAlamatkosong
ElseIftxtAlamat.Value = "" Then
'MenampilkankotakpesanA
lamatKosong
MsgBox "Alamatkonsumenbelumdiisi", vbOKOnly, _
"AlamatKosong"
'TextBoxAlamatmenjadifokus
txtAlamat.SetFocus
'Keluardari Sub Procedure
Exit Sub
'JikaTextBox No Handphonekosong
ElseIftxtNoHP.Value = "" Then
'Menampilkankotakpesan No
HandphoneKosong - 81 -
MsgBox "No Handphonekonsumenbelumdiisi", vbOKOnly, _
"No HandphoneKosong"
'TextBox No Handphonemenjadifokus
txtNoHP.SetFocus
'Keluardari Sub Procedure
Exit Sub
End If
'Jika data yang ditampilkanmerupakanhasilpenyaringan
If wsTblKnsmn.FilterMode Then
'Tampilkanseluruh data dalam worksheet TblKonsumen
wsTblKnsmn.ShowAllData
End If
'Jikatabelkonsumentidakkosong

If wsTblKnsmn.Range("A3").Value <> "" Then


'Memeriksaapakahkodekonsumensudahada
For Each CekSel In
wsTblKnsmn.Range("KodeKonsumen")
'Jikakodekonsumensamadenganisiselpadakolom A If
txtKodeKonsumen.Value = CekSel.Value Then
'MenampilkankotakpesanKodeKonsumenGanda
MsgBox "Kodekonsumensudahada", _
vbCritical + vbOKOnly, "KodeKonsumenGanda"
'TextBoxKodeKonsumendikosongkan
txtKodeKonsumen.Value = ""
'TextBoxKodeKonsumenmenjadifokus
txtKodeKonsumen.SetFocus
'Keluardari Sub Procedure
- 82 -
Exit Sub
End If
Next CekSel
End If
With
wsTblKnsmn
'Masukka
nkodekonsu
men di
bawah
record
terakhirkolo
mA

.Cells(RecordAkhir + 1, 1).Value =
txtKodeKonsumen.Value 'Masukkannamakonsumenpada
record yang sama
.Cells(RecordAkhir + 1, 2).Value =
txtNamaKonsumen.Value
'Masukkanalamatpada record yang sama

.Cells(RecordAkhir + 1, 3).Value =
txtAlamat.Value 'Masukkan No Handphonepada
record yang sama
.Cells(RecordAkhir + 1, 4).Value =
txtNoHP.Value

End With
'TextBoxKodeKonsumendikosongkan
txtKodeKonsumen.Value = ""
'TextBoxKodeKonsumenmenjadifo
kus
txtKodeKonsumen.SetFocus
'Memanggil Sub Procedure - 83 -
TampilkanSemua Call TampilkanSemua
CmdEdit -
Click

Double kliktombol edit &masukkankodeberikut :


Private Sub cmdEdit_Click()
'DeklarasivariabelwsTblKnsmn
Dim wsTblKnsmn As Worksheet
'Deklarasivariabel c
Dim c As Range
'DeklarasivariabelPesanEdit
Dim PesanEditAs Integer
'wsTblKnsmnmerupakan worksheet TblKonsumen
Set wsTblKnsmn = Sheets("TblKonsumen")
'Jikatabelkonsumenkosong
If wsTblKnsmn.Range("A3").Value = "" Then
'MenampilkankotakpesanTabelKosong
MsgBox "Tabelkonsumenmasihkosong", _
vbOKOnly + vbInformation, "TabelKosong"
'Keluardari Sub Procedure
Exit Sub
- 84 -
End If
'cmerupakanselhasilpencariankodekonsumen
Set c = wsTblKnsmn.Range("KodeKonsumen"). _
Find(txtKodeKonsumen.Value, LookAt:=xlWhole, LookIn:=xlValues)
'Jikatidakadaselberisi kata kunciKodeKonsumen
If c Is Nothing Then
'Menampilkankotakpesan Data Tidak Ada
MsgBox "Data yang akandiedittidakada", _
vbOKOnly + vbInformation, "Data Tidak Ada"
'TextBoxKodeKonsumendikosongkan
txtKodeKonsumen.Value = ""
'TextBoxKodeKonsumenmenjadifokus
txtKodeKonsumen.SetFocus
'Keluardari Sub Procedure
Exit Sub
Else
'Menampilkankotakpesansebelum record data
diedit PesanEdit = MsgBox("Record " & _
c.Offset(0, 1).Value & " akandiedit", _
vbOKCancel + vbInformation, "Edit Data")
'Jika yang dikliktombol
Cancel If PesanEdit =
vbCancel Then
'TextBoxKodeKonsumen
menjadifokus
txtKodeKonsumen.SetFo
cus 'Keluardari Sub
- 85 -
Procedure Exit Sub
End If
'JikaTextBoxNamaKonsumenkosong
If txtNamaKonsumen.Value = "" Then
'MenampilkankotakpesanNamaKonsumenKosong
MsgBox "Namakonsumenbelumdiisi", vbOKOnly, _
"NamaKonsumenKosong"
'TextBoxNamaKonsumenmenjadifokus
txtNamaKonsumen.SetFo
cus 'Keluardari Sub
Procedure Exit Sub

'JikaTextBoxAlamatkosong
ElseIftxtAlamat.Value = "" Then
'MenampilkankotakpesanA
lamatKosong

MsgBox "Alamatkonsumenbelumdiisi", vbOKOnly, _


"AlamatKosong"
'TextBoxAlamatmenjadifokus
txtAlamat.SetFocus
'Keluardari Sub Procedure
Exit Sub

'JikaTextBox No Handphonekosong
ElseIftxtNoHP.Value = "" Then
'Menampilkankotakpesan No
HandphoneKosong

MsgBox "No Handphonekonsumenbelumdiisi", vbOKOnly, _


"No HandphoneKosong"
'TextBox No Handphonemenjadifokus
txtNoHP.SetFocus - 86 -
'Keluardari Sub Procedure
Exit Sub
End If
'MengeditnilaidariTextBoxNamaKonsumen
c.Offset(0, 1).Value = txtNamaKonsumen.Value
'MengeditnilaidariTextBoxAlamat
c.Offset(0, 2).Value = txtAlamat.Value
'MengeditnilaidariTextBox No
Handphone c.Offset(0, 3).Value =
txtNoHP.Value
End If
'TextBoxKodeKonsumendikosongkan
txtKodeKonsumen.Value = ""
'TextBoxKodeKonsumenmenjadifokus
txtKodeKonsumen.SetFocus
'Memanggil Sub Procedure
TampilkanSemua Call TampilkanSemua
'Menyimpan
workbook
ThisWorkbook.Save
End Sub

- 87 -
CmdHapus -
Click

Double klik tombol hapus dan masukkan kode berikut


Private Sub cmdHapus_Click()
'DeklarasivariabelwsTblKnsmn
Dim wsTblKnsmn As Worksheet
'Deklarasivariabel c
Dim c As Range
'DeklarasivariabelPesanHapus
Dim PesanHapusAs Integer
'wsTblKnsmnadalah worksheet TblKonsumen
Set wsTblKnsmn = Sheets("TblKonsumen")
'cmerupakanselhasilpencarianKodeKonsumen
Set c =
wsTblKnsmn.Range("KodeKonsumen"). _
Find(txtKodeKonsumen.Value, LookAt:=xlWhole, LookIn:=xlValues)
'Jikatidakadaselberisi kata kunciKodeKonsumen
If c Is Nothing Then
'Menampilkankotakpesan Data Tidak Ada
MsgBox "Data yang akandihapustidakada",
_
- 88 -
vbOKOnly + vbInformation, "Data Tidak Ada"
'TextBoxKodeKonsumendikosongkan
txtKodeKonsumen.Value = ""
'TextBoxKodeKonsumenmenjadifokus
txtKodeKonsumen.SetFocus
'Keluardari Sub Procedure

Exit Sub
Else
'Men
ampilka
nkotakp
esanseb
elum
record
data
dihapus
PesanHapus = MsgBox("Record " & _
c.Offset(0, 1) & " akandihapus", _
vbOKCancel + vbInformation, "Hapus Data")
'Jika yang dikliktombol Cancel

If PesanHapus = vbCancel Then


'TextBoxKodeKonsumenmenjadifokus
txtKodeKonsumen.SetFocus
'Keluardari Sub Procedure
Exit Sub
Else
'Hap
us
record
terpilih
Range(c, c.Offset(0, 3)).Delete- 89
_ -
Shift:=xlUp
'TextBoxKodeKonsumenmenjadifokus
txtKodeKonsumen.SetFocus
'Memanggil Procedure TampilkanSemua
Call TampilkanSemua
'Menyimpan workbook
ThisWorkbook.Save
End Sub

CmdKeluar -
Click

Double klik tombol keluar dan masukkan kode berikut :


Private Sub cmdKeluar_Click()
'Keluardari Form
Konsumen Unload Me
End Sub

- 90 -
listData - Click
Sebelummengisikan code ubah properties ListData
BoundColumn = 4
ColumnCount = 4

Double klik list data danmasukkankodeberikut :


Private Sub listData_Click()
With listData

'Jika yang di klikbukanjudulListBox


If .ListIndex> 0 Then
'MengisiTextBoxKodeKonsumen
txtKodeKonsumen.Value = .List(.ListIndex, 0)
'MengisiTextBoxNamaKonsumen
txtNamaKonsumen.Value = .List(.ListIndex, 1)
'MengisiTextBoxAlamat
txtAlamat.Value = .List(.ListIndex, 2)
'MengisiTextBox No Handphone
txtNoHP.Value = .List(.ListIndex, 3)
'Jika yang di klikjudulListBox

- 91 -
ElseIf .ListIndex = 0 Then
'TextBoxKodeKonsumendikosongkan
txtKodeKonsumen.Value = ""
'TextBoxNamaKonsumendikosongkan
txtNamaKonsumen.Value = ""
'TextBoxAlamatdikosongkan
txtAlamat.Value = ""
'TextBox No Handphonedikosongkan
txtNoHP.Value = ""
End If
End
With
End
Sub
listData -
DblClick

Double klik list data rubah bagian atas kanan menjadi dblClick dan
masukkan kode berikut :

- 92 -
Private Sub listData_DblClick(ByVal Cancel As
MSForms.ReturnBoolean)
'Jika Form BarangKeluar ditampilkan
If formBarangKeluar.Visible = True Then
'Memasukkankodekonsumenke Form BarangKeluar
formBarangKeluar.txtKodeKonsumen.Value = _
listData.List(listData.ListIndex, 0)

'Keluardari Form Konsumen


Unload Me
'Keluardari Sub Procedure
Exit Sub
End If
End Sub

Cobamasukkanbeberapa Data Konsumen& Data akandisimpan


di excel

- 93 -
Form Barang Masuk

Buka form Barang Masuk yang sudah dibuat kemarin.

- 94 -
General - TampilkanJudul

kita akan menambahkan 1 fungsi baru yg digunakan untuk semua proses


dalam form
Buka code edior atau double klik form Barang Masuk.
Pada bagian kiri atas Pilih General & masukkan full code (masukkan
semua code berikut) berikut :
Sub TampilkanJudul()
'Menghapus ListBox
listData.Clear
With listData
'Menambahkan judul
kolom ListBox
.AddItem
'Judul ListBox kolom
pertama
.List(.ListCount - 1, 0) = "Kode Barang"
'Judul ListBox kolom kedua
.List(.ListCount - 1, 1) = "Nama Barang"
'Judul ListBox kolom ketiga
.List(.ListCount - 1, 2) = "Satuan"
- 95 -
'Judul ListBox kolom keempat
.List(.ListCount - 1, 3) = "Stok"
'Judul ListBox kolom kelima
.List(.ListCount - 1, 4) = "Brg Masuk"
'Judul ListBox kolom keenam
.List(.ListCount - 1, 5) = "Stok Akhir"
End With
End Sub

UserForm - Active

Double klik form barang Masuk - Ubah fungsi Click bagian atas kanan
menjadi Active dan masukkan kode berikut :
Private Sub UserForm_Activate()
'Memanggil Sub Procedure TampilkanJudul
Call TampilkanJudul
'TextBox Stok bernilai 0
txtStok.Value = 0
'TextBox Jumlah Masuk
bernilai 0
txtJumlahMasuk.Value = 0
'TextBox Stok Akhir bernilai 0
txtStokAkhir.Value = 0
End Sub

- 96 -
CmdFormPemasok -
Click

Double klik tombol cmd form pemasok & masukkan code berikut

Private Sub cmdFormPemasok_Click()


'Menampilkan Form Pemasok
formPemasok.Show
End Sub

txtKodePemasok -
Change

Double klik isian kode pemasok / txtKodepemasok, ganti click bagian atas
kanan dengan change & masukkan code berikut

Private Sub txtKodePemasok_Change()


'Deklarasi variabel wsTblPmsk
Dim wsTblPmsk As Worksheet
'Deklarasi variabel
rgKodePemasok
- 97 -
Dim rgKodePemasok As Range
'Deklarasi variabel c
Dim c As Range
'wsTblPmsk adalah worksheet TblPemasok
Set wsTblPmsk = Sheets("TblPemasok")
'Jika sel A3 worksheet TblPemasok masih kosong
If wsTblPmsk.Range("A3").Value = "" Then
'Keluar dari Sub Procedure
Exit Sub
Else
'rgKodePemasok adalah
range KodePemasok
Set rgKodePemasok = wsTblPmsk.Range("KodePemasok")
'Pencarian pada range KodePemasok
With rgKodePemasok
'c merupakan sel hasil pencarian
Set c = .Find(txtKodePemasok.Value, _
LookAt:=xlWhole, LookIn:=xlValues)
'Jika tidak ada sel berisi kata kunci Kode Pemasok If
c Is Nothing Then

'TextBox Nama Pemasok dikosongkan


txtNamaPemasok.Value = ""
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Nama Pemasok
Else
'Mengisi TextBox Nama Pemasok
- 98 -
txtNamaPemasok.Value = c.Offset(0, 1).Value
End If
End
With
End If
End Sub

CmdFormBarang -
Click

Double klik tombol form barang / cmdFormBarang & masukkan code


berikut

Private Sub cmdFormBarang_Click()


'Menampilkan Form Barang
formBarang.Show
End Sub

- 99 -
txtKodeBarang -
Change

Double klik isian kode Barang / txtKodeBarang, ganti click bagian atas
kanan dengan change & masukkan code berikut
Private Sub txtKodeBarang_Change()

'Deklarasi variabel wsTblBrg


Dim wsTblBrg As Worksheet
'Deklarasi variabel
rgKodeBarang
Dim rgKodeBarang As Range
'Deklarasi variabel c
Dim c As Range
'wsTblBrg adalah worksheet TblBarang
Set wsTblBrg = Sheets("TblBarang")
'Jika sel A3 worksheet TblBarang masih kosong
If wsTblBrg.Range("A3").Value = "" Then
'Keluar dari Sub Procedure
Exit Sub
Else
'rgKodeBarang adalah
range KodeBarang - 100 -
Set rgKodeBarang = wsTblBrg.Range("KodeBarang")
'Pencarian pada range KodeBarang
With rgKodeBarang
'c merupakan sel hasil pencarian
Set c = .Find(txtKodeBarang.Value, _
LookAt:=xlWhole, LookIn:=xlValues)

'Jika tidak ada sel berisi kata kunci Kode Barang If


c Is Nothing Then
'TextBox Nama Barang dikosongkan
txtNamaBarang.Value = ""
'TextBox Satuan dikosongkan
txtSatuan.Value = ""
'TextBox Stok 0

txtStok.Value = 0 'TextBox
Jumlah Masuk 0
txtJumlahMasuk.Value = 0
'TextBox Stok Akhir 0
txtStokAkhir.Value = 0
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Kode Barang
Else
'Mengisi TextBox Nama Barang
txtNamaBarang.Value = c.Offset(0, 1).Value
'Mengisi TextBox Satuan
txtSatuan.Value = c.Offset(0, 2).Value

- 101 -
'Mengisi TextBox Stok
txtStok.Value = c.Offset(0, 3).Value
End If
End With
End If
End Sub

txtStok -
Change

Double klik isian Stok / txtStok, ganti click bagian atas kanan
dengan change & masukkan code berikut
Private Sub txtStok_Change()
'Jika TextBox Stok bernilai 0
If txtStok = 0 Then

'Keluar dari Sub Procedure


Exit Sub
End If
'Mengisi TextBox Stok Akhir
txtStokAkhir.Value = _
Format(CDbl(txtStok.Val
ue) +
CDbl(txtJumlahMasuk.Va
lue), "#,##0")
- 102 -
End Sub
txtJumlahMasuk -
Change

Double klik isian Jumlah Masuk/ txJumlahMasuk, ganti click bagian atas
kanan dengan change & masukkan code berikut
Private Sub txtJumlahMasuk_Change()
'Jika nilai TextBox Jumlah Masuk kosong
If txtJumlahMasuk.Value = "" Then
txtStokAkhir.Value = txtStok.Value
'Keluar dari Sub Procedure
Exit Sub
End If
'Mengisi TextBox Stok
Akhir txtStokAkhir.Value =
_
Format(CDbl(txtStok.
Value) +
CDbl(txtJumlahMasuk.Va
lue), "#,##0")
End Sub

- 103 -
txtJumlahMasuk -
KeyPass

Double klik isian Jumlah Masuk/ txJumlahMasuk, ganti click bagian atas
kanan dengan KeyPass& masukkan code berikut
Private Sub txtJumlahMasuk_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)

'Jika nilai TextBox Jumlah Masuk kosong


If txtJumlahMasuk.Value = "" Then
txtStokAkhir.Value = txtStok.Value
'Keluar dari Sub Procedure
Exit Sub
End If

'Mengisi TextBox Stok Akhir


txtStokAkhir.Value = _
Format(CDbl(txtStok.Val
ue) +
CDbl(txtJumlahMasuk.Va
lue), "#,##0")
End Sub

- 104 -
CmdTambah - Click

Double klik tombol Tambah & masukkan code berikut

Private Sub cmdTambah_Click()


'Deklarasi variabel wsTblBrg
Dim wsTblBrg As Worksheet
'Deklarasi variabel rgKodeBarang
Dim rgKodeBarang As Range
'Deklarasi variabel c
Dim c As Range
'Deklarasi variabel CekKode
Dim CekKode As Integer
'wsTblBrg adalah
worksheet TblBarang
Set wsTblBrg = Sheets("TblBarang")
'Jika TextBox Jumlah Masuk kosong
If txtJumlahMasuk.Value = "" Or txtJumlahMasuk.Value = 0 Then
'Menampilkan kotak pesan Jumlah Masuk Kosong
MsgBox "Jumlah masuk belum diisi", _
vbOKOnly + vbCritical, "Jumlah Masuk
- 105 - Kosong"
'TextBox Jumlah Masuk menjadi fokus
txtJumlahMasuk.SetFocus
'Keluar dari Sub Procedure
Exit Sub
End If
'Jika sel A3 worksheet TblBarang masih kosong
If wsTblBrg.Range("A3").Value = "" Then
'Keluar dari Sub Procedure
Exit Sub
Else
'rgKodeBarang adalah
range KodeBarang
Set rgKodeBarang = wsTblBrg.Range("KodeBarang")
'Pencarian pada range KodeBarang
With rgKodeBarang
'c merupakan sel hasil pencarian
Set c = .Find(txtKodeBarang.Value, _
LookAt:=xlWhole, LookIn:=xlValues)
'Jika tidak ada sel berisi kata kunci Kode Barang If
c Is Nothing Then

'Menampilkan kotak pesan Barang Tidak Ada


MsgBox "Tidak ada barang dalam tabel", _
vbCritical + vbOKOnly, "Barang Tidak Ada"

'TextBox Kode Barang dikosongkan


txtKodeBarang.Value = ""
'TextBox Kode Barang menjadi fokus
txtKodeBarang.SetFocus
- 106 -
'Keluar dari Sub Procedure
Exit Sub
End If
End With
End If
With
listData

'Pengulangan untuk mengecek kode


barang For CekKode = 1 To .ListCount - 1
'Jika kode barang ada dalam ListBox
If .List(CekKode, 0) = txtKodeBarang.Value Then
'Memasukkan kode barang
.List(CekKode, 0) = txtKodeBarang.Value
'Memasukkan nama barang

.List(CekKode, 1) = txtNamaBarang.Value
'Memasukkan satuan
.List(CekKode, 2) = txtSatuan.Value
'Memasukkan stok
.List(CekKode, 3) = Format(txtStok.Value, "#,##0")
'Memasukkan jumlah masuk

.List(CekKode, 4) = Format(txtJumlahMasuk.Value, "#,##0")


'Memasukkan stok akhir
.List(CekKode, 5) = Format(txtStokAkhir.Value, "#,##0")

'TextBox Kode Barang dikosongkan


txtKodeBarang.Value = ""
'TextBox Kode Barang menjadi fokus
txtKodeBarang.SetFocus
- 107 -
'Keluar dari Sub Procedure
Exit Sub
End If
Next
CekKode
.AddItem
'Memasukk
an kode
barang

.List(.ListCount - 1, 0) =
txtKodeBarang.Value 'Memasukkan nama
barang
.List(.ListCount - 1, 1) =
txtNamaBarang.Value
'Memasukkan satuan

.List(.ListCount - 1, 2) =
txtSatuan.Value 'Memasukkan stok
.List(.ListCount - 1, 3) =
Format(txtStok.Value, "#,##0")
'Memasukkan jumlah masuk
.List(.ListCount - 1, 4) = Format(txtJumlahMasuk.Value,
"#,##0") 'Memasukkan stok akhir
.List(.ListCount - 1, 5) = Format(txtStokAkhir.Value,
"#,##0") 'TextBox Kode Barang dikosongkan
txtKodeBarang.Value = ""

'TextBox Kode Barang menjadi


fokus txtKodeBarang.SetFocus
End With
End Sub - 108 -
CmdHapus -
Click

Double klik tombol Hapus & masukkan code berikut

Private Sub cmdHapus_Click()


'Jika ListBox yang dipilih bukan judul kolom
If listData.ListIndex > 0 Then
'Menghapus item ListBox yang dipilih
listData.RemoveItem (listData.ListIndex)
End If
End Sub

- 109 -
CmdSimpan -
Click

Double klik tombol tambah & masukkan code berikut

Private Sub cmdSimpan_Click()


Dim wsTblBrg As Worksheet
'Deklarasi variabel wsTblMsk
Dim wsTblMsk As Worksheet
'Deklarasi variabel wsTblDtlMsk
Dim wsTblDtlMsk As Worksheet
'Deklarasi variabel wsTblKrtStok
Dim wsTblKrtStok As Worksheet
'Deklarasi variabel CekSel
Dim CekSel As Range
'Deklarasi variabel No
Dim No As Integer
'Deklarasi variabel c
Dim c As Range
'Deklarasi variabel
RecordAkhir
- 110 -
Dim RecordAkhir As Integer
'Deklarasi variabel RecordAkhirDtl
Dim RecordAkhirDtl As Integer
'Deklarasi variabel RecordAkhirKrt
Dim RecordAkhirKrt As Integer
'wsTblBrg adalah worksheet TblBarang
Set wsTblBrg = Sheets("TblBarang")
'wsTblMsk merupakan worksheet TblMasuk
Set wsTblMsk = Sheets("TblMasuk")
'wsTblDtlMsk merupakan worksheet TblDtlMasuk
Set wsTblDtlMsk = Sheets("TblDtlMasuk")
'wsTblKrtStok merupakan worksheet TblKartuStok
Set wsTblKrtStok = Sheets("TblKartuStok")
'RecordAkhir merupakan record terakhir tabel masuk
RecordAkhir = wsTblMsk.Cells(wsTblMsk.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row
'RecordAkhirDtl merupakan record terakhir tabel detail masuk
RecordAkhirDtl = wsTblDtlMsk.Cells(wsTblDtlMsk.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row

'RecordAkhirKrt merupakan record terakhir tabel kartu stok barang


RecordAkhirKrt = wsTblKrtStok.Cells(wsTblKrtStok.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row

'Jika TextBox No Masuk kosong


If txtNoMasuk.Value = "" Then
'Menampilkan kotak pesan No
Masuk Kosong
MsgBox "No masuk belum
diisi", _ - 111 -
vbOKOnly + vbCritical, "No Masuk Kosong"
'TextBox No Masuk menjadi fokus
txtNoMasuk.SetFocus
'Keluar dari Sub Procedure
Exit Sub
'Jika TextBox Tanggal Masuk kosong
ElseIf txtTanggalMasuk.Value = "" Then
'Menampilkan kotak pesan Tanggal Masuk Kosong
MsgBox "Tanggal masuk belum diisi", _
vbOKOnly + vbCritical, "Tanggal Masuk Kosong"
'TextBox Tanggal Masuk menjadi fokus
txtTanggalMasuk.SetFo
cus 'Keluar dari Sub
Procedure Exit Sub
'Jika TextBox Tanggal Masuk bukan data tanggal
ElseIf IsDate(txtTanggalMasuk.Value) = False Then
'Menampilkan kotak pesan Tanggal Masuk
Salah MsgBox "Tanggal masuk bukan data
tanggal", _
vbOKOnly + vbCritical, "Tanggal Masuk Salah"
'TextBox Tanggal Masuk dikosongkan
txtTanggalMasuk.Value = ""
'TextBox Tanggal Masuk menjadi
fokus txtTanggalMasuk.SetFocus
'Keluar dari Sub
Procedure
'Jika Exit Sub
TextBox Kode Pemasok kosong

- 112 -
ElseIf txtKodePemasok.Value = "" Then
'Menampilkan kotak pesan Kode Pemasok Kosong
MsgBox "Kode pemasok belum diisi", vbOKOnly, _
"Kode Pemasok Kosong"
'TextBox Kode Pemasok menjadi fokus
txtKodePemasok.SetFocus

'Keluar dari Sub Procedure


Exit Sub
'Jika TextBox Nama Pemasok
kosong
ElseIf txtNamaPemasok.Value = "" Then
'Menampilkan kotak pesan Nama Pemasok Kosong
MsgBox "Nama pemasok belum diisi", vbOKOnly, _
"Nama Pemasok Kosong"

'TextBox Nama Pemasok menjadi fokus


txtNamaPemasok.SetFocus
'Keluar dari Sub Procedure
Exit Sub
'Jika ListBox belum berisi data
ElseIf listData.ListCount = 1 Then
'Menampilkan kotak pesan
Transaksi Kosong
MsgBox "Belum ada transaksi barang masuk", vbOKOnly, _
"Transaksi Kosong"

'TextBox Kode Barang menjadi fokus


txtKodeBarang.SetFocus
Exit Sub
'Keluar dari Sub Procedure
- 113 -
End If
'Jika data yang ditampilkan merupakan hasil penyaringan
If wsTblMsk.FilterMode Then
'Tampilkan seluruh data dalam worksheet TblMasuk
wsTblMsk.ShowAllData
End If
'Jika tabel masuk tidak kosong
If wsTblMsk.Range("A3").Value <> "" Then
'Memeriksa apakah no masuk sudah ada
For Each CekSel In wsTblMsk.Range("NoMasuk")
'Jika no masuk sama dengan isi sel pada kolom A
If txtNoMasuk.Value = CekSel.Value Then
'Menampilkan kotak pesan No Masuk Ganda
MsgBox "No masuk sudah ada", _
vbCritical + vbOKOnly, "No Masuk Ganda"
'TextBox No Masuk dikosongkan
txtNoMasuk.Value = ""
'TextBox No Masuk menjadi
fokus txtNoMasuk.SetFocus

'Keluar dari Sub


Procedure Exit Sub
End If

Next CekSel
End If
With
wsTblMsk
'Masukkan no masuk di bawah record terakhir kolom A

- 114 -
.Cells(RecordAkhir + 1, 1).Value = txtNoMasuk.Value
'Masukkan tanggal masuk pada record yang sama
.Cells(RecordAkhir + 1, 2).Value = CDate(txtTanggalMasuk.Value)
'Masukkan kode pemasok pada record yang sama
.Cells(RecordAkhir + 1, 3).Value = txtKodePemasok.Value
'Masukkan nama pemasok pada record yang sama

.Cells(RecordAkhir + 1, 4).Value = txtNamaPemasok.Value


End With
'Struktur pengulangan berdasarkan jumlah item transaksi
For No = 1 To listData.ListCount - 1

'Masukkan No masuk di bawah record terakhir


wsTblDtlMsk.Cells(RecordAkhirDtl + No, 1).Value = _
txtNoMasuk.Value

'Masukkan tanggal masuk pada record yang sama


wsTblDtlMsk.Cells(RecordAkhirDtl + No, 2).Value = _
CDate(txtTanggalMasuk.Value)
'Masukkan nama pemasok pada record yang sama
wsTblDtlMsk.Cells(RecordAkhirDtl + No, 3).Value = _
txtNamaPemasok.Value

'Masukkan kode barang pada record yang sama


wsTblDtlMsk.Cells(RecordAkhirDtl + No, 4).Value = _
listData.List(No, 0)

'Masukkan nama barang pada record yang sama


wsTblDtlMsk.Cells(RecordAkhirDtl + No, 5).Value = _
listData.List(No, 1)
'Masukkan satuan pada record yang sama

- 115 -
wsTblDtlMsk.Cells(RecordAkhirDtl + No, 6).Value = _
listData.List(No, 2)
'Masukkan stok pada record yang sama
wsTblDtlMsk.Cells(RecordAkhirDtl + No, 7).Value = _
CDbl(listData.List(No, 3))
'Masukkan jumlah masuk pada record yang sama
wsTblDtlMsk.Cells(RecordAkhirDtl + No, 8).Value = _
CDbl(listData.List(No, 4))
'Masukkan stok akhir pada record yang sama
wsTblDtlMsk.Cells(RecordAkhirDtl + No, 9).Value = _
CDbl(listData.List(No, 5))
'c merupakan sel hasil pencarian data kode barang
Set c = wsTblBrg.Range("KodeBarang"). _

Find(listData.List(No, 0), LookIn:=xlValues)


c.Offset(0, 3).Value = _
c.Offset(0, 3).Value +
CDbl(listData.List(No, 4))
Next No
'Struktur pengulangan berdasarkan jumlah item
transaksi For No = 1 To listData.ListCount - 1

'Masukkan No masuk di bawah record terakhir


wsTblKrtStok.Cells(RecordAkhirKrt + No, 1).Value = _
txtNoMasuk.Value

'Masukkan tanggal masuk pada record yang sama


wsTblKrtStok.Cells(RecordAkhirKrt + No, 2).Value = _
CDate(txtTanggalMasuk.Value)
'Masukkan kode barang pada record yang sama
- 116 -
wsTblKrtStok.Cells(RecordAkhirKrt + No, 3).Value = _
listData.List(No, 0)
'Masukkan nama barang pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 4).Value = _
listData.List(No, 1)
'Masukkan satuan pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 5).Value = _
listData.List(No, 2)
'Masukkan stok awal pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 6).Value = _
CDbl(listData.List(No, 3))
'Masukkan jumlah masuk pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 7).Value = _
CDbl(listData.List(No, 4))
'Masukkan jumlah keluar pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 8).Value = 0
'Masukkan stok akhir pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 9).Value = _
CDbl(listData.List(No, 5))
Next No
'Memanggil Sub Procedure cmdBatal_Click
Call cmdBatal_Click

'Menyimpan workbook
ThisWorkbook.Save
End Sub

- 117 -
CmdBatal -
Click

Double klik tombol Batal dan masukkan kode berikut


Private Sub cmdBatal_Click()
'Memanggil Sub Procedure TampilkanJudul
Call TampilkanJudul
'TextBox Nomor Masuk dikosongkan
txtNoMasuk.Value = ""

'TextBox Tanggal Masuk dikosongkan


txtTanggalMasuk.Value = ""
'TextBox Kode Pemasok dikosongkan
txtKodePemasok.Value = ""
'TextBox Kode Barang dikosongkan
txtKodeBarang.Value = ""
'TextBox Nomor Masuk menjadi fokus
txtNoMasuk.SetFocus
End Sub

- 118 -
CmdKeluar -
Click

Double klik tombol keluar dan masukkan kode berikut :


Private Sub cmdKeluar_Click()
'Keluar dari Form
Barang Masuk Unload Me
End Sub

listData
Ubah properties ListData
BoundColumn = 6
ColumnCount = 6

Coba masukkan beberapa Data Barang Masuk & Data akan


disimpan di excel

- 119 -
Form Barang Keluar

Buka form Barang Keluar yang sudah dibuat kemarin.

- 120 -
General - TampilkanJudul

kita akan menambahkan 1 fungsi baru yg digunakan untuk semua proses


dalam form
Buka code edior atau double klik form Barang keluar.
Pada bagian kiri atas Pilih General & masukkan full code (masukkan
semua code berikut) berikut :
Sub TampilkanJudul()
'Menghapus ListBox
listData.Clear
With listData
'Menambahkan judul
kolom ListBox
.AddItem
'Judul ListBox kolom
pertama
.List(.ListCount - 1, 0) = "Kode Barang"
'Judul ListBox kolom kedua
.List(.ListCount - 1, 1) = "Nama Barang"
'Judul ListBox kolom ketiga
.List(.ListCount - 1, 2) = "Satuan"
- 121 -
'Judul ListBox kolom keempat
.List(.ListCount - 1, 3) = "Stok"
'Judul ListBox kolom kelima
.List(.ListCount - 1, 4) = "Brg Keluar"
'Judul ListBox kolom keenam
.List(.ListCount - 1, 5) = "Stok Akhir"
End With
End Sub

UserForm -
Active

Double klik form barang Keluar - Ubah fungsi Click bagian atas kanan
menjadi Active dan masukkan kode berikut :
Private Sub UserForm_Activate()
'Memanggil Sub Procedure TampilkanJudul
Call TampilkanJudul
'TextBox Stok bernilai 0
txtStok.Value = 0

'TextBox Jumlah Keluar bernilai 0


txtJumlahKeluar.Value = 0
- 122 -
'TextBox Stok Akhir bernilai 0
txtStokAkhir.Value = 0
End Sub

CmdFormKonsumen -
Click

Double klik tombol cmd form Konsumen & masukkan code berikut

Private Sub cmdFormPemasok_Click()


'Menampilkan Form Konsumen
formKonsumen.Show
End Sub

- 123 -
txtKodeKonsumen -
Change

Double klik isian kode pemasok / txtKodepemasok, ganti click bagian atas
kanan dengan change & masukkan code berikut

Private Sub txtKodeKonsumen_Change()


'Deklarasi variabel wsTblKnsmn
Dim wsTblKnsmn As Worksheet
'Deklarasi variabel
rgKodeKonsumen
Dim rgKodeKonsumen As Range
'Deklarasi variabel c
Dim c As Range
'wsTblKnsmn adalah worksheet TblKonsumen
Set wsTblKnsmn = Sheets("TblKonsumen")

'Jika sel A3 worksheet TblKonsumen masih kosong


If wsTblKnsmn.Range("A3").Value = "" Then
'Keluar dari Sub Procedure
Exit Sub
Else
'rgKo
deKons
umen - 124 -
adalah
range
'Pencarian pada range KodeKonsumen
With rgKodeKonsumen
'c merupakan sel hasil pencarian
Set c = .Find(txtKodeKonsumen.Value, _
LookAt:=xlWhole, LookIn:=xlValues)
'Jika tidak ada sel berisi kata kunci Kode Konsumen If
c Is Nothing Then
'TextBox Nama Konsumen dikosongkan
txtNamaKonsumen.Value = ""
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Nama Konsumen
Else

'Mengisi TextBox Nama Konsumen


txtNamaKonsumen.Value = c.Offset(0, 1).Value
End If
End With
End If
End Sub

- 125 -
CmdFormBarang -
Click

Double klik tombol form barang / cmdFormBarang & masukkan code


berikut

Private Sub cmdFormBarang_Click()


'Menampilkan Form Barang
formBarang.Show
End Sub

txtKodeBarang -
Change

Double klik isian kode Barang / txtKodeBarang, ganti click bagian atas
kanan dengan change & masukkan code berikut
Private Sub txtKodeBarang_Change()
'Deklarasi variabel wsTblBrg
Dim wsTblBrg As Worksheet
'Deklarasi variabel
rgKodeBarang - 126 -
Dim rgKodeBarang As Range
'Deklarasi variabel c
Dim c As Range

'wsTblBrg adalah worksheet TblBarang


Set wsTblBrg = Sheets("TblBarang")

'Jika sel A3 worksheet TblBarang masih kosong


If wsTblBrg.Range("A3").Value = "" Then
'Keluar dari Sub Procedure
Exit Sub
Else
'rgKodeBarang adalah
range KodeBarang

Set rgKodeBarang = wsTblBrg.Range("KodeBarang")


'Pencarian pada range KodeBarang
With rgKodeBarang
'c merupakan sel hasil pencarian
Set c = .Find(txtKodeBarang.Value, _
LookAt:=xlWhole, LookIn:=xlValues)

'Jika tidak ada sel berisi kata kunci Kode Barang If


c Is Nothing Then
'TextBox Nama Barang dikosongkan
txtNamaBarang.Value = ""
'TextBox Satuan dikosongkan
txtSatuan.Value = ""
'TextBox Stok 0
- 127 -
txtStok.Value = 0
'TextBox Jumlah Masuk 0
txtJumlahKeluar.Value = 0
'TextBox Stok Akhir 0
txtStokAkhir.Value = 0
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Nama Barang
Else
'Mengisi TextBox Nama Barang
txtNamaBarang.Value = c.Offset(0, 1).Value
'Mengisi TextBox Satuan
txtSatuan.Value = c.Offset(0, 2).Value
'Mengisi TextBox Stok
txtStok.Value = c.Offset(0, 3).Value
End If
End With
End If
End Sub

- 128 -
txtStok -
Change

Double klik isian Stok / txtStok, ganti click bagian atas kanan
dengan change & masukkan code berikut
Private Sub txtStok_Change()
'Jika TextBox Stok bernilai 0
If txtStok = 0 Then
'Keluar dari Sub Procedure
Exit Sub
End If
'Mengisi TextBox Stok Akhir
txtStokAkhir.Value = _
Format(CDbl(txtStok.Val
ue) -
CDbl(txtJumlahKeluar.Va
lue), "#,##0")
End Sub

- 129 -
txtJumlahKeluar -
Change

Double klik isian Jumlah keluar / txJumlahkeluar, ganti click bagian atas
kanan dengan change & masukkan code berikut
Private Sub txtJumlahKeluar_Change()
'Jika TextBox Jumlah Keluar kosong
If txtJumlahKeluar.Value = "" Then
'TextBox Stok Akhir = TextBox Stok
txtStokAkhir.Value = txtStok.Value
'Keluar dari Sub Procedure
Exit Sub
End If
'Jika
TextBox
Jumlah
Keluar >
TextBox
Stok
If
CDbl(txtJu
mlahKeluar
.Value) >
CDbl(txtSt
ok.Value)
Then
'TextBox Jumlah Keluar = TextBox
Stok txtJumlahKeluar.Value =
txtStok.Value 'Keluar dari Sub
Procedure
Exit Sub - 130 -
End If
'Mengisi TextBox Stok
txtJumlahKeluar -
KeyPass

Double klik isian Jumlah Keluar / txJumlahKeluar, ganti click bagian atas
kanan dengan KeyPass& masukkan code berikut
Private Sub txtJumlahKeluar_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
'Validasi angka TextBox Jumlah Keluar
Select Case KeyAscii

Case Asc("0") To Asc("9")


Case Else
KeyAscii = 0
End Select
End Sub

- 131 -
CmdTambah - Click

Double klik tombol Tambah & masukkan code berikut

Private Sub cmdTambah_Click()


'Deklarasi variabel wsTblBrg
Dim wsTblBrg As Worksheet
'Deklarasi variabel
rgKodeBarang
Dim rgKodeBarang As Range
'Deklarasi variabel c
Dim c As Range
'Deklarasi variabel CekKode
Dim CekKode As Integer

'wsTblBrg adalah worksheet TblBarang


Set wsTblBrg = Sheets("TblBarang")
'Jika TextBox Jumlah Keluar kosong
atau 0
If txtJumlahKeluar.Value = "" Or txtJumlahKeluar.Value = 0 Then
'Menampilkan kotak pesan Jumlah Keluar Kosong
MsgBox "Jumlah keluar belum diisi", _
vbOKOnly + vbCritical, "Jumlah Keluar
- 132 - Kosong"
'TextBox Jumlah Keluar menjadi fokus
txtJumlahKeluar.SetFocus
'Keluar dari Sub Procedure
Exit Sub
End If
'Jika sel A3 worksheet TblBarang masih kosong
If wsTblBrg.Range("A3").Value = "" Then
'Keluar dari Sub Procedure
Exit Sub
Else
'rgKodeBarang adalah
range KodeBarang
Set rgKodeBarang = wsTblBrg.Range("KodeBarang")
'Pencarian pada range KodeBarang
With rgKodeBarang
'c merupakan sel hasil pencarian
Set c = .Find(txtKodeBarang.Value, _
LookAt:=xlWhole, LookIn:=xlValues)
'Jika tidak ada sel berisi kata kunci Kode Barang If
c Is Nothing Then

'Menampilkan kotak pesan Barang Tidak Ada


MsgBox "Tidak ada barang dalam database", _
vbCritical + vbOKOnly, "Barang Tidak Ada"

'TextBox Kode Barang dikosongkan


txtKodeBarang.Value = ""
'TextBox Kode Barang menjadi fokus
txtKodeBarang.SetFocus
- 133 -
'Keluar dari Sub Procedure
Exit Sub
End If
End With
End If
With
listData

'Pengulangan untuk mengecek kode


barang For CekKode = 1 To .ListCount - 1
'Jika kode barang ada dalam ListBox
If .List(CekKode, 0) = txtKodeBarang.Value Then
'Memasukkan kode barang
.List(CekKode, 0) = txtKodeBarang.Value
'Memasukkan nama barang

.List(CekKode, 1) = txtNamaBarang.Value
'Memasukkan satuan
.List(CekKode, 2) = txtNamaBarang.Value
'Memasukkan stok
.List(CekKode, 3) = Format(txtStok.Value, "#,##0")
'Memasukkan jumlah keluar

.List(CekKode, 4) = Format(txtJumlahKeluar.Value, "#,##0")


'Memasukkan stok akhir
.List(CekKode, 5) = Format(txtStokAkhir.Value, "#,##0")

'TextBox Kode Barang dikosongkan


txtKodeBarang.Value = ""
'TextBox Kode Barang menjadi fokus
txtKodeBarang.SetFocus
- 134 -
'Keluar dari Sub Procedure
Exit Sub
End If
Next
CekKode
.AddItem
'Memasukk
an kode
barang

.List(.ListCount - 1, 0) =
txtKodeBarang.Value 'Memasukkan nama
barang
.List(.ListCount - 1, 1) =
txtNamaBarang.Value
'Memasukkan satuan

.List(.ListCount - 1, 2) =
txtSatuan.Value 'Memasukkan stok
.List(.ListCount - 1, 3) =
Format(txtStok.Value, "#,##0")
'Memasukkan jumlah keluar
.List(.ListCount - 1, 4) = Format(txtJumlahKeluar.Value,
"#,##0") 'Memasukkan stok akhir
.List(.ListCount - 1, 5) = Format(txtStokAkhir.Value,
"#,##0") 'TextBox Kode Barang dikosongkan
txtKodeBarang.Value = ""

'TextBox Kode Barang menjadi


fokus txtKodeBarang.SetFocus
End With
End Sub - 135 -
CmdHapus -
Click

Double klik tombol Hapus & masukkan code berikut

Private Sub cmdHapus_Click()


'Jika ListBox yang dipilih bukan judul kolom
If listData.ListIndex > 0 Then

'Menghapus item ListBox yang dipilih


listData.RemoveItem (listData.ListIndex)
End If
End Sub

- 136 -
CmdSimpan -
Click

Double klik tombol tambah & masukkan code berikut


Private Sub cmdSimpan_Click()
'Deklarasi variabel wsTblBrg
Dim wsTblBrg As Worksheet
'Deklarasi variabel wsTblKlr
Dim wsTblKlr As Worksheet
'Deklarasi variabel wsTblDtlKlr
Dim wsTblDtlKlr As Worksheet
'Deklarasi variabel wsTblKrtStok
Dim wsTblKrtStok As Worksheet
'Deklarasi variabel RecordAkhir
Dim RecordAkhir As Integer
'Deklarasi variabel RecordAkhirDtl
Dim RecordAkhirDtl As Integer
'Deklarasi variabel RecordAkhirKrt
Dim RecordAkhirKrt As Integer
'Deklarasi variabel CekSel
Dim CekSel As Range
'Deklarasi variabel c
- 137 -
Dim c As Range
'Deklarasi variabel No
Dim No As Integer
'Deklarasi variabel NoMasuk
Dim NoMasuk As Integer
'wsTblBrg adalah worksheet TblBarang
Set wsTblBrg = Sheets("TblBarang")
'wsTblKlr merupakan worksheet TblKeluar
Set wsTblKlr = Sheets("TblKeluar")
'wsTblDtlKlr merupakan worksheet TblDtlKeluar
Set wsTblDtlKlr = Sheets("TblDetailKeluar")
'wsTblKrtStok merupakan worksheet TblKartuStok
Set wsTblKrtStok = Sheets("TblKartuStok")
'RecordAkhir merupakan record terakhir tabel keluar
RecordAkhir = wsTblKlr.Cells(wsTblKlr.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row
'RecordAkhirDtl merupakan record terakhir tabel detail keluar
RecordAkhirDtl = wsTblDtlKlr.Cells(wsTblDtlKlr.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row

'RecordAkhirKrt merupakan record terakhir tabel kartu stok barang


RecordAkhirKrt = wsTblKrtStok.Cells(wsTblKrtStok.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row

'Jika TextBox No Keluar kosong


If txtNoKeluar.Value = "" Then
'Menampilkan kotak pesan No
Keluar Kosong
MsgBox "No keluar belum diisi", _

- 138 -
vbOKOnly + vbCritical, "No Keluar Kosong"
'TextBox No Keluar menjadi fokus
txtNoKeluar.SetFocus
'Keluar dari Sub Procedure
Exit Sub
'Jika TextBox Tanggal Keluar kosong
ElseIf txtTanggalKeluar.Value = "" Then
'Menampilkan kotak pesan Tanggal Keluar Kosong
MsgBox "Tanggal keluar belum diisi", _
vbOKOnly + vbCritical, "Tanggal Keluar Kosong"
'TextBox Tanggal Keluar menjadi fokus
txtTanggalKeluar.SetFo
cus 'Keluar dari Sub
Procedure Exit Sub
'Jika TextBox Tanggal Keluar bukan data tanggal
ElseIf IsDate(txtTanggalKeluar.Value) = False Then
'Menampilkan kotak pesan Tanggal Keluar
Salah MsgBox "Tanggal keluar bukan data
tanggal", _
vbOKOnly + vbCritical, "Tanggal Keluar Salah"
'TextBox Tanggal Keluar dikosongkan
txtTanggalKeluar.Value = ""
'TextBox Tanggal Keluar menjadi
fokus txtTanggalKeluar.SetFocus
'Keluar dari Sub
Procedure
'Jika Exit Sub
TextBox Kode Konsumen kosong

- 139 -
ElseIf txtKodeKonsumen.Value = "" Then
'Menampilkan kotak pesan Kode Konsumen Kosong
MsgBox "Kode konsumen belum diisi", vbOKOnly, _
"Kode Konsumen Kosong"
'TextBox Kode Konsumen menjadi fokus
txtKodeKonsumen.SetFocus

'Keluar dari Sub Procedure


Exit Sub
'Jika TextBox Nama
Konsumen kosong
ElseIf txtNamaKonsumen.Value = "" Then
'Menampilkan kotak pesan Nama Konsumen Kosong
MsgBox "Nama konsumen belum diisi", vbOKOnly, _
"Nama Konsumen Kosong"

'TextBox Nama Konsumen menjadi fokus


txtNamaKonsumen.SetFocus
'Keluar dari Sub Procedure
Exit Sub
'Jika ListBox belum berisi data
ElseIf listData.ListCount = 1 Then
'Menampilkan kotak pesan
Transaksi Kosong
MsgBox "Belum ada transaksi barang keluar", vbOKOnly, _
"Transaksi Kosong"

'TextBox Kode Barang menjadi fokus


txtKodeBarang.SetFocus
Exit Sub
'Keluar dari Sub Procedure
- 140 -
End If
'Jika data yang ditampilkan merupakan hasil penyaringan
If wsTblKlr.FilterMode Then
'Tampilkan seluruh data dalam worksheet TblKeluar
wsTblKlr.ShowAllData
End If
'Jika tabel masuk tidak kosong
If wsTblKlr.Range("A3").Value <> "" Then
'Memeriksa apakah no keluar sudah ada
For Each CekSel In wsTblKlr.Range("NoKeluar")
'Jika no keluar sama dengan isi sel pada kolom A
If txtNoKeluar.Value = CekSel.Value Then
'Menampilkan kotak pesan No Keluar Ganda
MsgBox "No keluar sudah ada", _
vbCritical + vbOKOnly, "No Keluar Ganda"
'TextBox No Keluar dikosongkan
txtNoKeluar.Value = ""
'TextBox No Keluar menjadi
fokus txtNoKeluar.SetFocus

'Keluar dari Sub


Procedure Exit Sub
End If

Next CekSel
End If
With
wsTblKlr
'Masukkan no keluar di bawah record terakhir kolom A

- 141 -
.Cells(RecordAkhir + 1, 1).Value = txtNoKeluar.Value
'Masukkan tanggal keluar pada record yang sama
.Cells(RecordAkhir + 1, 2).Value = CDate(txtTanggalKeluar.Value)
'Masukkan kode konsumen pada record yang sama
.Cells(RecordAkhir + 1, 3).Value = txtKodeKonsumen.Value
'Masukkan nama konsumen pada record yang sama

.Cells(RecordAkhir + 1, 4).Value = txtNamaKonsumen.Value


End With
'Struktur pengulangan berdasarkan jumlah item transaksi
For No = 1 To listData.ListCount - 1

'Masukkan No keluar di bawah record terakhir


wsTblDtlKlr.Cells(RecordAkhirDtl + No, 1).Value = _
txtNoKeluar.Value

'Masukkan tanggal keluar pada record yang sama


wsTblDtlKlr.Cells(RecordAkhirDtl + No, 2).Value = _
CDate(txtTanggalKeluar.Value)
'Masukkan nama konsumen pada record yang
sama wsTblDtlKlr.Cells(RecordAkhirDtl + No,
3).Value = _
txtNamaKonsumen.Value

'Masukkan kode barang pada record yang sama


wsTblDtlKlr.Cells(RecordAkhirDtl + No, 4).Value = _
listData.List(No, 0)

'Masukkan nama barang pada record yang sama


wsTblDtlKlr.Cells(RecordAkhirDtl + No, 5).Value = _
listData.List(No, 1)
'Masukkan satuan pada record- 142
yang- sama
wsTblDtlKlr.Cells(RecordAkhirDtl + No, 6).Value = _
listData.List(No, 2)
'Masukkan stok pada record yang sama
wsTblDtlKlr.Cells(RecordAkhirDtl + No, 7).Value = _
CDbl(listData.List(No, 3))
'Masukkan jumlah keluar pada record yang sama
wsTblDtlKlr.Cells(RecordAkhirDtl + No, 8).Value = _
CDbl(listData.List(No, 4))
'Masukkan stok akhir pada record yang sama
wsTblDtlKlr.Cells(RecordAkhirDtl + No, 9).Value = _
CDbl(listData.List(No, 5))
'c merupakan sel hasil pencarian data kode barang
Set c = wsTblBrg.Range("KodeBarang"). _

Find(listData.List(No, 0), LookIn:=xlValues)


c.Offset(0, 3).Value = _
c.Offset(0, 3).Value -
CDbl(listData.List(No, 4))
Next No
'Struktur pengulangan berdasarkan jumlah item
transaksi For No = 1 To listData.ListCount - 1

'Masukkan No keluar di bawah record terakhir


wsTblKrtStok.Cells(RecordAkhirKrt + No, 1).Value = _
txtNoKeluar.Value

'Masukkan tanggal masuk pada record yang sama


wsTblKrtStok.Cells(RecordAkhirKrt + No, 2).Value = _
CDate(txtTanggalKeluar.Value)
'Masukkan kode barang pada record yang sama
- 143 -
wsTblKrtStok.Cells(RecordAkhirKrt + No, 3).Value = _
listData.List(No, 0)
'Masukkan nama barang pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 4).Value = _
listData.List(No, 1)
'Masukkan satuan pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 5).Value = _
listData.List(No, 2)
'Masukkan stok awal pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 6).Value = _
CDbl(listData.List(No, 3))
'Masukkan jumlah masuk pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 7).Value = 0
'Masukkan jumlah keluar pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 8).Value = _
CDbl(listData.List(No, 4))
'Masukkan stok akhir pada record yang sama
wsTblKrtStok.Cells(RecordAkhirKrt + No, 9).Value = _
CDbl(listData.List(No, 5))
Next No
'Memanggil Sub Procedure cmdBatal_Click
Call cmdBatal_Click

'Menyimpan workbook
ThisWorkbook.Save
End Sub

- 144 -
CmdBatal -
Click

Double klik tombol Batal dan masukkan kode berikut


Private Sub cmdBatal_Click()
'Memanggil Sub Procedure TampilkanJudul
Call TampilkanJudul

'TextBox Nomor Keluar dikosongkan


txtNoKeluar.Value = ""
'TextBox Tanggal Keluar
dikosongkan
txtTanggalKeluar.Value = ""
'TextBox Kode Konsumen dikosongkan
txtKodeKonsumen.Value = ""

'TextBox Kode Barang dikosongkan


txtKodeBarang.Value = ""
'TextBox Nomor Keluar menjadi
fokus
txtNoKeluar.SetFocus
End Sub

- 145 -
CmdKeluar -
Click

Double klik tombol keluar dan masukkan kode berikut :


Private Sub cmdKeluar_Click()
'Keluar dari Form Barang Masuk
Unload Me
End Sub

listData
Ubah properties ListData
BoundColumn = 6
ColumnCount= 6

Coba masukkan beberapa Data Barang keluar & Data akan


disimpan di excel

- 146 -
IV. HALAMAN UTAMA

Dasboard Aplikasi
Silahkan buat tampilan halaman utama yang kreatif, kurang lebih seperti
berikut :

silahkan buat tampilan tersebut di Worksheet MenuUtama pada project


anda
setiap Menu menggunakan Shape rectagle - di menu Insert - Shape

Buat beberapa shape untuk memanggil form yang di buat serta


masukkan icon / gambar

- 147 -
Macro Coding
buka visual basic di menu developer
Klik menu Insert - module

Masukkan kode berikut :

Option E x p l i c i t
'Macro untuk menampilkan Form Barang
Sub LoadFormBarang()
'Mengaktifkan Form Barang
Load formBarang
'Menampilkan Form Barang
formBarang.Show
End Sub
'Macro untuk menampilkan Form Pemasok
Sub LoadFormPemasok()
'Mengaktifkan Form Pemasok
Load formPemasok
'Menampilkan Form Pemasok
f o rmPemasok . Sho
w End Sub
'Macro untuk menampilkan Form Konsumen
Sub LoadFormKonsumen()

- 148 -
'Mengaktifkan Form Konsumen
Load formKonsumen
'Menampilkan Form Konsumen
formKonsumen.Show
End Sub
'Macro untuk menampilkan Form Barang Masuk
Sub LoadFormBarangMasuk()
'Mengaktifkan Form Barang Masuk
Load formBarangMasuk
'Menampilkan Form Barang Masuk
formBarangMasuk.Show
End Sub
'Macro untuk menampilkan Form Barang Keluar
Sub LoadFormBarangKeluar()
'Mengaktifkan Form Barang Keluar
Load formBarangKeluar
'Menampilkan Form Barang Keluar
formBarangKeluar.Show
End Sub

kembali ke menu utama di excel


Klik Kanan Shape Barang - Assign macro - LoadFormBarang
Inputkan semua macro pada semua shape .

- 149 -
V. PENGGUNAAN APLIKASI
VBA yang merupakan singkatan dari Visual Basic for Applications
adalah bahasa pemrograman yang dikembangkan oleh Microsoft,
perusahaan dijalankan oleh orang terkaya di dunia. Excel, bersama dengan
anggota lain dari Microsoft Office, di dalamnya termasuk bahasa VBA
(tanpa biaya tambahan). Singkatnya, VBA adalah alat yang digunakan
orang untuk mengembangkan program yang mengontrol Excel. Berikut
adalah beberapa deskripsi singkat dari beberapa penggunaan umum untuk
macro VBA. Satu atau dua ini dapat menekan tombol Anda.
-Memasukkan text string
-Mengotomatisasi tugas yang sering dilakukan
- Mengotomatisasi operasi berulang
-Membuat perintah khusus
-Membuat tombol toolbar kustom
-Membuat perintah menu kustom
-Membuat front end yang disederhanakan
-Mengembangkan fungsi worksheet
-Menciptakan Aplikasi
-Membuat kustom add-in untuk Excel

- 150 -
Daftar Pustaka
http://elitag.untag-sby.ac.id/course/view.php?id=2028
http://elitag.untag-sby.ac.id/course/view.php?id=2028&section=1
http://elitag.untag-sby.ac.id/course/view.php?id=2028&section=2
http://elitag.untag-sby.ac.id/course/view.php?id=2028&section=3
http://elitag.untag-sby.ac.id/course/view.php?id=2028&section=4
http://elitag.untag-sby.ac.id/course/view.php?id=2028&section=5
http://elitag.untag-sby.ac.id/course/view.php?id=2028&section=6

- 151 -

Anda mungkin juga menyukai