Kamis, 12 Januari 2012

Teknik Menyembunyikan Banyak Sheet Sekaligus dan Menampilkannya


Ketika Contoh Aplikasi Raport yang Sudah Jadi diluncurkan, banyak email masuk ke saya yang menanyakan bagaimana caranya agar yang tampil dilayar hanya satu sheet saja sebagaimana tampilan pada file Raport tersebut. Nah, agar mempermudah memberikan penjelasan, posting kali ini membahas hal tersebut.

Dalam VBA, “Penampakan” (visiblity) suatu sheet dalam sebuah workbook ada tiga jenis:
  1.  xlSheetVisible : Sheet tampil sebagaimana biasa. Kodenya adalah (-1)
  2. xlSheetHidden: Sheet di-hide disembunyikan dengan cara biasa. Untuk menampilkannya cukup dengan klik kanan sebuah sheet, kemudian pilih Unhide. Kodenya adalah (0)
  3. xlSheetVeryHidden : Menyembunyikan sheet dengan cara ini, menyebabkan sheet tidak bisa ditampilkan denga cara biasa, walaupun sebuah nama sheet di-klik kanan, tulisan Unhide tidak muncul. Untuk menampilkannya harus masuk ke VBA Editor, kemudian mengubah properti visible-nya menjadi xlSheetVisible, atau melalui kode makro. Kodenya adalah (2)
Kode macro terkait dengan "penampakan" sheet ini adalah:
Sheets("NamaSheet").Visible = kode
Contoh, untuk menyembunyikan "Sheet1" :
Sheets("Sheet1").Visible = 2 
atau 
Sheets("Sheet1").Visible = xlSheetVeryHidden
Untuk menampilkannya kembali :
Sheets("Sheet1").Visible = -1 
atau 
Sheets("Sheet1").Visible = xlSheetVisible

Bagaimana cara menyembunyikan banyak sheet sekaligus?


Untuk menyembunyikan beberapa sheet dalam satu klik saja, maka langkah makro-nya adalah sbb:
1. Tampilkan terlebih dahulu sheet yang akan ditampakkan
2. Semua sheet selain yang ditampakkan disembunyikan dengan prosedur LOOPING.
Misal kita ingin menampilkan "Sheet2" saja, padahal kita punya 20 Sheet. Kode makronya kira-kira begini:

Sub TampilkanSheet2()
Dim sh As Worksheet
'Menampilkan "Sheet2" terlebih dahulu
Sheets("Sheet2").Visible = -1 

'Sembunyikan selain "Sheet2" dengan LOOPING For Each
For Each sh in ThisWorkbook.Worksheets
If sh.Name <>"Sheet2" Then
sh.Visible = 2
End If
Next sh

End Sub

Kode makro LOOPING di atas, akan mengecek nama semua sheet. Jika nama sheet bukan "Sheet2", maka sheet tersebut akan disembunyikan.

Agar nama sheet yang ingin ditampilkan bisa diubah-ubah, maka kita membuat Private Sub terlebih dahulu, baru memanggil Private Sub tersebut. Contoh

Private Sub SembunyikanSemuaSheetKecualiAku(NamaSheet As String)
Dim sh As Worksheet
Sheets(NamaSheet).Visible = 1

For Each sh in ThisWorkbook.Worksheets
If sh.Name <> NamaSheet Then
sh.Visible = 2
End If
Next sh
End Sub

Sehingga jika kita ingin menyembunyikan semua sheet kecuali "Sheet2", maka tinggal memanggil Private Sub tadi dengan:
Call SembunyikanSemuaSheetKecualiAku "Sheet2"

Bagaimana cara menampilkan semua sheet sekaligus?
Untuk menampilkan semua sheet sekaligus, sangat mudah yakni:

Sub TampilkanSemuaSheet()
Dim sh As Worksheet
For Each sh in ThisWorkbook.Worksheets
sh.Visible = -1
Next sh
End Sub

Kiranya cukup sekian dulu. 
File Contoh bisa didownload di sini atau di Boxnet pada sidebar di samping.


Artikel Terkait:

18 komentar:

MASJOHANE mengatakan...

guru pinter, mumet aku

Anonim mengatakan...

Mas,gmana pula membatasi kolom dan baris sehingga tak bisa digeser lagi...hanya area tertentu saja.

effendi mengatakan...

ass...mas heru..saya belajar mencoba kode yang diatas, namun link yang udah saya buat..setelah sheet di sembunyikan ...tidak berfungsi...mohon pencerahannya....
ini alamat email saya
== effendi.dmth@gmail.com ==

Unknown mengatakan...




maaf mas mau tanya, nama saya rachmad,kalo kita buat forminput trus sheet masih terprotect, apa data bisa terinput, makasi mas

excell mengatakan...

Ya harus di-Unprotect terlebih dahulu
Sheets("aaaa").Unprotect "passwornya"
kalau tidak dipassword:
Sheets("aaaaa").Unprotect

Unknown mengatakan...

Assalamualaikum Mas Heru .... Setelah saya coba code dari Mas Heru,sudah berhasil meng-hiden beberapa sheet, tapi yang terjadi link-nya gak berfungsi. Mohon bantuan dan ilmunya. Wassalam. dari "kangmunirdemak@gmail.com"

Unknown mengatakan...

@t:effendi
gampang---
carannya link tersebut ganti dengan macro diatas tapi jangan ambil semua cukup macro yg pertama aja...terus buat shape dan masukkan macro itu--maka shape itu sdh jd pengganti hyperlink...untuk lebih jelas silahkan berimajinasi yahhh...

prazt mengatakan...
Komentar ini telah dihapus oleh pengarang.
prazt mengatakan...

assalam mas heru..
jika saya mempunyai 3 sheet (a,b dan b), dan 3 sheet tersebut mempunyi hyperlink (sheeet a ada hyperlink ke sheet b, dan sebaliknya)jika saya tekan tombol hyperlink pd sheet a maka masuk ke sheet b dan sheet a dan c terhiden begitu juga sebaliknya jika hyperlink pada sheet a saya klik maka sheet b dan c terhiden...bagaimana cara menyelesaikan kasus tersebut mas heru..syukron..

Ijall Achmad mengatakan...

assalamu'alaikum...
Mas Heru, alhamdulillah banyak ilmu yg sy dapat dr blog mas heru ini...very very very thank you mas heru...
tapi..., mi' pening tang cetak nikah ka', caranah lo' bise e praktekkin bi buleh...
memanggil hyperlink sheet yang disembunyikan... sama keluhannya ama mas effendi.., sy punya file buat penilaian guru, tp pas di hide gak bisa terbuka menggunakan hyperlink.
kalo boleh diajarin caranya yg lebih detail mas..., maklum nih... newbie banget soal excel.
thanks banget nih mas heru, smoga Allah selalu memberikan kesehatan ama mas heru

dari
Ijall
Kota Tangerang

MTs Jamiat ummah mengatakan...

makasih izin copas pak

Drama terbaru korea mengatakan...

Hade... susah amid caranya. Ya rada gampangan dikit ada nggak?

I Putu Asana mengatakan...

Cukup menarik saya may coba.
Ini sang at bermanfaat asap mau berlatih.
Trims.buat pengarang...!

@rfan's blog mengatakan...

Ampun suhu..badan meriang nih. Susye bener penjelasannya

@rfan's blog mengatakan...

Ampun suhu..badan meriang nih. Susye bener penjelasannya

Joy mengatakan...

Sub TampilkanSheet2()
Dim sh As Worksheet
'Menampilkan "Sheet2" terlebih dahulu
Sheets("Sheet2").Visible = -1

'Sembunyikan selain "Sheet2" dengan LOOPING For Each
For Each sh in ThisWorkbook.Worksheets
If sh.Name <>"Sheet2" Then
sh.Visible = 2
End If
Next sh

End Sub

dari code macro di atas... di antara 20 sheets, sheet 2 yang ditampilkan dan yang lainnya terhidden..jika kita ingin sheet 1 dan sheet 2 ditampilkan,,,bagaimana code macronya..makasih...

Unknown mengatakan...

Mas mau tanya dong..?
kalo saya punya 10 sheets, sheets 1 mau ditampilkan yang lainnya hiden
tp di sheet 1 ada menu link ke sheets 2 dan sheets 3
jika dipilih menu 1 maka keluar sheets 2 saja dan menu
jika dipilih menu 2 maka keluar sheets 3 saja dan menu

nah kodingnya gmn mas?
mohon batuannya

terima kasih

Unknown mengatakan...

Hedeeeehhhh ... susah amit mo donlot contoh file nya ....