VBA
EXCEL
Untuk Pemula
-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.
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
-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
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
- 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
- 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
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
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
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
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
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
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
Ubah Klik menjadi Active -->untuk membuat event dilakukan saat posisi
form aktif
Form - Active
- 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
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
Code :
Private Sub cmdEdit_Click()
'DeklarasivariabelwsTblSatuan
Dim wsTblSatuan As Worksheet
'DeklarasivariabelCekSel
Dim CekSelAs Range
'Deklarasivariabel c
Dim c As Range
'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
- 38 -
CmdKeluar –
Click
listSatu
an- Click
- 40 -
General - TampilkanSemua
Sub TampilkanSemua()
'DeklarasivariabelwsTblBrg
Dim wsTblBrg As Worksheet
'DeklarasivariabelrgTampil
Dim rgTampil As Range
'DeklarasivariabelsTampil
Dim sTampil As Range
'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
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
- 44 -
CmdSimpan -
Click
- 47 -
CmdEdit -
Click
- 50 -
CmdHapus -
Click
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
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
- 57 -
General - TampilkanSemua
- 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
CmdSimpan -
Click
- 61 -
'DeklarasivariabelRecordAkhir
Dim RecordAkhirAs Integer
'DeklarasivariabelCekSel
Dim CekSelAs Range
'wsTblPmskmerupakan worksheet TblPemasok
Set wsTblPmsk = Sheets("TblPemasok")
- 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
.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
- 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
- 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
- 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
- 71 -
listData - Click
Sebelum mengisikan code ubah properties ListData
BoundColumn = 4
ColumnCount = 4
'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
- 74 -
Form Konsumen
- 75 -
General - TampilkanSemua
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
- 79 -
CmdSimpan -
Click
.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
'JikaTextBoxAlamatkosong
ElseIftxtAlamat.Value = "" Then
'MenampilkankotakpesanA
lamatKosong
'JikaTextBox No Handphonekosong
ElseIftxtNoHP.Value = "" Then
'Menampilkankotakpesan No
HandphoneKosong
- 87 -
CmdHapus -
Click
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
CmdKeluar -
Click
- 90 -
listData - Click
Sebelummengisikan code ubah properties ListData
BoundColumn = 4
ColumnCount = 4
- 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)
- 93 -
Form Barang Masuk
- 94 -
General - TampilkanJudul
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
txtKodePemasok -
Change
Double klik isian kode pemasok / txtKodepemasok, ganti click bagian atas
kanan dengan change & masukkan code berikut
CmdFormBarang -
Click
- 99 -
txtKodeBarang -
Change
Double klik isian kode Barang / txtKodeBarang, ganti click bagian atas
kanan dengan change & masukkan code berikut
Private Sub txtKodeBarang_Change()
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
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)
- 104 -
CmdTambah - Click
.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(.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 = ""
- 109 -
CmdSimpan -
Click
- 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
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
- 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"). _
'Menyimpan workbook
ThisWorkbook.Save
End Sub
- 117 -
CmdBatal -
Click
- 118 -
CmdKeluar -
Click
listData
Ubah properties ListData
BoundColumn = 6
ColumnCount = 6
- 119 -
Form Barang Keluar
- 120 -
General - TampilkanJudul
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
CmdFormKonsumen -
Click
Double klik tombol cmd form Konsumen & masukkan code berikut
- 123 -
txtKodeKonsumen -
Change
Double klik isian kode pemasok / txtKodepemasok, ganti click bagian atas
kanan dengan change & masukkan code berikut
- 125 -
CmdFormBarang -
Click
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
- 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
- 131 -
CmdTambah - Click
.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(.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 = ""
- 136 -
CmdSimpan -
Click
- 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
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
'Menyimpan workbook
ThisWorkbook.Save
End Sub
- 144 -
CmdBatal -
Click
- 145 -
CmdKeluar -
Click
listData
Ubah properties ListData
BoundColumn = 6
ColumnCount= 6
- 146 -
IV. HALAMAN UTAMA
Dasboard Aplikasi
Silahkan buat tampilan halaman utama yang kreatif, kurang lebih seperti
berikut :
- 147 -
Macro Coding
buka visual basic di menu developer
Klik menu Insert - module
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
- 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§ion=1
http://elitag.untag-sby.ac.id/course/view.php?id=2028§ion=2
http://elitag.untag-sby.ac.id/course/view.php?id=2028§ion=3
http://elitag.untag-sby.ac.id/course/view.php?id=2028§ion=4
http://elitag.untag-sby.ac.id/course/view.php?id=2028§ion=5
http://elitag.untag-sby.ac.id/course/view.php?id=2028§ion=6
- 151 -