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. <[email protected]>
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.

Kirim email ke