Quantcast

[belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA

Harry
Dear BeExceller,
 
Mohon informasi dan penjelasan akan
pertanyaan saya dengan situasi dan kondisi sebabagai berikut:
Pertanyaan No. 1
Jika pada File “STUDI KASUS (SIMPAN
DATA USER FORM PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet “REGISTRASI”
dan Sheet “DATABASE”. Pada file tersebut, jika saya mengisi User Form pada
Sheet “REGISTRASI” otomatis tersimpan pada Sheet “DATABASE”.
 
Pertanyaan saya adalah:
Bagaimana caranya jika Sheet “DATABASE”
tersebut saya pindahkan pada File yang berbada Mis. File dng nama “DATABASE”.
 
 
Pertanyaan No. 2
Pada File “STUDI KASUS (SIMPAN DATA
USER FORM PADA FILE YANG BEDA)” Sheet “DATABASE” kolom C15 merupakan
penjumlahan dari C2 s/d C13. Jika User Form “JUMLAH” kita Click otomatis muncul
hasil penjumlahannya. Tetapi jika databasenya bertambah, kok rumusnya hilang
dan berganti dengan angka yang hasilnya tidak Up To Date (tidak sesuai dengan
hasil yang diinginkan)…???
 
 
Mohon berkenan informasinya.
 
Regards,
 
 
Harry
 
N/B:
·                Data Sekarang: File “STUDI KASUS
(SIMPAN DATA USER FORM PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet
“REGISTRASI” dan Sheet “DATABASE”.
·                Data yang seharusnya: File “STUDI
KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA)” hanya memiliki 1 (satu)
Sheet yaitu Sheet “REGISTRASI” sedangkan Sheet “DATABASE” terdapat pada file
yang berbeda yaitu File “DATABASE”

STUDI KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA).xls (95K) Download Attachment
Kid
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA

Kid
Administrator
Dear Harry,

*Pertanyaan No. 1*
>> pada event click tombol Save, ubah baris kodenya menjadi :
Private Sub cmdAdd_Click()
   Dim iRow As Long, Reg As Range, oCtrl As Control

    '----------------------------
    'Kid : 2012-01-29 : modified
    '----------------------------
    'deklarasi variabel workbook
    Dim wbkA As Workbook, wbkDB As Workbook

    'init workbooknya
    Set wbkA = ThisWorkbook
    Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
    wbkA.Activate

    'init range database nya
    Set Reg = wbkDB.Worksheets("DATABASE").Cells(1)
    '----------------------------

   'find first empty row in database
   iRow = Reg(Rows.Count, 1).End(xlUp).Offset(1, 0).Row


   'copy the data to the database
   Reg(iRow, 1).Value = txtNoreg.Value
   Reg(iRow, 2).Value = txtNama.Value

   'clear the data / modified by Haps / 30 Jul2011
   txtNoreg.Value = ""
   txtNama.Value = ""

    '----------------------------
    'Kid : 2012-01-29 : modified
    '----------------------------
   * 'tulis jumlah record database di registrasi cell a1**
    wbkA.Sheets("registrasi").Range("a1").Formula =
Reg.CurrentRegion.Rows.Count - 1*

    'tutup database sekalian simpan
    Application.DisplayAlerts = False
    wbkDB.Close True
    Application.DisplayAlerts = True
    wbkA.Activate
    '----------------------------

Unload Me
End Sub

*Pertanyaan No. 2*
Database yang baik tidak memiliki baris Sum atau Subtotal di baris ke
sekiannya. Akan lebih baik lagi jika tidak ada formula didalamnya.
Untuk hal ini, maka jumlah record database dapat disimpan pada sheet
registrasi cell a1 yang berada di file interface (*lihat baris hijau pada
no 1 di atas*)
Karena jumlah record ada di sheet registrasi, maka text box txtJumlah pada
form frmJumlah diubah nilai properti Control Source-nya menjadi merujuk ke
cell A1 di sheet registrasi ( *=registrasi!a1* )

Manfaatkan properti application.screenupdating = true sebelum proses
dimulai dan application.screenupdating = false sebelum proses selesai untuk
mengurangi efek blink saat buka workbook.

Jika control source dari txtjumlah di kosongkan, maka buat prosedur event
initialize form dan beri baris kode :
    'deklarasi variabel workbook
    Dim wbkA As Workbook, wbkDB As Workbook

    Application.ScreenUpdating = False

    'init workbooknya
    Set wbkA = ThisWorkbook
    Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
    wbkA.Activate

    'tulis jumlah record database di registrasi cell a1
    txtjumlah.Text =
wbkDB.Sheets("database").Range("a1").CurrentRegion.Rows.Count - 1

    'tutup database sekalian simpan
    Application.DisplayAlerts = False
    wbkDB.Close True
    Application.DisplayAlerts = True
    wbkA.Activate

    Application.ScreenUpdating = True

Regards,
Kid.

2012/1/29 Harry <[hidden email]>

> **
>
>
> Dear BeExceller,
>
> Mohon informasi dan penjelasan akan pertanyaan saya dengan situasi dan
> kondisi sebabagai berikut:
> Pertanyaan No. 1
> Jika pada File “STUDI KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA)”
> terdapat 2 (dua) Sheet yaitu Sheet “REGISTRASI” dan Sheet “DATABASE”. Pada
> file tersebut, jika saya mengisi User Form pada Sheet “REGISTRASI” otomatis
> tersimpan pada Sheet “DATABASE”.
>
> Pertanyaan saya adalah:
> Bagaimana caranya jika Sheet “DATABASE” tersebut saya pindahkan pada File
> yang berbada Mis. File dng nama “DATABASE”.
>
>
> Pertanyaan No. 2
> Pada File “STUDI KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA)” Sheet
> “DATABASE” kolom C15 merupakan penjumlahan dari C2 s/d C13. Jika User Form
> “JUMLAH” kita Click otomatis muncul hasil penjumlahannya. Tetapi jika
> databasenya bertambah, kok rumusnya hilang dan berganti dengan angka yang
> hasilnya tidak Up To Date (tidak sesuai dengan hasil yang diinginkan)…???
>
>
> Mohon berkenan informasinya.
>
> Regards,
>
>
> Harry
>
> N/B:
> ·                Data Sekarang: File “STUDI KASUS (SIMPAN DATA USER FORM
> PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet “REGISTRASI” dan
> Sheet “DATABASE”.
> ·                Data yang seharusnya: File “STUDI KASUS (SIMPAN DATA
> USER FORM PADA FILE YANG BEDA)” hanya memiliki 1 (satu) Sheet yaitu Sheet
> “REGISTRASI” sedangkan Sheet “DATABASE” terdapat pada file yang berbeda
> yaitu File “DATABASE”
>
>  
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Bls: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA

Harry
Dear Mr. Kid,

Terima kasih atas informasi dan rumusnya.
Bantuannya sangat bermanfaat.

Regards,


Harry



________________________________
 Dari: Kid Mr. <[hidden email]>
Kepada: [hidden email]
Dikirim: Minggu, 29 Januari 2012 22:31
Judul: Re: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA
 

 
Dear Harry,

Pertanyaan No. 1
>> pada event click tombol Save, ubah baris kodenya menjadi :
Private Sub cmdAdd_Click()
   Dim iRow As Long, Reg As Range, oCtrl As Control
  
   '----------------------------
    'Kid : 2012-01-29 : modified
    '----------------------------
    'deklarasi variabel workbook
    Dim wbkA As Workbook, wbkDB As Workbook
   
    'init workbooknya
    Set wbkA = ThisWorkbook
    Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
    wbkA.Activate
   
    'init range database nya
    Set Reg = wbkDB.Worksheets("DATABASE").Cells(1)
    '----------------------------
  
   'find first empty row in database
   iRow = Reg(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
  
  
   'copy the data to the database
   Reg(iRow, 1).Value = txtNoreg.Value
   Reg(iRow, 2).Value = txtNama.Value
  
   'clear the data / modified by Haps / 30 Jul2011
   txtNoreg.Value = ""
   txtNama.Value = ""

   '----------------------------
    'Kid : 2012-01-29 : modified
    '----------------------------
   'tulis jumlah record database di registrasi cell a1
    wbkA.Sheets("registrasi").Range("a1").Formula = Reg.CurrentRegion.Rows.Count - 1
   
    'tutup database sekalian simpan
    Application.DisplayAlerts = False
    wbkDB.Close True
    Application.DisplayAlerts = True
    wbkA.Activate
    '----------------------------
   
Unload Me
End Sub

Pertanyaan No. 2
Database yang baik tidak memiliki baris Sum atau Subtotal di baris ke sekiannya. Akan lebih baik lagi jika tidak ada formula didalamnya.
Untuk hal ini, maka jumlah record database dapat disimpan pada sheet registrasi cell a1 yang berada di file interface (lihat baris hijau pada no 1 di atas)
Karena jumlah record ada di sheet registrasi, maka text box txtJumlah pada form frmJumlah diubah nilai properti Control Source-nya menjadi merujuk ke cell A1 di sheet registrasi ( =registrasi!a1 )

Manfaatkan properti application.screenupdating = true sebelum proses dimulai dan application.screenupdating = false sebelum proses selesai untuk mengurangi efek blink saat buka workbook.

Jika control source dari txtjumlah di kosongkan, maka buat prosedur event initialize form dan beri baris kode :
    'deklarasi variabel workbook
    Dim wbkA As Workbook, wbkDB As Workbook
   
    Application.ScreenUpdating = False
   
    'init workbooknya
    Set wbkA = ThisWorkbook
    Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
    wbkA.Activate

    'tulis jumlah record database di registrasi cell a1
    txtjumlah.Text = wbkDB.Sheets("database").Range("a1").CurrentRegion.Rows.Count - 1

    'tutup database sekalian simpan
    Application.DisplayAlerts = False
    wbkDB.Close True
    Application.DisplayAlerts = True
    wbkA.Activate

    Application.ScreenUpdating = True

Regards,
Kid.


2012/1/29 Harry <[hidden email]>

 

>Dear BeExceller,

>Mohon informasi dan penjelasan akan
pertanyaan saya dengan situasi dan kondisi sebabagai berikut:
>Pertanyaan No. 1
>Jika pada File “STUDI KASUS (SIMPAN
DATA USER FORM PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet “REGISTRASI”
dan Sheet “DATABASE”. Pada file tersebut, jika saya mengisi User Form pada
Sheet “REGISTRASI” otomatis tersimpan pada Sheet “DATABASE”.

>Pertanyaan saya adalah:
>Bagaimana caranya jika Sheet “DATABASE”
tersebut saya pindahkan pada File yang berbada Mis. File dng nama “DATABASE”.


>Pertanyaan No. 2
>Pada File “STUDI KASUS (SIMPAN DATA
USER FORM PADA FILE YANG BEDA)” Sheet “DATABASE” kolom C15 merupakan
penjumlahan dari C2 s/d C13. Jika User Form “JUMLAH” kita Click otomatis muncul
hasil penjumlahannya. Tetapi jika databasenya bertambah, kok rumusnya hilang
dan berganti dengan angka yang hasilnya tidak Up To Date (tidak sesuai dengan
hasil yang diinginkan)…???



>Mohon berkenan informasinya.

>Regards,


>Harry

>N/B:
>·                Data Sekarang: File “STUDI KASUS
(SIMPAN DATA USER FORM PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet
“REGISTRASI” dan Sheet “DATABASE”.
>·                Data yang seharusnya: File “STUDI
KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA)” hanya memiliki 1 (satu)
Sheet yaitu Sheet “REGISTRASI” sedangkan Sheet “DATABASE” terdapat pada file
yang berbeda yaitu File “DATABASE”
>

 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Bls: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA

Harry
In reply to this post by Kid
Dear Mr, Kid,

Terima kasih atas informasi rumusnya.
Setelah saya menuangkan rumus yang Bapak berikan, hasilnya ok. Tapi saya mengalami kendala / pertanyaan sebagai berikut:

1. Pada file "DATABASE"-nya (Sheet Database) apa bisa di protect...???
2. Apakah pada file "DATABASE" tersebut bisa kita buat user Form yang dapat di Link ke file "REGISTRASI" (Sheet ..........)...???
3. Pada program pinjam meminjam buku yang telah saya buat sebelumnya, misalnya untuk registrasi pengembalian buku yang telah dipinjam terdapat rumus sbb:
Private Sub UserForm_Initialize()
   Dim i As Long, TbHeigh As Long, TbWidth
  
   Set MemMaster = Sheets("Registrasi").Cells(1).CurrentRegion
   TbHeigh = MemMaster.Rows.Count - 1
   TbWidth = MemMaster.Columns.Count - 1
   Set MemMaster = MemMaster.Offset(1, 0).Resize(TbHeigh, TbWidth)
  
   Application.EnableEvents = False
   With Cbonoregpinjam
      .ColumnCount = 2
      .BoundColumn = 1
      For i = 1 To TbHeigh
         .AddItem
         .List(i - 1, 0) = MemMaster(i, 1)
      Next i
   End With
   Application.EnableEvents = True
   txttglkembali = Format(Date, "mm/dd/yyyy")
   txtjamkembali = Format(Time, "h:mm")
        
        
End Sub

Private Sub Cbonoregpinjam_Change()
   Dim r As Integer
   If Cbonoregpinjam.ListIndex > -0 Then
      r = Cbonoregpinjam.ListIndex + 1
      If r > 0 Then
         txtktp.Value = MemMaster(r, 2)
         txtnama.Value = MemMaster(r, 3)
    
Tapi saya selalu gagal dalam memunculkan User Form "BUKU KEMBALI".
Pada program sebelumnya yang situasinya Sheet "DATABASE" menjadi satu kesatuan dalam i (satu) file, rimus tersebut diatas bisa digunakan. tapi setelah Sheet "DATABASE" saya pindahkan menjadi file yang berbada, mengapa rumus tersebut tidak dapat difungsikan.

Masih terkait dengan pertanyaan No. 3, mohon berkenan informasi dan rumusnya...???

Terima kasih atas berkenan informasi dan rumusnya.


Regards,


Harry

N/B:
Saya telah mencoba menggunakan rumus sbb:
Private Sub UserForm_Initialize()
  Dim wbkA As Workbook, wbkDB As Workbook
  Set wbkA = ThisWorkbook
  Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")


tapi yang menjadi kesalahan adalah:
TbHeigh = MemMaster.Rows.Count - 1
TbWidth = MemMaster.Columns.Count - 1

________________________________
 Dari: Kid Mr. <[hidden email]>
Kepada: [hidden email]
Dikirim: Minggu, 29 Januari 2012 22:31
Judul: Re: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA
 

 
Dear Harry,

Pertanyaan No. 1
>> pada event click tombol Save, ubah baris kodenya menjadi :
Private Sub cmdAdd_Click()
   Dim iRow As Long, Reg As Range, oCtrl As Control
  
   '----------------------------
    'Kid : 2012-01-29 : modified
    '----------------------------
    'deklarasi variabel workbook
    Dim wbkA As Workbook, wbkDB As Workbook
   
    'init workbooknya
    Set wbkA = ThisWorkbook
    Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
    wbkA.Activate
   
    'init range database nya
    Set Reg = wbkDB.Worksheets("DATABASE").Cells(1)
    '----------------------------
  
   'find first empty row in database
   iRow = Reg(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
  
  
   'copy the data to the database
   Reg(iRow, 1).Value = txtNoreg.Value
   Reg(iRow, 2).Value = txtNama.Value
  
   'clear the data / modified by Haps / 30 Jul2011
   txtNoreg.Value = ""
   txtNama.Value = ""

   '----------------------------
    'Kid : 2012-01-29 : modified
    '----------------------------
   'tulis jumlah record database di registrasi cell a1
    wbkA.Sheets("registrasi").Range("a1").Formula = Reg.CurrentRegion.Rows.Count - 1
   
    'tutup database sekalian simpan
    Application.DisplayAlerts = False
    wbkDB.Close True
    Application.DisplayAlerts = True
    wbkA.Activate
    '----------------------------
   
Unload Me
End Sub

Pertanyaan No. 2
Database yang baik tidak memiliki baris Sum atau Subtotal di baris ke sekiannya. Akan lebih baik lagi jika tidak ada formula didalamnya.
Untuk hal ini, maka jumlah record database dapat disimpan pada sheet registrasi cell a1 yang berada di file interface (lihat baris hijau pada no 1 di atas)
Karena jumlah record ada di sheet registrasi, maka text box txtJumlah pada form frmJumlah diubah nilai properti Control Source-nya menjadi merujuk ke cell A1 di sheet registrasi ( =registrasi!a1 )

Manfaatkan properti application.screenupdating = true sebelum proses dimulai dan application.screenupdating = false sebelum proses selesai untuk mengurangi efek blink saat buka workbook.

Jika control source dari txtjumlah di kosongkan, maka buat prosedur event initialize form dan beri baris kode :
    'deklarasi variabel workbook
    Dim wbkA As Workbook, wbkDB As Workbook
   
    Application.ScreenUpdating = False
   
    'init workbooknya
    Set wbkA = ThisWorkbook
    Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
    wbkA.Activate

    'tulis jumlah record database di registrasi cell a1
    txtjumlah.Text = wbkDB.Sheets("database").Range("a1").CurrentRegion.Rows.Count - 1

    'tutup database sekalian simpan
    Application.DisplayAlerts = False
    wbkDB.Close True
    Application.DisplayAlerts = True
    wbkA.Activate

    Application.ScreenUpdating = True

Regards,
Kid.


2012/1/29 Harry <[hidden email]>

 

>Dear BeExceller,

>Mohon informasi dan penjelasan akan
pertanyaan saya dengan situasi dan kondisi sebabagai berikut:
>Pertanyaan No. 1
>Jika pada File “STUDI KASUS (SIMPAN
DATA USER FORM PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet “REGISTRASI”
dan Sheet “DATABASE”. Pada file tersebut, jika saya mengisi User Form pada
Sheet “REGISTRASI” otomatis tersimpan pada Sheet “DATABASE”.

>Pertanyaan saya adalah:
>Bagaimana caranya jika Sheet “DATABASE”
tersebut saya pindahkan pada File yang berbada Mis. File dng nama “DATABASE”.


>Pertanyaan No. 2
>Pada File “STUDI KASUS (SIMPAN DATA
USER FORM PADA FILE YANG BEDA)” Sheet “DATABASE” kolom C15 merupakan
penjumlahan dari C2 s/d C13. Jika User Form “JUMLAH” kita Click otomatis muncul
hasil penjumlahannya. Tetapi jika databasenya bertambah, kok rumusnya hilang
dan berganti dengan angka yang hasilnya tidak Up To Date (tidak sesuai dengan
hasil yang diinginkan)…???



>Mohon berkenan informasinya.

>Regards,


>Harry

>N/B:
>·                Data Sekarang: File “STUDI KASUS
(SIMPAN DATA USER FORM PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet
“REGISTRASI” dan Sheet “DATABASE”.
>·                Data yang seharusnya: File “STUDI
KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA)” hanya memiliki 1 (satu)
Sheet yaitu Sheet “REGISTRASI” sedangkan Sheet “DATABASE” terdapat pada file
yang berbeda yaitu File “DATABASE”
>

 
Kid
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA

Kid
Administrator
Dear Harry,

1. Proteksi sheet :
Sheets("nama sheetnya").protect "passwordnya"       'protect
Sheets("nama sheetnya").unprotect "passwordnya"      'unprotect

Ketika akan olah sheet terproteksi, lakukan unprotect lebih dulu.
Usai mengolah sheet terproteksi, lakukan protect lagi.

2. Sebaiknya file database hanya berisi data saja. Seluruh form input
(interface input) seoerti pinjam, kembali, perpanjang, beli, bayar, dsb
diletakkan pada file terpisah, misal file Input. Untuk laporan (output)
seperti laporan bulanan, daftar peminjam yang telat pengembaliannya, dsb,
juga diletakkan di file terpisah, misal di file Output.
Untuk dapat memanfaatkan data di workbook database sheet database, maka
workbook database dibuka lebih dulu. Untuk keindahan, bisa saja workbook
database disembunyikan. Yang penting, jangan lupa untuk menutup file
database ketika usai menggunakannya.

Misal, sebuah form butuh data dari sheet database, maka saat init form,
lakukan buka file database. Bila perlu, sembunyikan file database. Ketika
form ditutup, pada event query close bisa dilakukan penutupan file database.

Contoh buka dan sembunyikan file :
'letakkan di bagian deklarasi variabel module
Public wbkApp as workbook, wbkDB as workbook

'contoh routine buka dan sembunyikan file excel
public sub BukaDanSembunyi()
     application.screenupdating=false
      set wbkapp=thisworkbook
      set wbkdb=workbooks.open "d:\data\database.xls"
      wbkapp.activate
      windows(wbkdb.name).visible=false
      application.screenupdating=true
end sub

'contoh tampilkan kembali yang dihide
public sub TampilkanLagiSiFile()
      windows(wbkdb.name).visible=true
end sub

'contoh tutup file
public sub TutupFileExcel()
      wbkdb.close false     'jika tidak mau disimpan pengubahan datanya
end sub

3. Sayangnya listing code yang disertakan tidak menampakkan penggunaan
sheet database.
Jika file database telah dibuka, mestinya seluruh kegiatan (non formula
links) yang membutuhkan data di sheet database pada file database tersebut
dapat dilakukan seperti :

'contoh init variabel sheet database di file database
dim shtDB as worksheet
set shtdb=wbkdb.sheets("database")

'contoh init variabel range di sheet database pada file database
dim rngDB as range
set rngdb=wbkdb.sheet("database").range("a1").currentregion

Wassalamualaikum Wr. Wb.
Kid.


2012/2/8 Harry <[hidden email]>

> **
>
>
> Dear Mr, Kid,
>
>  Terima kasih atas informasi rumusnya.
> Setelah saya menuangkan rumus yang Bapak berikan, hasilnya ok. Tapi saya
> mengalami kendala / pertanyaan sebagai berikut:
>  1. Pada file "DATABASE"-nya (Sheet Database) apa bisa di protect...???
> 2. Apakah pada file "DATABASE" tersebut bisa kita buat user Form yang
> dapat di Link ke file "REGISTRASI" (Sheet ..........)...???
> 3. Pada program pinjam meminjam buku yang telah saya buat sebelumnya,
> misalnya untuk registrasi pengembalian buku yang telah dipinjam terdapat
> rumus sbb:
>
>  Private Sub UserForm_Initialize()
>    Dim i As Long, TbHeigh As Long, TbWidth
>
>    Set MemMaster = Sheets("Registrasi").Cells(1).CurrentRegion
>    TbHeigh = MemMaster.Rows.Count - 1
>    TbWidth = MemMaster.Columns.Count - 1
>    Set MemMaster = MemMaster.Offset(1, 0).Resize(TbHeigh, TbWidth)
>
>    Application.EnableEvents = False
>    With Cbonoregpinjam
>       .ColumnCount = 2
>       .BoundColumn = 1
>       For i = 1 To TbHeigh
>          .AddItem
>          .List(i - 1, 0) = MemMaster(i, 1)
>       Next i
>    End With
>    Application.EnableEvents = True
>    txttglkembali = Format(Date, "mm/dd/yyyy")
>    txtjamkembali = Format(Time, "h:mm")
>
>
> End Sub
>
> Private Sub Cbonoregpinjam_Change()
>    Dim r As Integer
>    If Cbonoregpinjam.ListIndex > -0 Then
>       r = Cbonoregpinjam.ListIndex + 1
>       If r > 0 Then
>          txtktp.Value = MemMaster(r, 2)
>          txtnama.Value = MemMaster(r, 3)
>
> Tapi saya selalu gagal dalam memunculkan User Form "BUKU KEMBALI".
> Pada program sebelumnya yang situasinya Sheet "DATABASE" menjadi satu
> kesatuan dalam i (satu) file, rimus tersebut diatas bisa digunakan. tapi
> setelah Sheet "DATABASE" saya pindahkan menjadi file yang berbada, mengapa
> rumus tersebut tidak dapat difungsikan.
>
> Masih terkait dengan pertanyaan No. 3, mohon berkenan informasi dan
> rumusnya...???
>
> Terima kasih atas berkenan informasi dan rumusnya.
>
>
> Regards,
>
>
> Harry
>
> N/B:
> Saya telah mencoba menggunakan rumus sbb:
> Private Sub UserForm_Initialize()
>
>   Dim wbkA As Workbook, wbkDB As Workbook
>   Set wbkA = ThisWorkbook
>   Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
>
> tapi yang menjadi kesalahan adalah:
> TbHeigh = MemMaster.Rows.Count - 1
> TbWidth = MemMaster.Columns.Count - 1
>   ------------------------------
> *Dari:* Kid Mr. <[hidden email]>
> *Kepada:* [hidden email]
> *Dikirim:* Minggu, 29 Januari 2012 22:31
> *Judul:* Re: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA
>
>
> Dear Harry,
>
> *Pertanyaan No. 1*
> >> pada event click tombol Save, ubah baris kodenya menjadi :
> Private Sub cmdAdd_Click()
>    Dim iRow As Long, Reg As Range, oCtrl As Control
>
>     '----------------------------
>     'Kid : 2012-01-29 : modified
>     '----------------------------
>     'deklarasi variabel workbook
>     Dim wbkA As Workbook, wbkDB As Workbook
>
>     'init workbooknya
>     Set wbkA = ThisWorkbook
>     Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
>     wbkA.Activate
>
>     'init range database nya
>     Set Reg = wbkDB.Worksheets("DATABASE").Cells(1)
>     '----------------------------
>
>    'find first empty row in database
>    iRow = Reg(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
>
>
>    'copy the data to the database
>    Reg(iRow, 1).Value = txtNoreg.Value
>    Reg(iRow, 2).Value = txtNama.Value
>
>    'clear the data / modified by Haps / 30 Jul2011
>    txtNoreg.Value = ""
>    txtNama.Value = ""
>
>     '----------------------------
>     'Kid : 2012-01-29 : modified
>     '----------------------------
>    * 'tulis jumlah record database di registrasi cell a1**
>     wbkA.Sheets("registrasi").Range("a1").Formula =
> Reg.CurrentRegion.Rows.Count - 1*
>
>     'tutup database sekalian simpan
>     Application.DisplayAlerts = False
>     wbkDB.Close True
>     Application.DisplayAlerts = True
>     wbkA.Activate
>     '----------------------------
>
> Unload Me
> End Sub
>
> *Pertanyaan No. 2*
> Database yang baik tidak memiliki baris Sum atau Subtotal di baris ke
> sekiannya. Akan lebih baik lagi jika tidak ada formula didalamnya.
> Untuk hal ini, maka jumlah record database dapat disimpan pada sheet
> registrasi cell a1 yang berada di file interface (*lihat baris hijau pada
> no 1 di atas*)
> Karena jumlah record ada di sheet registrasi, maka text box txtJumlah pada
> form frmJumlah diubah nilai properti Control Source-nya menjadi merujuk ke
> cell A1 di sheet registrasi ( *=registrasi!a1* )
>
> Manfaatkan properti application.screenupdating = true sebelum proses
> dimulai dan application.screenupdating = false sebelum proses selesai untuk
> mengurangi efek blink saat buka workbook.
>
> Jika control source dari txtjumlah di kosongkan, maka buat prosedur event
> initialize form dan beri baris kode :
>     'deklarasi variabel workbook
>     Dim wbkA As Workbook, wbkDB As Workbook
>
>     Application.ScreenUpdating = False
>
>     'init workbooknya
>     Set wbkA = ThisWorkbook
>     Set wbkDB = Workbooks.Open(wbkA.Path & "\database.xls")
>     wbkA.Activate
>
>     'tulis jumlah record database di registrasi cell a1
>     txtjumlah.Text =
> wbkDB.Sheets("database").Range("a1").CurrentRegion.Rows.Count - 1
>
>     'tutup database sekalian simpan
>     Application.DisplayAlerts = False
>     wbkDB.Close True
>     Application.DisplayAlerts = True
>     wbkA.Activate
>
>     Application.ScreenUpdating = True
>
> Regards,
> Kid.
>
> 2012/1/29 Harry <[hidden email]>
>
> **
>
>   Dear BeExceller,
>
> Mohon informasi dan penjelasan akan pertanyaan saya dengan situasi dan
> kondisi sebabagai berikut:
> Pertanyaan No. 1
> Jika pada File “STUDI KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA)”
> terdapat 2 (dua) Sheet yaitu Sheet “REGISTRASI” dan Sheet “DATABASE”. Pada
> file tersebut, jika saya mengisi User Form pada Sheet “REGISTRASI” otomatis
> tersimpan pada Sheet “DATABASE”.
>
> Pertanyaan saya adalah:
> Bagaimana caranya jika Sheet “DATABASE” tersebut saya pindahkan pada File
> yang berbada Mis. File dng nama “DATABASE”.
>
>
> Pertanyaan No. 2
> Pada File “STUDI KASUS (SIMPAN DATA USER FORM PADA FILE YANG BEDA)” Sheet
> “DATABASE” kolom C15 merupakan penjumlahan dari C2 s/d C13. Jika User Form
> “JUMLAH” kita Click otomatis muncul hasil penjumlahannya. Tetapi jika
> databasenya bertambah, kok rumusnya hilang dan berganti dengan angka yang
> hasilnya tidak Up To Date (tidak sesuai dengan hasil yang diinginkan)…???
>
>
> Mohon berkenan informasinya.
>
> Regards,
>
>
> Harry
>
> N/B:
> ·                Data Sekarang: File “STUDI KASUS (SIMPAN DATA USER FORM
> PADA FILE YANG BEDA)” terdapat 2 (dua) Sheet yaitu Sheet “REGISTRASI” dan
> Sheet “DATABASE”.
> ·                Data yang seharusnya: File “STUDI KASUS (SIMPAN DATA
> USER FORM PADA FILE YANG BEDA)” hanya memiliki 1 (satu) Sheet yaitu Sheet
> “REGISTRASI” sedangkan Sheet “DATABASE” terdapat pada file yang berbeda
> yaitu File “DATABASE”
>
>
>
>
>  
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Bls: [belajar-excel] SIMPAN DATA USER FORM PADA FILE YANG BEDA

Harry
Dear Mr. Kid,

Terima kasih atas penjelasan dan rumusya.
Untuk pertanyaan No. 1 saya telah mencoba rumusnya sbb:

   Dim iRow As Long, Reg As Range, oCtrl As Control
   Dim wbkA As Workbook, wbkDB As Workbook
 
   Set wbkA = ThisWorkbook
   Set wbkDB = Workbooks.Open(wbkA.Path & "\DATABASE.Xls")
   wbkA.Activate
  
   wbkDB.Worksheets("Registrasi").Unprotect "........."
   Set Reg = wbkDB.Worksheets("Registrasi").Cells(1)


Dan diakhir rumusnya saya pakai rumus

wbkDB.Worksheets("Registrasi").Protect "........."
End Sub


tapi hasilnya tidak bisa.
Tetapi saya harus menggunakan lagi rumus:
Dim iRow As Long, Reg As Range, oCtrl As Control
   Dim wbkA As Workbook, wbkDB As Workbook
 
   Set wbkA = ThisWorkbook
   Set wbkDB = Workbooks.Open(wbkA.Path & "\DATABASE.Xls")
   wbkA.Activate
  
   wbkDB.Worksheets("Registrasi").Protect "........."
End Sub
Sehingga proses penyimpanannya lebih lama (loadingnya lebih lama)...???

Untuk pertanyaan No 2, saya masih belum dapat mengerti.
Yang saya maksudkan adalah: Bagaimana cara / rumusnya jika pada File "DATABASE" tsb saya buat User Form yang jika saya Click dapat connect ke file "REGISTRASI.Xls"...???

Sedangkan untuk pertanyaan No. 3, saya menggunakan rumus sbb:

Private Sub UserForm_Initialize()

   Dim iRow As Long, Reg As Range, oCtrl As Control
   Dim wbkA As Workbook, wbkDB As Workbook
  
   Set wbkA = ThisWorkbook
   Set wbkDB = Workbooks.Open(wbkA.Path & "\DATABASE.Xls")
   wbkA.Activate


Dim i As Long, TbHeigh As Long, TbWidth
  
   Set MemMaster = wbkDB.Worksheets("Registrasi").Cells(1).CurrentRegion
   TbHeigh = MemMaster.Rows.Count - 1
   TbWidth = MemMaster.Columns.Count - 1
   Set MemMaster = MemMaster.Offset(1, 0).Resize(TbHeigh, TbWidth)
  
   Application.EnableEvents = False
   With Cbonoregpinjam
      .ColumnCount = 2
      .BoundColumn = 1
      For i = 1 To TbHeigh
         .AddItem
         .List(i - 1, 0) = MemMaster(i, 1)
      Next i
   End With
   Application.EnableEvents = True
   txttglkembali = Format(Date, "mm/dd/yyyy")
   txtjamkembali = Format(Time, "h:mm")


Alhamdulillah, rumus tersebut sudah sesuai dengan yang saya harapkan.
Hanya saja jika diakhir rumus saya tambah dengan rumus :
   If MsgBox("DATA ANDA TELAH DISIMPAN. TAMBAH...???", 32 + 4, "KONFIRMASI") = vbYes Then
   Else
      Unload Me
   End If
End Sub


Dan selanjutnya saya Click "YES", kenapa jadi Error...???
Tapi jika saya Click "NO", so far so good.

Mengenai rumus:
Dim iRow As Long, Reg As Range, oCtrl As Control
   Dim wbkA As Workbook, wbkDB As Workbook
 
   Set wbkA = ThisWorkbook
   Set wbkDB = Workbooks.Open(wbkA.Path & "\DATABASE.Xls")
   wbkA.Activate

Bisa atau tidak jika kita tidak menggunkan rumus:

   Set wbkDB = Workbooks.Open(wbkA.Path & "\DATABASE.Xls")

Maksudnya bagaimana caranya jika File "DATABASE.Xls" tersebut dibiarkan dalam keadaan Stand By (tetap terbuka)...???


Mohon berkenan penjelasannya.

Terima kasih.

Regards,


Harry


________________________________
Dari: Kid Mr. <[hidden email]>
Dikirim: Kamis, 9 Februari 2012 9:57
 
Dear Harry,

1. Proteksi sheet :
Sheets("nama sheetnya").protect "passwordnya"       'protect
Sheets("nama sheetnya").unprotect "passwordnya"      'unprotect

Ketika akan olah sheet terproteksi, lakukan unprotect lebih dulu.
Usai mengolah sheet terproteksi, lakukan protect lagi.

2. Sebaiknya file database hanya berisi data saja. Seluruh form input (interface input) seoerti pinjam, kembali, perpanjang, beli, bayar, dsb diletakkan pada file terpisah, misal file Input. Untuk laporan (output) seperti laporan bulanan, daftar peminjam yang telat pengembaliannya, dsb, juga diletakkan di file terpisah, misal di file Output.
Untuk dapat memanfaatkan data di workbook database sheet database, maka workbook database dibuka lebih dulu. Untuk keindahan, bisa saja workbook database disembunyikan. Yang penting, jangan lupa untuk menutup file database ketika usai menggunakannya.

Misal, sebuah form butuh data dari sheet database, maka saat init form, lakukan buka file database. Bila perlu, sembunyikan file database. Ketika form ditutup, pada event query close bisa dilakukan penutupan file database.

Contoh buka dan sembunyikan file :
'letakkan di bagian deklarasi variabel module
Public wbkApp as workbook, wbkDB as workbook

'contoh routine buka dan sembunyikan file excel
public sub BukaDanSembunyi()
     application.screenupdating=false
      set wbkapp=thisworkbook
      set wbkdb=workbooks.open "d:\data\database.xls"
      wbkapp.activate
      windows(wbkdb.name).visible=false
      application.screenupdating=true
end sub

'contoh tampilkan kembali yang dihide
public sub TampilkanLagiSiFile()
      windows(wbkdb.name).visible=true
end sub

'contoh tutup file
public sub TutupFileExcel()
      wbkdb.close false     'jika tidak mau disimpan pengubahan datanya
end sub

3. Sayangnya listing code yang disertakan tidak menampakkan penggunaan sheet database.
Jika file database telah dibuka, mestinya seluruh kegiatan (non formula links) yang membutuhkan data di sheet database pada file database tersebut dapat dilakukan seperti :

'contoh init variabel sheet database di file database
dim shtDB as worksheet
set shtdb=wbkdb.sheets("database")

'contoh init variabel range di sheet database pada file database
dim rngDB as range
set rngdb=wbkdb.sheet("database").range("a1").currentregion

Wassalamualaikum Wr. Wb.
Kid.
Loading...