Upload
rudiaman29
View
5
Download
0
Embed Size (px)
Citation preview
$a0DWD$UMXQD
LUHPEXQEORJVSRWFRPDKWPO
0 ( 0 %8 $ 7 $ 3 / ,. $ 6 , * 8 $ 1 * 0 ( 1 < ,$ 3 . $ 1 : 2 5 . %2 2 .
2 CFC WO WOP[ C CRNKMCUK I WFCPI VGTFKTK FCTK DGDGTCRCFCVCDCUG UGRGTVK FCVCDCUG KVGO FCVCDCUG RGNCPI I CPFCVCDCUG UWRRNKGT FCVCDCUG RGPCO DCJ CP UVQM KVGO FCVCDCUG RGPI WTCPI CP KVGO FCVCDCUG WUGT UGMCNKI WUFCVC CFO KP FCVCDCUG TGVWTP RGPCO DCJ CP KVGO FCVCDCUG TGVWTP RGPI WTCPI CP KVGO FKVCO DCJ VGO RCVWPVWM EGVCM NCRQTCP FCP VGO RCV CMUGU O GPW WVCO CQJ [ C UCVW NCI K FCVC DCPVW$ WMC ( QNFGT +2 # HKNG # 2 )
0 ( 0 %8 $ 7 $ 7$ %$ 6 ( ,7( 0
$ 7 - # ( +. # 2 )
&CVCDCUG KVGO DGTKUK GPVTK FCVC PCO C PCO C KVGO[ CPI CFC RCFC I WFCPI
6GO RCV HKGNF GPVTK PCO C PCO C KVGO VGTFCRCV RCFCTCPI G # UCO RCK ( UGFCPI MCP VGO RCV HKNVGT VGTFCRCVRCFC TCPI G 1 FCP 2 VGO RCV HKNVGT O GTWRCMCPVGO RCV FKO CPC RGP[ CTKPI CP FCVC DGTFCUTMCP MQFGDCTCPI FCP PCO C DCTCPI
C &GHKPG PCO G CVCW PCO C TCPI G
0 CO C TCPI G WPVWM MQFG CVCW TCPI G # - QFG+VGO 1 ( ( 5 6 &CVCDCUG+VGO # %1 7 0 6# &CVCDCUG+VGO # # PCO C TCPI G WPVWM PCO C CVCW TCPI G $ 0 CO C+VGO
3/20/15 A2 ~ Mata Arjuna
2/34irembun.blogspot.com/2015/01/a2.html
=OFFSET(DatabaseItem!$B$2;1;0;COUNTA(DatabaseItem!$B:$B)-1;1)
nama range untuk seluruh database item "
DatabaseItem " :
=OFFSET(DatabaseItem!$A$2;0;0;COUNTA(DatabaseItem!$A:$A)-1;6)
2.2 Membuat design userform entri nama nama item
2.2.a Ngoding userform
2.2.b Ngoding event Userform aktif
Private Sub UserForm_Activate()
Set dtitem = Sheets("DatabaseItem")
'Jika data yang ditampilkan merupakan hasil
penyaringan
If dtitem.FilterMode Then
'Tampilkan seluruh data dalam worksheet
databse item
dtitem.ShowAllData
End If
cSatuan.AddItem "Pcs"
cSatuan.AddItem "Kaleng"
cSatuan.AddItem "Kotak"
cSatuan.AddItem "Pak"
cSatuan.AddItem "Lusin"
If dtitem.Range("A3").Value = "" Then
MsgBox "Database item kosong"
Exit Sub
End If
Call tampilitem
End Sub
2.2.c Ngoding event database kosong
3/20/15 A2 ~ Mata Arjuna
3/34irembun.blogspot.com/2015/01/a2.html
Sub DataKosong()
Set dtitem = Sheets("DatabaseItem")
If dtitem.Range("A3").Value = "" Then
MsgBox "Database item kosong"
Exit Sub
End If
End Sub
2.2.e Ngoding event tombol tambah item
Private Sub cmTambah_Click()
Set dtitem = Sheets("DatabaseItem")
SelKosong = dtitem.Cells(dtitem.Rows.Count,
"A"). _
End(xlUp).Offset(0, 0).Row
If tKode.Value = "" Then
MsgBox "Kolom kosong"
tKode.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf tSpecifikasi.Value = "" Then
MsgBox "Kolom kosong"
tSpecifikasi.SetFocus
Exit Sub
ElseIf tMerk.Value = "" Then
MsgBox "Kolom kosong"
tMerk.SetFocus
Exit Sub
ElseIf cSatuan.Value = "" Then
MsgBox "Kolom kosong"
cSatuan.SetFocus
Exit Sub
End If
With dtitem.Range("KodeItem")
Set c = .Find(tKode.Value, LookIn:=xlValues)
If c Is Nothing Then
Else
MsgBox "Maaf kode item " & tKode.Value & "
sudah ada", _
vbOKOnly + vbCritical, "Kode item ganda"
3/20/15 A2 ~ Mata Arjuna
4/34irembun.blogspot.com/2015/01/a2.html
Exit Sub
End If
End With
With dtitem
.Cells(SelKosong + 1, 1).Value = tKode.Value
.Cells(SelKosong + 1, 2).Value = tNama.Value
.Cells(SelKosong + 1, 3).Value =
tSpecifikasi.Value
.Cells(SelKosong + 1, 4).Value = tMerk.Value
.Cells(SelKosong + 1, 5).Value = cSatuan.Value
.Cells(SelKosong + 1, 6).Value = 0
End With
ThisWorkbook.Save
Call tampilitem
End Sub
2.2.f Ngoding event tombol edit item
Private Sub cmEdit_Click()
Set dtitem = Sheets("DatabaseItem")
If tKode.Value = "" Then
MsgBox "Kolom kosong"
tKode.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf tSpecifikasi.Value = "" Then
MsgBox "Kolom kosong"
tSpecifikasi.SetFocus
Exit Sub
ElseIf tMerk.Value = "" Then
MsgBox "Kolom kosong"
tMerk.SetFocus
Exit Sub
ElseIf cSatuan.Value = "" Then
MsgBox "Kolom kosong"
cSatuan.SetFocus
Exit Sub
End If
Set KeyRangeA = dtitem.Range("KodeItem")
Set c = KeyRangeA.Find(tKode.Value, _
3/20/15 A2 ~ Mata Arjuna
5/34irembun.blogspot.com/2015/01/a2.html
LookIn:=xlValues) 'primer key
c.Offset(0, 1).Value = tNama.Value
c.Offset(0, 2).Value = tSpecifikasi.Value
c.Offset(0, 3).Value = tMerk.Value
c.Offset(0, 4).Value = cSatuan.Value
c.Offset(0, 0).Value = tKode.Value
ThisWorkbook.Save
Call tampilitem
End Sub
2.2.g Ngoding event tombol hapus item
Private Sub cmHapus_Click()
Set dtitem = Sheets("DatabaseItem")
Set KeyRangeA = dtitem.Range("KodeItem")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
c.Offset(0, 1).Delete Shift:=xlUp
c.Offset(0, 2).Delete Shift:=xlUp
c.Offset(0, 3).Delete Shift:=xlUp
c.Offset(0, 4).Delete Shift:=xlUp
c.Offset(0, 5).Delete Shift:=xlUp
c.Offset(0, 0).Delete Shift:=xlUp
ThisWorkbook.Save
Call tampilitem
End Sub
2.2.h Ngoding event tombol pencarian data
berdasarkan kode item
Private Sub cmCkode_Click()
'dtitem adalah worksheet DatabaseItem
Set dtitem = Sheets("DatabaseItem")
'iPaData adalah range DatabaseItem
Set iPaData = dtitem.Range("DatabaseItem")
'TmptFltr adalah range L2:N3 worksheet
DatabaseItem
Set TmptFltr = dtitem.Range("O2:P3")
'Pencarian pada range Range B
With dtitem.Range("KodeItem")
'c merupakan sel hasil pencarian
Set c = .Find(tKode.Value, LookIn:=xlValues)
'Jika tidak sel berisi kata kunci Range B
3/20/15 A2 ~ Mata Arjuna
6/34irembun.blogspot.com/2015/01/a2.html
If c Is Nothing Then
lCari.Clear
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Range B
Else
dtitem.Range("O3:P3").ClearContents
'Memasukkan Range B ke dalam sel M3
dtitem.Range("O3").Value = "*" & tKode.Value &
"*"
'Penyaringan data menggunakan Advanced
Filter
iPaData.AdvancedFilter Action:=xlFilterInPlace,
_
CriteriaRange:=TmptFltr
'Memanggil Sub Procedure tampilitem
Call tampilitem
End If
End With
End Sub
2.2.i Ngoding event tombol pencarian data
berdasarkan nama item
Private Sub cmCnama_Click()
'dtitem adalah worksheet DatabaseItem
Set dtitem = Sheets("DatabaseItem")
'iPaData adalah range DatabaseItem
Set iPaData = dtitem.Range("DatabaseItem")
'TmptFltr adalah range L2:N3 worksheet
DatabaseItem
Set TmptFltr = dtitem.Range("O2:P3")
'Pencarian pada range Range B
With dtitem.Range("NamaItem")
'c merupakan sel hasil pencarian
Set c = .Find(tNama.Value, LookIn:=xlValues)
'Jika tidak sel berisi kata kunci Range B
If c Is Nothing Then
lCari.Clear
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Range B
Else
3/20/15 A2 ~ Mata Arjuna
7/34irembun.blogspot.com/2015/01/a2.html
dtitem.Range("O3:P3").ClearContents
'Memasukkan Range B ke dalam sel M3
dtitem.Range("P3").Value = "*" & tNama.Value &
"*"
'Penyaringan data menggunakan Advanced
Filter
iPaData.AdvancedFilter Action:=xlFilterInPlace,
_
CriteriaRange:=TmptFltr
'Memanggil Sub Procedure tampilitem
Call tampilitem
End If
End With
End Sub
2.2.j Ngoding event lookup pada tetbox kode item
Private Sub tKode_Change()
Set dtitem = Sheets("DatabaseItem")
On Error Resume Next
Set KeyRangeA = dtitem.Range("KodeItem")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
tNama.Value = c.Offset(0, 1).Value
tSpecifikasi.Value = c.Offset(0, 2).Value
tMerk.Value = c.Offset(0, 3).Value
cSatuan.Value = c.Offset(0, 4).Value
TStok.Value = c.Offset(0, 5).Value
End Sub
2.2.k ngoding event menampilkan data item pada
listbox
Sub tampilitem()
'dtitem adalah worksheet databse item
Set dtitem = Sheets("DatabaseItem")
'Menghapus ListBox
lCari.Clear
With lCari
'Menambahkan judul kolom ListBox
.AddItem
' 3 kolom
.ColumnCount = 3
3/20/15 A2 ~ Mata Arjuna
8/34irembun.blogspot.com/2015/01/a2.html
' 3 apa au ah
.BoundColumn = 3
'Judul ListBox kolom pertama
.List(.ListCount - 1, 0) = "Nomor"
'Judul ListBox kolom kedua
.List(.ListCount - 1, 1) = "Kode"
'Judul ListBox kolom ketiga
.List(.ListCount - 1, 2) = "Nama"
'Lebar masing-masing kolom dalam ListBox
.ColumnWidths = 55 & ";" & 60 & ";" & 90
End With
With dtitem
'rgTampil adalah range kode barang yang
ditampilkan
Set rgTampil = dtitem.Range("KodeItem"). _
SpecialCells(xlCellTypeVisible)
'sTampil merupakan pengulangan setiap sel
dalam rgTampil
For Each sTampil In rgTampil
With lCari
'Memasukkan item ke dalam ListBox
.AddItem sTampil.Value
'No record berdasarkan no baris sTampil
dikurangi 2
.List(.ListCount - 1, 0) = sTampil.Row - 2
'Kode barang berdasarkan nilai dalam sTampil
.List(.ListCount - 1, 1) = sTampil.Value
'Nama barang 1 kolom di sebelah kanan
sTampil
.List(.ListCount - 1, 2) = sTampil.Offset(0,
1).Value
End With
Next sTampil
End With
'ListBox menjadi fokus
lCari.SetFocus
End Sub
2.2.l Ngoding event listbox cari diklik
Private Sub lCari_Click()
'Jika baris ListBox yang di-klik bukan baris judul
3/20/15 A2 ~ Mata Arjuna
9/34irembun.blogspot.com/2015/01/a2.html
kolom
If lCari.ListIndex > 0 Then
'Nilai tKode sama dengan nilai ListBox kolom
KODE
tKode.Value = lCari.List(lCari.ListIndex, 1)
End If
End Sub
2.2.m Ngoding event userform ditutup
Private Sub UserForm_QueryClose(Cancel As
Integer, CloseMode As Integer)
Set dtitem = Sheets("DatabaseItem")
'Jika data yang ditampilkan merupakan hasil
penyaringan
If dtitem.FilterMode Then
'Tampilkan seluruh data dalam worksheet
databse item
dtitem.ShowAllData
End If
dtitem.Range("O3:P3").ClearContents
End Sub
2.2.n Ngoding event tombol keluaR
Private Sub cmKeluar_Click()
Unload Me
End Sub
3. MEMBUAT ENTRI DATABASE PELANGGAN
BUKA FILE APG-2
Seharusnya jika sudah bisa membuat database item
maka membuat database pelanggan tidaklah sulit
atau tidak ada perlu yang diterangkan, namun karena
ini sebuah buku maka dengan terpaksa saya akan
mengulang kode databse item kedalam databse
pelanggan.
3/20/15 A2 ~ Mata Arjuna
10/34irembun.blogspot.com/2015/01/a2.html
Nama range yang digunakan dalam entri database
pelanggan
3.1 Define name atau nama Range untuk database
pelanggan "DatabasePelanggan" :
=OFFSET(DatabasePelanggan!$A$2;0;0;COUNTA(DatabasePelanggan!$A:$A)-1;6)
Range untuk kode pelanggan "KodePelanggan" :
=OFFSET(DatabasePelanggan!$A$2;1;0;COUNTA(DatabasePelanggan!$A:$A)-2;1)
Range untuk nama pelanggan "NamaPelanggan" :
=OFFSET(DatabasePelanggan!$B$2;1;0;COUNTA(DatabasePelanggan!$B:$B)-1;1)
3.2 Desig userform entri database pelanggan
3.3 Ngoding userform entri database pelanggan
3.3.a Ngoding event userform active
Private Sub UserForm_Activate()
Set dtpelanggan =
Sheets("DatabasePelanggan")
'Jika data yang ditampilkan merupakan hasil
penyaringan
If dtpelanggan.FilterMode Then
3/20/15 A2 ~ Mata Arjuna
11/34irembun.blogspot.com/2015/01/a2.html
'Tampilkan seluruh data dalam worksheet
databse pelanggan
dtpelanggan.ShowAllData
End If
If dtpelanggan.Range("A3").Value = "" Then
MsgBox "Database pelanggan kosong"
Exit Sub
End If
Call tampilPelanggan
End Sub
3.3.b Ngoding event data kosong
Sub DataKosong()
Set dtpelanggan =
Sheets("DatabasePelanggan")
If dtpelanggan.Range("A3").Value = "" Then
MsgBox "Database pelanggan kosong"
Exit Sub
End If
End Sub
3.3.c Ngoding event pencarian berdasarkan kode
pelanggan
Private Sub cmCkode_Click()
'dtpelanggan adalah worksheet
DatabasePelanggan
Set dtpelanggan =
Sheets("DatabasePelanggan")
'iPaData adalah range DatabasePelanggan
Set iPaData =
dtpelanggan.Range("DatabasePelanggan")
'TmptFltr adalah range L2:N3 worksheet
DatabasePelanggan
Set TmptFltr = dtpelanggan.Range("O2:P3")
'Pencarian pada range Range B
With dtpelanggan.Range("KodePelanggan")
'c merupakan sel hasil pencarian
Set c = .Find(tKode.Value, LookIn:=xlValues)
'Jika tidak sel berisi kata kunci Range B
If c Is Nothing Then
lCari.Clear
3/20/15 A2 ~ Mata Arjuna
12/34irembun.blogspot.com/2015/01/a2.html
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Range B
Else
dtpelanggan.Range("O3:P3").ClearContents
'Memasukkan Range B ke dalam sel M3
dtpelanggan.Range("O3").Value = "*" &
tKode.Value & "*"
'Penyaringan data menggunakan Advanced
Filter
iPaData.AdvancedFilter Action:=xlFilterInPlace,
_
CriteriaRange:=TmptFltr
'Memanggil Sub Procedure tampilPelanggan
Call tampilPelanggan
End If
End With
End Sub
3.3.d Ngoding event pencarian berdasarkan nama
pelanggan
Private Sub cmCnama_Click()
'dtpelanggan adalah worksheet
DatabasePelanggan
Set dtpelanggan =
Sheets("DatabasePelanggan")
'iPaData adalah range DatabasePelanggan
Set iPaData =
dtpelanggan.Range("DatabasePelanggan")
'TmptFltr adalah range L2:N3 worksheet
DatabasePelanggan
Set TmptFltr = dtpelanggan.Range("O2:P3")
'Pencarian pada range Range B
With dtpelanggan.Range("NamaPelanggan")
'c merupakan sel hasil pencarian
Set c = .Find(tNama.Value, LookIn:=xlValues)
'Jika tidak sel berisi kata kunci Range B
If c Is Nothing Then
lCari.Clear
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Range B
3/20/15 A2 ~ Mata Arjuna
13/34irembun.blogspot.com/2015/01/a2.html
Else
dtpelanggan.Range("O3:P3").ClearContents
'Memasukkan Range B ke dalam sel M3
dtpelanggan.Range("P3").Value = "*" &
tNama.Value & "*"
'Penyaringan data menggunakan Advanced
Filter
iPaData.AdvancedFilter Action:=xlFilterInPlace,
_
CriteriaRange:=TmptFltr
'Memanggil Sub Procedure tampilPelanggan
Call tampilPelanggan
End If
End With
End Sub
3.3.e Ngoding event tombol tambah
Private Sub cmTambah_Click()
Set dtpelanggan =
Sheets("DatabasePelanggan")
SelKosong =
dtpelanggan.Cells(dtpelanggan.Rows.Count,
"A"). _
End(xlUp).Offset(0, 0).Row
If tKode.Value = "" Then
MsgBox "Kolom kosong"
tKode.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf talamat.Value = "" Then
MsgBox "Kolom kosong"
talamat.SetFocus
Exit Sub
ElseIf tkontak.Value = "" Then
MsgBox "Kolom kosong"
tkontak.SetFocus
Exit Sub
ElseIf Temail.Value = "" Then
MsgBox "Kolom kosong"
3/20/15 A2 ~ Mata Arjuna
14/34irembun.blogspot.com/2015/01/a2.html
Temail.SetFocus
Exit Sub
End If
With dtPelanggan.Range("KodePelanggan")
Set c = .Find(tKode.Value, LookIn:=xlValues)
If c Is Nothing Then
Else
MsgBox "Maaf kode Pelanggan " & tKode.Value
& " sudah ada", _
vbOKOnly + vbCritical, "Kode Pelanggan ganda"
Exit Sub
End If
End With
With dtpelanggan
.Cells(SelKosong + 1, 1).Value = tKode.Value
.Cells(SelKosong + 1, 2).Value = tNama.Value
.Cells(SelKosong + 1, 3).Value = talamat.Value
.Cells(SelKosong + 1, 4).Value = tkontak.Value
.Cells(SelKosong + 1, 5).Value = Temail.Value
.Cells(SelKosong + 1, 6).Value = tTelpon.Value
End With
ThisWorkbook.Save
Call tampilPelanggan
End Sub
3.3.f Ngoding event tombol edit
Private Sub cmEdit_Click()
Set dtpelanggan =
Sheets("DatabasePelanggan")
If tKode.Value = "" Then
MsgBox "Kolom kosong"
tKode.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf talamat.Value = "" Then
MsgBox "Kolom kosong"
talamat.SetFocus
Exit Sub
ElseIf tkontak.Value = "" Then
3/20/15 A2 ~ Mata Arjuna
15/34irembun.blogspot.com/2015/01/a2.html
MsgBox "Kolom kosong"
tkontak.SetFocus
Exit Sub
ElseIf Temail.Value = "" Then
MsgBox "Kolom kosong"
Temail.SetFocus
Exit Sub
End If
Set KeyRangeA =
dtpelanggan.Range("KodePelanggan")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
c.Offset(0, 1).Value = tNama.Value
c.Offset(0, 2).Value = talamat.Value
c.Offset(0, 3).Value = tkontak.Value
c.Offset(0, 4).Value = Temail.Value
c.Offset(0, 5).Value = tTelpon.Value
c.Offset(0, 0).Value = tKode.Value
ThisWorkbook.Save
Call tampilPelanggan
End Sub
3.3.g Ngoding event tombol hapus
Private Sub cmHapus_Click()
Set dtpelanggan =
Sheets("DatabasePelanggan")
Set KeyRangeA =
dtpelanggan.Range("KodePelanggan")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
c.Offset(0, 1).Delete Shift:=xlUp
c.Offset(0, 2).Delete Shift:=xlUp
c.Offset(0, 3).Delete Shift:=xlUp
c.Offset(0, 4).Delete Shift:=xlUp
c.Offset(0, 5).Delete Shift:=xlUp
c.Offset(0, 0).Delete Shift:=xlUp
ThisWorkbook.Save
Call tampilPelanggan
End Sub
Private Sub tKode_Change()
Set dtpelanggan =
Sheets("DatabasePelanggan")
3/20/15 A2 ~ Mata Arjuna
16/34irembun.blogspot.com/2015/01/a2.html
On Error Resume Next
Set KeyRangeA =
dtpelanggan.Range("KodePelanggan")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
tNama.Value = c.Offset(0, 1).Value
talamat.Value = c.Offset(0, 2).Value
tkontak.Value = c.Offset(0, 3).Value
Temail.Value = c.Offset(0, 4).Value
tTelpon.Value = c.Offset(0, 5).Value
End Sub
3.3.h Ngoding event tampilPelanggan
Sub tampilPelanggan()
'dtpelanggan adalah worksheet databse
pelanggan
Set dtpelanggan =
Sheets("DatabasePelanggan")
'Menghapus ListBox
lCari.Clear
With lCari
'Menambahkan judul kolom ListBox
.AddItem
' 3 kolom
.ColumnCount = 3
' 3 apa au ah
.BoundColumn = 3
'Judul ListBox kolom pertama
.List(.ListCount - 1, 0) = "Nomor"
'Judul ListBox kolom kedua
.List(.ListCount - 1, 1) = "Kode"
'Judul ListBox kolom ketiga
.List(.ListCount - 1, 2) = "Nama"
'Lebar masing-masing kolom dalam ListBox
.ColumnWidths = 55 & ";" & 60 & ";" & 90
End With
With dtpelanggan
'rgTampil adalah range kode barang yang
ditampilkan
Set rgTampil =
dtpelanggan.Range("KodePelanggan"). _
3/20/15 A2 ~ Mata Arjuna
17/34irembun.blogspot.com/2015/01/a2.html
SpecialCells(xlCellTypeVisible)
'sTampil merupakan pengulangan setiap sel
dalam rgTampil
For Each sTampil In rgTampil
With lCari
'Memasukkan pelanggan ke dalam ListBox
.AddItem sTampil.Value
'No record berdasarkan no baris sTampil
dikurangi 2
.List(.ListCount - 1, 0) = sTampil.Row - 2
'Kode barang berdasarkan nilai dalam sTampil
.List(.ListCount - 1, 1) = sTampil.Value
'Nama barang 1 kolom di sebelah kanan
sTampil
.List(.ListCount - 1, 2) = sTampil.Offset(0,
1).Value
End With
Next sTampil
End With
'ListBox menjadi fokus
lCari.SetFocus
End Sub
3.3.i Ngoding event ketika listbox cari diklik
Private Sub lCari_Click()
'Jika baris ListBox yang di-klik bukan baris judul
kolom
If lCari.ListIndex > 0 Then
'Nilai tKode sama dengan nilai ListBox kolom
KODE
tKode.Value = lCari.List(lCari.ListIndex, 1)
End If
End Sub
3.3.j Ngoding event userform ditutup
Private Sub UserForm_QueryClose(Cancel As
Integer, CloseMode As Integer)
Set dtpelanggan =
Sheets("DatabasePelanggan")
'Jika data yang ditampilkan merupakan hasil
penyaringan
3/20/15 A2 ~ Mata Arjuna
18/34irembun.blogspot.com/2015/01/a2.html
If dtpelanggan.FilterMode Then
'Tampilkan seluruh data dalam worksheet
databse pelanggan
dtpelanggan.ShowAllData
End If
dtpelanggan.Range("O3:P3").ClearContents
End Sub
3.3.k Ngoding event tombol keluar
Private Sub cmKeluar_Click()
Unload Me
End Sub
4. MEMBUAT ENTRI DATABASE SUPPLIER
BUKA FILE APG-3
Seharusnya jika sudah bisa membuat database item
maka membuat database supplier tidaklah sulit atau
tidak ada perlu yang diterangkan, namun karena ini
sebuah buku maka dengan terpaksa saya akan
mengulang kode databse item kedalam databse
supplier.
Nama range yang digunakan dalam entri database
3/20/15 A2 ~ Mata Arjuna
19/34irembun.blogspot.com/2015/01/a2.html
supplier
4.1 Define name atau nama Range
Range untuk database supplier "Databasesupplier" :
=OFFSET(Databasesupplier!$A$2;0;0;COUNTA(Databasesupplier!$A:$A)-1;6)
Range untuk kode supplier "Kodesupplier" :
=OFFSET(Databasesupplier!$A$2;1;0;COUNTA(Databasesupplier!$A:$A)-2;1)
Range untuk nama supplier "Namasupplier" :
=OFFSET(Databasesupplier!$B$2;1;0;COUNTA(Databasesupplier!$B:$B)-1;1)
4.2 Desig userform entri database supplier
4.3 Ngoding userform entri database supplier
4.3.a Ngoding event userform active
Private Sub UserForm_Activate()
Set dtsupplier = Sheets("Databasesupplier")
'Jika data yang ditampilkan merupakan hasil
penyaringan
If dtsupplier.FilterMode Then
'Tampilkan seluruh data dalam worksheet
databse supplier
dtsupplier.ShowAllData
End If
If dtsupplier.Range("A3").Value = "" Then
3/20/15 A2 ~ Mata Arjuna
20/34irembun.blogspot.com/2015/01/a2.html
MsgBox "Database supplier kosong"
Exit Sub
End If
Call tampilsupplier
End Sub
4.3.b Ngoding event data kosong
Sub DataKosong()
Set dtsupplier = Sheets("Databasesupplier")
If dtsupplier.Range("A3").Value = "" Then
MsgBox "Database supplier kosong"
Exit Sub
End If
End Sub
4.3.c Ngoding event pencarian berdasarkan kode
supplier
Private Sub cmCkode_Click()
'dtsupplier adalah worksheet Databasesupplier
Set dtsupplier = Sheets("Databasesupplier")
'iPaData adalah range Databasesupplier
Set iPaData =
dtsupplier.Range("Databasesupplier")
'TmptFltr adalah range L2:N3 worksheet
Databasesupplier
Set TmptFltr = dtsupplier.Range("O2:P3")
'Pencarian pada range Range B
With dtsupplier.Range("Kodesupplier")
'c merupakan sel hasil pencarian
Set c = .Find(tKode.Value, LookIn:=xlValues)
'Jika tidak sel berisi kata kunci Range B
If c Is Nothing Then
lCari.Clear
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Range B
Else
dtsupplier.Range("O3:P3").ClearContents
'Memasukkan Range B ke dalam sel M3
dtsupplier.Range("O3").Value = "*" & tKode.Value
& "*"
3/20/15 A2 ~ Mata Arjuna
21/34irembun.blogspot.com/2015/01/a2.html
'Penyaringan data menggunakan Advanced
Filter
iPaData.AdvancedFilter Action:=xlFilterInPlace,
_
CriteriaRange:=TmptFltr
'Memanggil Sub Procedure tampilsupplier
Call tampilsupplier
End If
End With
End Sub
4.3.d Ngoding event pencarian berdasarkan nama
supplier
Private Sub cmCnama_Click()
'dtsupplier adalah worksheet Databasesupplier
Set dtsupplier = Sheets("Databasesupplier")
'iPaData adalah range Databasesupplier
Set iPaData =
dtsupplier.Range("Databasesupplier")
'TmptFltr adalah range L2:N3 worksheet
Databasesupplier
Set TmptFltr = dtsupplier.Range("O2:P3")
'Pencarian pada range Range B
With dtsupplier.Range("Namasupplier")
'c merupakan sel hasil pencarian
Set c = .Find(tNama.Value, LookIn:=xlValues)
'Jika tidak sel berisi kata kunci Range B
If c Is Nothing Then
lCari.Clear
'Keluar dari Sub Procedure
Exit Sub
'Jika ada sel berisi kata kunci Range B
Else
dtsupplier.Range("O3:P3").ClearContents
'Memasukkan Range B ke dalam sel M3
dtsupplier.Range("P3").Value = "*" &
tNama.Value & "*"
'Penyaringan data menggunakan Advanced
Filter
iPaData.AdvancedFilter Action:=xlFilterInPlace,
_
CriteriaRange:=TmptFltr
3/20/15 A2 ~ Mata Arjuna
22/34irembun.blogspot.com/2015/01/a2.html
'Memanggil Sub Procedure tampilsupplier
Call tampilsupplier
End If
End With
End Sub
4.3.e Ngoding event tombol tambah
Private Sub cmTambah_Click()
Set dtsupplier = Sheets("Databasesupplier")
SelKosong =
dtsupplier.Cells(dtsupplier.Rows.Count, "A"). _
End(xlUp).Offset(0, 0).Row
If tKode.Value = "" Then
MsgBox "Kolom kosong"
tKode.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf talamat.Value = "" Then
MsgBox "Kolom kosong"
talamat.SetFocus
Exit Sub
ElseIf tkontak.Value = "" Then
MsgBox "Kolom kosong"
tkontak.SetFocus
Exit Sub
ElseIf Temail.Value = "" Then
MsgBox "Kolom kosong"
Temail.SetFocus
Exit Sub
End If
With dtSupplier.Range("KodeSupplier")
Set c = .Find(tKode.Value, LookIn:=xlValues)
If c Is Nothing Then
Else
MsgBox "Maaf kode Supplier " & tKode.Value & "
sudah ada", _
vbOKOnly + vbCritical, "Kode Supplier ganda"
Exit Sub
End If
3/20/15 A2 ~ Mata Arjuna
23/34irembun.blogspot.com/2015/01/a2.html
End With
With dtsupplier
.Cells(SelKosong + 1, 1).Value = tKode.Value
.Cells(SelKosong + 1, 2).Value = tNama.Value
.Cells(SelKosong + 1, 3).Value = talamat.Value
.Cells(SelKosong + 1, 4).Value = tkontak.Value
.Cells(SelKosong + 1, 5).Value = Temail.Value
.Cells(SelKosong + 1, 6).Value = tTelpon.Value
End With
ThisWorkbook.Save
Call tampilsupplier
End Sub
4.3.f Ngoding event tombol edit
Private Sub cmEdit_Click()
Set dtsupplier = Sheets("Databasesupplier")
If tKode.Value = "" Then
MsgBox "Kolom kosong"
tKode.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf talamat.Value = "" Then
MsgBox "Kolom kosong"
talamat.SetFocus
Exit Sub
ElseIf tkontak.Value = "" Then
MsgBox "Kolom kosong"
tkontak.SetFocus
Exit Sub
ElseIf Temail.Value = "" Then
MsgBox "Kolom kosong"
Temail.SetFocus
Exit Sub
End If
Set KeyRangeA =
dtsupplier.Range("Kodesupplier")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
c.Offset(0, 1).Value = tNama.Value
3/20/15 A2 ~ Mata Arjuna
24/34irembun.blogspot.com/2015/01/a2.html
c.Offset(0, 2).Value = talamat.Value
c.Offset(0, 3).Value = tkontak.Value
c.Offset(0, 4).Value = Temail.Value
c.Offset(0, 5).Value = tTelpon.Value
c.Offset(0, 0).Value = tKode.Value
ThisWorkbook.Save
Call tampilsupplier
End Sub
4.3.g Ngoding event tombol hapus
Private Sub cmHapus_Click()
Set dtsupplier = Sheets("Databasesupplier")
Set KeyRangeA =
dtsupplier.Range("Kodesupplier")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
c.Offset(0, 1).Delete Shift:=xlUp
c.Offset(0, 2).Delete Shift:=xlUp
c.Offset(0, 3).Delete Shift:=xlUp
c.Offset(0, 4).Delete Shift:=xlUp
c.Offset(0, 5).Delete Shift:=xlUp
c.Offset(0, 0).Delete Shift:=xlUp
ThisWorkbook.Save
Call tampilsupplier
End Sub
Private Sub tKode_Change()
Set dtsupplier = Sheets("Databasesupplier")
On Error Resume Next
Set KeyRangeA =
dtsupplier.Range("Kodesupplier")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues) 'primer key
tNama.Value = c.Offset(0, 1).Value
talamat.Value = c.Offset(0, 2).Value
tkontak.Value = c.Offset(0, 3).Value
Temail.Value = c.Offset(0, 4).Value
tTelpon.Value = c.Offset(0, 5).Value
End Sub
4.3.h Ngoding event tampilsupplier
Sub tampilsupplier()
3/20/15 A2 ~ Mata Arjuna
25/34irembun.blogspot.com/2015/01/a2.html
'dtsupplier adalah worksheet databse supplier
Set dtsupplier = Sheets("Databasesupplier")
'Menghapus ListBox
lCari.Clear
With lCari
'Menambahkan judul kolom ListBox
.AddItem
' 3 kolom
.ColumnCount = 3
' 3 apa au ah
.BoundColumn = 3
'Judul ListBox kolom pertama
.List(.ListCount - 1, 0) = "Nomor"
'Judul ListBox kolom kedua
.List(.ListCount - 1, 1) = "Kode"
'Judul ListBox kolom ketiga
.List(.ListCount - 1, 2) = "Nama"
'Lebar masing-masing kolom dalam ListBox
.ColumnWidths = 55 & ";" & 60 & ";" & 90
End With
With dtsupplier
'rgTampil adalah range kode barang yang
ditampilkan
Set rgTampil =
dtsupplier.Range("Kodesupplier"). _
SpecialCells(xlCellTypeVisible)
'sTampil merupakan pengulangan setiap sel
dalam rgTampil
For Each sTampil In rgTampil
With lCari
'Memasukkan supplier ke dalam ListBox
.AddItem sTampil.Value
'No record berdasarkan no baris sTampil
dikurangi 2
.List(.ListCount - 1, 0) = sTampil.Row - 2
'Kode barang berdasarkan nilai dalam sTampil
.List(.ListCount - 1, 1) = sTampil.Value
'Nama barang 1 kolom di sebelah kanan
sTampil
.List(.ListCount - 1, 2) = sTampil.Offset(0,
1).Value
End With
Next sTampil
$a0DWD$UMXQD
LUHPEXQEORJVSRWFRPDKWPO
End With
'ListBox menjadi fokus
lCari.SetFocus
End Sub
4.3.i Ngoding event ketika listbox cari diklik
Private Sub lCari_Click()
'Jika baris ListBox yang di-klik bukan baris judul
kolom
If lCari.ListIndex > 0 Then
'Nilai tKode sama dengan nilai ListBox kolom
KODE
tKode.Value = lCari.List(lCari.ListIndex, 1)
End If
End Sub
4.3.j Ngoding event userform ditutup
Private Sub UserForm_QueryClose(Cancel As
Integer, CloseMode As Integer)
Set dtsupplier = Sheets("Databasesupplier")
'Jika data yang ditampilkan merupakan hasil
penyaringan
If dtsupplier.FilterMode Then
'Tampilkan seluruh data dalam worksheet
databse supplier
dtsupplier.ShowAllData
End If
dtsupplier.Range("O3:P3").ClearContents
End Sub
4.3.k Ngoding event tombol keluar
Private Sub cmKeluar_Click()
Unload Me
End Sub
$ 7$ %$ 6 ( 8 6 ( 5
Buka file IPG-4
3/20/15 A2 ~ Mata Arjuna
27/34irembun.blogspot.com/2015/01/a2.html
Database user digunakan untuk membuat daftar
nama user atau pengguna aplikasi, jadi database user
digunakan untuk keperluan akses log in aplikasi, dalam
kasus ini saya membuat 2 (dua) level akses, level Admin
dan Level Karyawan.
1. Level Admin
Jika user log in menggunakan password Admin atau
level Admin, maka user bisa mengakses seluruh fitur
yang ada pada aplikasi gudang ini, hak kases tidak
dibatasi oleh ruang dan waktu :D
2. Level Karyawan
Sedangkan untuk level Karywan hak akses dibatasi,
sebatas transaksi penambahan stok item, transaksi
pengeluaran / pengurangan stok item dan lainya
Tambahan formula pada range F3 :
=VLOOKUP(E3;DatabaseUser;2;FALSE)
Tambahkan formula pada range G3 :
=VLOOKUP(E3;DatabaseUser;3;FALSE)
5.1 Define name atau nama Range
Nama range yang digunakan dalam entri database
user
Range untuk database user "Databaseuser" :
=OFFSET(Databaseuser!$A$2;0;0;COUNTA(Databaseuser!$A:$A)-1;3)
Range untuk kode user "Namauser" :
=OFFSET(Databaseuser!$A$2;1;0;COUNTA(Databaseuser!$A:$A)-2;1)
3/20/15 A2 ~ Mata Arjuna
28/34irembun.blogspot.com/2015/01/a2.html
5.2 Desig userform entri database user
5.3 Ngoding userform entri database user
5.3.a Ngoding event userform active
Private Sub UserForm_Activate()
Set dtUser = Sheets("DatabaseUser")
If dtUser.FilterMode Then
3/20/15 A2 ~ Mata Arjuna
29/34irembun.blogspot.com/2015/01/a2.html
dtUser.ShowAllData
End If
cLevel.AddItem "Admin"
cLevel.AddItem "Karyawan"
cLevel.Value = "Admin"
If dtUser.Range("A3").Value = "" Then
MsgBox "Database User kosong"
Exit Sub
End If
Call tampilUser
End Sub
Sub DataKosong()
Set dtUser = Sheets("DatabaseUser")
If dtUser.Range("A3").Value = "" Then
MsgBox "Database User kosong"
Exit Sub
End If
End Sub
5.3.b Ngoding tombol tambah
Private Sub cmTambah_Click()
Set dtUser = Sheets("DatabaseUser")
SelKosong = dtUser.Cells(dtUser.Rows.Count,
"A"). _
End(xlUp).Offset(0, 0).Row
If tPassword.Value = "" Then
MsgBox "Kolom kosong"
tPassword.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf cLevel.Value = "" Then
MsgBox "Kolom kosong"
cLevel.SetFocus
Exit Sub
End If
With dtUser.Range("NamaUser")
Set c = .Find(tNama.Value, LookIn:=xlValues)
If c Is Nothing Then
Else
3/20/15 A2 ~ Mata Arjuna
30/34irembun.blogspot.com/2015/01/a2.html
MsgBox "Maaf kode User " & tNama.Value & "
sudah ada", _
vbOKOnly + vbCritical, "Kode User ganda"
Exit Sub
End If
End With
With dtUser
.Cells(SelKosong + 1, 1).Value =
tPassword.Value
.Cells(SelKosong + 1, 2).Value = tNama.Value
.Cells(SelKosong + 1, 3).Value = cLevel.Value
End With
ThisWorkbook.Save
Call tampilUser
End Sub
5.3.c Ngoding tombol edit
Private Sub cmEdit_Click()
Set dtUser = Sheets("DatabaseUser")
If tPassword.Value = "" Then
MsgBox "Kolom kosong"
tPassword.SetFocus
Exit Sub
ElseIf tNama.Value = "" Then
MsgBox "Kolom kosong"
tNama.SetFocus
Exit Sub
ElseIf cLevel.Value = "" Then
MsgBox "Kolom kosong"
cLevel.SetFocus
Exit Sub
End If
Set KeyRangeA = dtUser.Range("NamaUser")
Set c = KeyRangeA.Find(tNama.Value, _
LookIn:=xlValues)
c.Offset(0, 1).Value = tPassword.Value
c.Offset(0, 2).Value = cLevel.Value
c.Offset(0, 0).Value = tNama.Value
ThisWorkbook.Save
Call tampilUser
End Sub
3/20/15 A2 ~ Mata Arjuna
31/34irembun.blogspot.com/2015/01/a2.html
5.3.d Ngoding tombol hapus
Private Sub cmHapus_Click()
Set dtUser = Sheets("DatabaseUser")
Set KeyRangeA = dtUser.Range("NamaUser")
Set c = KeyRangeA.Find(tKode.Value, _
LookIn:=xlValues)
c.Offset(0, 1).Delete Shift:=xlUp
c.Offset(0, 2).Delete Shift:=xlUp
c.Offset(0, 0).Delete Shift:=xlUp
ThisWorkbook.Save
Call tampilUser
End Sub
5.3.e Ngoding textbox nama
Private Sub tNama_Change()
Set dtUser = Sheets("DatabaseUser")
On Error Resume Next
Set KeyRangeA = dtUser.Range("NamaUser")
Set c = KeyRangeA.Find(tNama.Value, _
LookIn:=xlValues)
tPassword.Value = c.Offset(0, 1).Value
cLevel.Value = c.Offset(0, 2).Value
End Sub
5.3.f Ngoding event tampilkan user
Sub tampilUser()
Set dtUser = Sheets("DatabaseUser")
lCari.Clear
With lCari
.AddItem
.ColumnCount = 3
.BoundColumn = 3
.List(.ListCount - 1, 0) = "Nama"
.List(.ListCount - 1, 1) = "Password"
.List(.ListCount - 1, 2) = "Level"
.ColumnWidths = 80 & ";" & 70 & ";" & 60
End With
With dtUser
Set rgTampil = dtUser.Range("NamaUser"). _
$a0DWD$UMXQD
LUHPEXQEORJVSRWFRPDKWPO
SpecialCells(xlCellTypeVisible)
For Each sTampil In rgTampil
With lCari
.AddItem sTampil.Value
.List(.ListCount - 1, 0) = sTampil.Value
.List(.ListCount - 1, 1) = sTampil.Offset(0,
1).Value
.List(.ListCount - 1, 2) = sTampil.Offset(0,
2).Value
End With
Next sTampil
End With
lCari.SetFocus
End Sub
5.3.g Ngoding event listbox cari saat diklik
Private Sub lCari_Click()
If lCari.ListIndex > 0 Then
tNama.Value = lCari.List(lCari.ListIndex, 0)
End If
End Sub
5.3.h Ngoding event tombol keluar
Private Sub cmKeluar_Click()
Unload Me
End Sub
. HWHUDQJ DQKoding macro dari pembuatan database item sampai
database user yang belum dibahas sebelumnya
Dalam pembuatan database item, database
pelanggan, database supplier dan database user tidak
ada hal baru atau tidak ada koding macro yang baru
melainkan hanya beberapa saja diantaranya
1 . Ngoding saat listbox cari diklik koding nomor 2.2.l
pada database item
Private Sub lCari_Click()
'Jika baris ListBox yang di-klik bukan baris judul
3/20/15 A2 ~ Mata Arjuna
33/34irembun.blogspot.com/2015/01/a2.html
kolom
If lCari.ListIndex > 0 Then
'Nilai tKode sama dengan nilai ListBox kolom
KODE
tKode.Value = lCari.List(lCari.ListIndex, 1)
End If
End Sub
Kode macro "tKode.Value = lCari.List(lCari.ListIndex, 1)"
memasukan nilai listbox kedalam nilai textbox, listbox
terdapat 3 kolom, kolom pertama adalah "nomor"
kolom kedua "kode" kolom ketiga adalah "nama", dalam
koding nilai listbox kolom "kode" adalah "
.List(.ListCount - 1, 1) = "Kode" ", jadi kode macro untuk
memasukan nilai kolom kode pada listbox kedalam
nilai tetxbox "tKode.Value = lCari.List(lCari.ListIndex, 1)"
, jika yang akan dimasukan kedalam textbox kolom
"nama" maka kodenya berubah menjadi "tKode.Value =
lCari.List(lCari.ListIndex, 2)" , jadi dari tadi saya ngalor
ngidul hanya mau menjelaskan seperti ini
Kolom nomor " tKode.Value = lCari.List(lCari.ListIndex,
0) "
Kolom kode " tKode.Value = lCari.List(lCari.ListIndex, 1) "
Kolom nama " tKode.Value = lCari.List(lCari.ListIndex, 2)
" .
2. Ngoding pada tombol tambah item , pelanggan,
supplier, dan user anda akan menemukan fungsi
sederhana dari IF error, perhatikan kodingnya
If tKode.Value = "" Then
MsgBox "Kolom kosong"
tKode.SetFocus
Exit Sub
else......
End if
Kode tersebut berfungsi mencegah agar kolom textbox
tidak kosong saat tombol tambah dieksekusi.
3. Ngoding mencegah data kembar atau mencegah
agar tidak terdapat data ganda pada range tertentu,
lihat kodenya
3/20/15 A2 ~ Mata Arjuna
34/34irembun.blogspot.com/2015/01/a2.html
...............
With dtitem.Range("KodeItem")
Set c = .Find(tKode.Value, LookIn:=xlValues)
If c Is Nothing Then
Else
MsgBox "Maaf kode item " & tKode.Value & "
sudah ada", _
vbOKOnly + vbCritical, "Kode item ganda"
Exit Sub
End If
End With
Kode tersebut akan memberikan alert ketika pada
kolom textbox "tkode" bernilai sama dengan salah satu
data yang ada pada range A (KodeItem), jika anda
menghendaki pada range B (nama item) tidak boleh
terdapat nama item sama anda tinggal rubah " With
dtitem.Range("KodeItem") " menjadi " With
dtitem.Range("NamaItem") " lalu kode " Set c =
.Find(tKode.Value, LookIn:=xlValues) " menjadi " Set c =
.Find(tNama.Value, LookIn:=xlValues) " hasilnya akan
seperti ini
With dtitem.Range("NamaItem")
Set c = .Find(tNama.Value, LookIn:=xlValues)
If c Is Nothing Then
Else
MsgBox "Maaf nama item " & tNama.Value & "
sudah ada", _
vbOKOnly + vbCritical, "Nama item ganda"
Exit Sub
End If
End With