koreksi :
isi CmdSave_Click dicopy ke module dan ganti namanya menjadi Saving dan kode aslinya ubah menjadi : Private Sub CmdSave_Click() Call Saving End Sub pindahkan MainTblHeight ke module dimana sub rutin Saving berada Pindahkan DefineSubTBL ke module dimana sub rutin Saving berada Ubah kode dari Saving dan DefineSubTBL Sub Saving() ' kode diambil dari CmdSave_Click ' ganti JmlItem = Range(Range("A9"), Range("A9").End(xlDown)).Rows.Count ' menjadi : Range("A9").Activate If Range("A9").Offset(1) <> "" Then JmlItem = Range(Range("A9"), Range("A9").End(xlDown)).Rows.Count Else JmlItem = 1 End If End Sub Private Sub DefineSubTBL() ' Yang di ubah ' Set SubTbl = Range(SubTbl, SubTbl.End(xlDown)) ' menjadi If SubTbl.Offset(1) <> "" Then Set SubTbl = Range(SubTbl, SubTbl.End(xlDown)) End If End Sub sehingga menjadi : Private Sub Saving() '---------------------------------- ' siti Vi / simple-data-entry '--------------------21-09-2008---- Dim TblDat As Range Dim TblSub As Range Dim NewRow As Long Dim NewSub As Long Dim InvItm As Integer Dim r As Long, c As Integer Set TblDat = Sheets("DataInv").Range("B3") Set TblSub = Sheets("DataSub").Range("B3") With WorksheetFunction InvItm = .Count(Sheets("InvForm").[c9:c28]) NewRow = .CountA(Sheets("DataInv").[B3:B10000]) + 1 NewSub = .CountA(Sheets("DataSub").Range("B3:B40000")) End With Application.Calculation = xlCalculationManual With Sheets("InvForm") If .[B5] = "" Then MsgBox "Nama Pelanggan Belum diisi", 48, "INV Data Entry" .[B5].Select Exit Sub End If If .[A9] = "" Then MsgBox "Items Belum diisi", 48, "INV Data Entry" .[A9].Select Exit Sub End If '--- mengisi tabel induk ---- TblDat(NewRow, 0) = NewRow ' # urut data TblDat(NewRow, 1) = .[B2] ' nr.inv TblDat(NewRow, 2) = .[B3] ' inv date TblDat(NewRow, 2).NumberFormat = "dd mmm yy" TblDat(NewRow, 3) = .[B5] ' nama TblDat(NewRow, 4) = .[B6] ' alamat TblDat(NewRow, 5) = .[D29] ' subTtl TblDat(NewRow, 6) = .[D30] ' ppn TblDat(NewRow, 7) = .[D31] ' total TblDat(NewRow, 8) = InvItm ' juml jenis produk '--- mengisi tabel anak ---- Dim JmlItem As Byte ' Koreksi Range("A9").Activate If Range("A9").Offset(1) <> "" Then JmlItem = Range(Range("A9"), Range("A9").End(xlDown)).Rows.Count Else JmlItem = 1 End If For r = 1 To JmlItem If .[A9:D28].Cells(r, 1) = "" Then Exit For TblSub(NewSub + r, 0) = NewSub + r '# urut TblSub(NewSub + r, 1) = .[B2] ' Nr Inv TblSub(NewSub + r, 2) = .[B3] ' Tg Inv TblSub(NewSub + r, 2).NumberFormat = "dd mmm yy" TblSub(NewSub + r, 3) = .[B5] ' Nm Cust For c = 4 To 7 ' NmProduk, Harga, Qty, TotalHarga TblSub(NewSub + r, c) = .[A9:D28].Cells(r, c - 3) Next c Next r '--- reset form [isian] = "" ' kosongkan isian .[G2] = .[B2].Value ' inv terakhir di update .[B3] = Date ' tgl hari ini .[B5].Select End With Call MainTblHeight: Call DefineSubTBL Application.Calculation = xlCalculationAutomatic End Sub Private Sub DefineSubTBL() Dim SubTbl As Range Set SubTbl = Sheets("DataSub").Range("A3") If SubTbl.Offset(1) <> "" Then Set SubTbl = Range(SubTbl, SubTbl.End(xlDown)) End If Set SubTbl = Range(SubTbl, SubTbl.End(xlToRight)) SubTbl.Name = "SubTBL" End Sub To: belajar-excel@yahoogroups.com From: irwan2...@yahoo.com Date: Tue, 13 Mar 2012 17:32:50 +0800 Subject: [belajar-excel] Simple Invoicing System NYANGKUT!!!! > saya sedang mempelajari file yang pernah diberikan contoh oleh ba siti..... sedang asik asik coba belajar, tetapi ada eror pada filenya....> apakah ada yang bisa membantu membenarkan vbanya atau mencerahkan kenapa bisa terjadi masalah ? saya coba mengganti cara kerja kami diperusahaan sekarang yang melakukan rekap penjualan dan pembuatan faktur secara manual...... mohon bantuannya teman teman,>>> irwan wijaya