Featured Post

Lookup Gambar Dengan INDEX MATCH

Apakah Pencarian Gambar bisa dilakukan di excel? Pertanyaan ini sangat menarik sekali untuk dibahas. Jika pembaca mengikuti blog ini, pada ...

Saturday, October 5, 2019

Cara Membatasi Scroll Area Pada Worksheet

Pada Excel versi 2007 atau yang lebih baru, area worksheet dibatasi oleh jumlah kolom maksimal 16.364 dan jumlah baris maksimal 1.048.576.  Namun pada kenyataanya, user lebih sering menggunakan sebagian kecil saja dari jumlah sel yang tersedia dalam worksheet. Penggunaan sebagian area dalam worksheet tanpa pembatasan scroll area terkadang cukup menyulitkan dalam melakukan observasi lembar kerja excel. Karena itulah maka disarankan untuk membatasi scroll area.

Keuntungan pembatasan scroll area:


  • Pembatasan scroll area memudahkan dalam melakukan observasi dan navigasi workhsheet.
  • Jika anda pembuat tempate laporan, maka anda bisa menyembunyikan data yang tidak ingin diketahui oleh user di luar lokasi scroll area.


Pembatasan scroll area dapat dilakukan dengan beberapa cara, antara lain:

  • Menyembunyikan kolom dan baris tidak terpakai
  • Menentukan valid range
  • Mengaktifkan range terpakai (used range)



Menyembunyikan kolom dan baris tidak terpakai


Tehnik paling sederhana untuk membuat batasan lembar kerja excel adalah dengan cara menyembunyikan baris dan kolom tidak terpakai.

Langkahnya cukup mudah:


  • Seleksi semua kolom yang tidak digunakan, kemudian klik kanan ➨ hide
  • Dengan cara serupa, seleksi semua baris yang tidak digunakan, kemudian klik kanan ➨ hide


Hasilnya dapat dilihat seperti screenshot di bawah ini.

Menyembunyikan Kolom dan Baris


Dari gambar di atas, kita dapat melihat, excel hanya menampilkan kolom dan baris untuk area yang digunakan saja, yaitu baris 1 s/d 15 dan kolom A s/d H. Hal tersebut karena area yang tidak digunakan sudah disembunyikan (di-hide).


Menentukan Valid Range Spesifik


Metode kedua untuk menetapkan batasan scroll area adalah dengan cara menentukan valid range spesifik. Valid range dapat di-setting melalui property worksheet.

Caranya:


  • Klik kanan pada tab sheet yang akan ditentukan sroll area nya.
  • Klik view Code, sehingga akan masuk ke VBA editor. 
Cara Memunculkan VBA Editor

  • Di dalam vba editor, cari jendela properties. Jika jendela properties belum terlihat, tekan F4 untuk memunculkannya.
  • Pada jendela properties, pada field ScrollArea, ketikan valid range yang anda inginkan. Contoh pengisian seperti dalam gambar di bawah ini.
Mengatur scroll area melalui properties worksheet




Keterangan: tanda absolute ($) akan muncul otomatis meskipun kita mengetik valid range tanpa tanda dolar $.

Setelah selesai, kembali ke worksheet dan kita bisa buktikan bahwa scroll range akan dibatasi sesuai valid range yang kita ketikan di jendela properties. Jika scroll area yang kita gunakan sedikit saja atau kurang dari ukuran range yang terlihat (visible range), maka kolom dan baris diluar scroll area masih akan nampak. Namun kita  tidak bisa menyeleksi sel / range dan mengetik pada sel diluar scroll area. Silahkan dibuktikan sendiri.

Sayangnya, kita tidak bisa menyimpan setting scrollarea yang dibuat dengan cara edit properties karena scroll area akan di-reset kembali setelah close file.

Untuk mengatasi hal tersebut, kita bisa menggunakan code vba untuk menetapkan scroll area. Code ini ditempatkan pada even worksheet_activate sehingga akan dijalankan setiap kali worksheet yang disisipkan code ini diaktifkan.

Caranya:

  • Klik kanan pada tab sheet yang akan dibatasi sroll area nya.
  • Klik view Code, sehingga akan masuk ke VBA editor.
  • Pada jendela project explorer, double clik nama sheet yang akan dibatasi scroll area nya sehingga muncul muncul object sheet tersebut.
  • Ketik atau copy code berikut pada modul ojbect sheet:


Private Sub Worksheet_Activate()
Me.ScrollArea = "A1:J50"
End Sub


Contoh penempatan code dapat dilihat pada screenshot di bawah ini.


Contoh code vba untuk mengaktifkan scroll area


Gambar di atas menunjukan contoh penempatan code untuk membatasi scroll area sheet 3  pada range A1:J50. Code berjalan setiap kali sheet 3 diaktifkan (berpindah dari sheet lain ke sheet 3).

Untuk membuat batasan scroll area pada sheet lainnya, silahkan masuk kembali ke VBA editor, kemudian pada jendela project explorer, double klik nama sheet yang akan disisipkan code. Selanjutnya ketik code yang sama dengan contoh sebelumnya pada modul object sheet yang diinginkan.

Kita juga bisa berexperimen dengan merubah range scroll area. Silahkan range A1:J50 diedit kembali dengan range yang anda inginkan.

Bagaimana Jika kita ingin mengedit sel di luar scroll area?

Sebagaimana penjelasan di atas, setelah kita setting scroll area maka kita tidak bisa mengedit sel di luar scroll area. Untuk itu kita harus menghapus setting scroll area terlebih dahulu jika ingin memodifikasi area sheet di luar scrollarea.

Kita bisa menghapus secara manual dengan cara menghapus scroll area pada property worsksheet. Cara yang lebih cepat dan disarankan adalah dengan menggunakan macro / VBA. Adapun codenya sangat sederhana.

Misalnya:

Sub deleteScrollArea()
ActiveSheet.ScrollArea = ""
End Sub


Untuk menempatkan code pada module VBA, ikuti langkah berikut:
  • Masuk ke jendela VBA dengan cara tekan Alt + F11
  • Jika module standar belum tersedia, Klik menu Insert ➨ Module
  • Maka akan muncul modul baru (misalnya : Module1)
  • Tempatkan code pada module 1. Bisa dilakukan dengan copy paste contoh code di atas, maupun dengan mengetiknya sendiri.


Screenshot di bawah ini menggambarkan langkah-langkah penempatan code pada modul standar.

contoh code vba scroll area



Setelah langkah di atas diikuti satu-persatu, maka kita bisa menghapus scroll range menggunakan makro.

Caranya:

  • Tekan Alt + F8 untuk memunculkan list Macro 
  • Pilih macro yang sudah kita buat sebelumnya (macro deleteScrollArea)
  • Lalu klik Run


Mengaktifkan Range Terpakai (Used Range)


Cara Ketiga dan yang paling fleksibel adalah dengan menetapkan used range sebagai scroll area. Untuk menempatkan code, caranya serupa dengan cara kedua yaitu:


  • Klik kanan tab sheet yang ingin di-setting scroll area nya
  • Pada module object sheet terpilih, ketik atau copy code berikut:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.ScrollArea = Me.UsedRange.Address
End Sub


  • Setelah itu, keluar kembali dari VBA editor.


Karena code diatas akan dijalankan ketika sheet diaktifkan maka kita harus pindah dulu ke sheet lain, kemudian masuk kembali (mengaktifkan) ke sheet dimana code sudah disisipkan. Maka kita akan mendapati sheet dengan batasan scroll area sudah terpasang.

Jika kita ingin mengedit areal di luar used range, maka kita bisa mereset sementara scroll area dengan cara yang sudah dijelaskan sebelumnya

Sampai disini, mudahan-mudahan catatan excel mengenai cara membatasi scroll area dapat difahami dan semoga bermanfaat.
Thks

Artikel terkait:



Referensi:
David Raina & Hawley 2007, Excel Hack, Tips & Tools for Streamlining Your Spreadsheet, 2nd edition. O’Reilly Media, Inc


Tuesday, October 1, 2019

Mencegah Save As, Print dan Insert Sheet

Sebagai pembuat sebuah template laporan, mungkin kita tidak menginginkan user melakukan tindakan tertentu. Misalnya melakukan save as, print, insert sheet, dan sebagainya. Dengan menambahkan sedikit code vba, kita bisa me-manage interaksi antara user dengan spreadsheet yang kita buat. Nah, jex-cel telah mencatat beberapa contoh code yang dapat digunakan untuk mencegah user menjalankan command tertentu di excel.

1. Mencegah Save As
2. Mencegah print
3. Mencegah print sheet tertentu
4. Mencegah insert sheet

Mencegah User Melakukan Save As


Atas dasar alasan tertentu, mungkin kita tidak ingin user melakukan save as dan mengganti nama file template yang kita buat. Untuk itu, kita bisa menyisipkan code pada module workbook.
  • Jika kita membuat file baru, maka save dulu file tersebut sebelum disisipkan code. Jika workbook baru belum di save, dan kemudian kita menyisipkan code cegah save as maka file tersebut tidak akan bisa di-save sama sekali.
  • Tekan Alt F11 untuk masuk ke VBA editor.
  • Masuk ke module object Thisworkbook (dengan cara double klik object thisworkbook di jendela project explorer)
  • Copy code berikut pada module object thisworkbook.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim responUser As Long
If SaveAsUI = True Then
responUser = MsgBox("Maaf, file tidak bisa di save as dengan nama lain" _
& Chr(10) & "Apakah anda akan menyimpan saja?", vbQuestion + vbOKCancel)
Cancel = (responUser = vbCancel)
If Cancel = False Then Me.Save
Cancel = True
End If
End Sub



Letak code dalam modul VBA dapat dilihat dalam screenshot berikut:

Code VBA untuk mencegah Save As


Setelah code di copy paste atau diketik di modul object thisworkbook, silahkan coba lakukan proses Save As

Maka akan muncul pesan seperti pada gambar di bawah ini:

Pesan tidak bisa save as


Jika user menekan tombol ok, maka file akan disimpan biasa (bukan save as) dan tidak ada perubahan nama file. Jika user menekan cancel, maka perubahan tidak akan tersimpan.

Mencegah User Melakukan Print.


Karena melihat banyak kertas print berakhir di tempat sampah  atau tercecer / menumpuk di bawah meja kerja, kita bisa berinisiatif untuk membantu menghemat kertas dengan cara mencegah user untuk melakukan print. Untuk itu kita bisa menyisipkan code pada event before print di module thisworkbook.


  • Tekan Alt F11 untuk masuk ke VBA editor
  • Masuk ke module object Thisworkbook (dengan cara double klik object thisworkbook di jendela project explorer)
  • Copy code berikut pada module object thisworkbook.


Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "Maaf anda tidak bisa print buku kerja ini", vbInformation
End Sub


Silahkan test dengan cara menjalankan command print (File --> Print --> Tombol Print)

Maka user akan melihat pesan pemberitahuan tidak bisa  print,  seperti gambar di bawah ini.

pesan tidak bisa print



Kita bisa saja menyisipkan code tanpa code pesan (msgbox) seperti berikut:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
End Sub


Code tersebut sebenarnya sudah cukup untuk mencegah user melakukan print. Namun jika tidak ada pesan pemberitahuan, maka kemungkinan besar user akan menyangka ada error dan mengejar orang IT untuk memperbaikinya. Dengan kata lain, msgbox meski opsional tetapi sangat penting untuk memberitahu user mengenai apa yang tidak boleh dilakukan maupun yang harus dilakukan sehingga bisa mencegah adanya kesalahpahaman.

Mencegah print sheet tertentu


Jika kita ingin mencegah user melakukan print sheet tertentu saja maka gunakan code berikut:


Private Sub Workbook_BeforePrint(Cancel As Boolean)
Select Case ActiveSheet.Name
Case "Sheet1", "Sheet2"
Cancel = True
MsgBox "Maaf anda tidak bisa print " & ActiveSheet.Name, vbInformation
End Select
End Sub



pesan tidak bisa print sheet


Catatan:  dalam contoh di atas, nama sheet yang dicegah untuk diprint adalah "Sheet1", "Sheet2". Kita dapat merubah dan menambah sheet sesuai keperluan.
Misalnya:

Case "data 1", "data 2", "data 3"


Mencegah Insert Sheet


Excel sebenarnya sudah menyediakan fiture Protect Workbook’s Structure yang dapat mencegah user untuk bisa men-delete worksheet, merubah susunan sheet, merubah nama sheet dan sebagainya. Namun adakalanya kita hanya ingin mencegah user untuk menambahkan sheet baru dan tetap mengizinkan perubahan struktur  lainnya.

Untuk mencegah user menambahkan sheet baru, lakukan langkah seperti contoh sebelumnya. Bedanya hanya pada code yang digunakan.


  • Masuk ke VBA editor dengan cara tekan Alt + 11
  • Selanjutnya Masuk ke module object Thisworkbook dengan cara double klik object thisworkbook di jendela project explorer
  • Selanjutnya pada module object thisworkbook, copy code di bawah ini:



Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.DisplayAlerts = False
MsgBox "Maaf, anda tidak bisa menambahkan sheet baru", vbInformation
Sh.Delete
Application.DisplayAlerts = True
End Sub


Silahkan lakukan test dengan cara mencoba tambahkan sheet baru. Maka akan tampil pesan seperti screenshot di bawah ini.

pesan tidak bisa tambah sheet baru



Sekian dulu catatan mengenai contoh-contoh code untuk mencegah user melakukan tindakan tertentu pada excel, yaitu: mencegah save as, mencegah print dan mencegah insert sheet. Semoga bermanfaat.

Artikel terkait:
Teknik Find & Replace Text dalam Comment Box
Cara Entri Data Pada Beberapa Sheet Sekaligus
Cara Membuat Daftar Isi Otomatis

Referensi:
David Raina & Hawley 2007, Excel Hack, Tips & Tools for Streamlining Your Spreadsheet, 2nd edition. O’Reilly Media, Inc