* (bagian 2 dari 2 tulisan)*
*
About Object Worksheet*
di dalam VBA Excel, object Worksheet dapat dirujuk melalui beberapa cara,
yaitu melalui object Koleksi worksheet dgn
menyebutkan Nomor Index nya, menyebutkan namanya, menyebutkan CodeName nya,
dan juga
melalui property PARENT atas suatu object yg menjadi MEMBER dari sheet tsb.
Contoh nya jika kita sudah punya sebuah CELL TERTENTU
maka *CellTertentu.Parent * menghasilkan object Worksheet dimana cell tsb
berada
Dan jika kita lanjutkan CellTertentu.Parent.Name maka hasilnya tentu saja
adalah = text nama Sheet tsb
Text Nama Sheet adalah text yg tampak di TabSheet tiap worksheet.
Worksheet mempunyai banyak properties maupun methods
di keempat UDF tsb diatas kita hanya menggunakan property NAME dan property
INDEX
Property Name (ObjectWorksheet.Name) menghasilkan teks nama sheet
Memang hanya NAMA-SHEET ini lah yg kita perlukan untuk membantu fungsi lain
di worksheet dalam rangka
me-Relatif-kan RUJUKAN CELL pada level antar Sheet. Apa Sebab ??
<> nama Sheet jika kita akses melalui fungsi CELL (di worksheet) walaupun
bisa; tetapi cukup memerlukan
teks rumus yg panjang (itu pun baru berhasil bila wokbuk sudah berstatus
SAVED)
<> nama sheet selalu diperlukan untuk merujuk cell yg berada di sheet lain.
dan selama ini kita menuliskan nama sheet pada rumus rujukan ke cell di
sheet lain hanya dengan dua cara
menuliskan manual, atau mengandalkan penunjukan langsung ke cell dengan
MousePointer.
dan menurut pendapatku: keduanya selalu menghasilkan nama yg FIXED, tidak
dapat di RELATIFKAN.
Dengan bantuan salah satu UDF di atas, kita dapat meRelatifkan rujukan cell
di sheet lain, relatif dlm level antar Sheet !!
( Jangan percaya sebelum mencoba )!
*Pengembangan lebih lanjut.*
Dengan masih tetap berada di koridor pemikiran yg sama
kita dapat membuat fungsi yg dapat mengenali "NAMA BULAN" yg tertulis di
TabSheets
misalnya begini:
anda mempunyai 12 sheet, tiap sheet diberi nama bulan, urutan tempat sheet
tidak harus URUT
(tidak harus dari "Jan", "Feb" dst sampai terakhir "Dec" )
tetapi dengan sebuah rumus yg SAMA di tiap sheet; rumus tsb dapat merujuk
ke cell tertentu di BULAN SEBELUMNYA
Bagi para clerk di bagian SDM maupun akuntansi, fungsi ini kayaknya cukup
"menggiurkan"..
tetapi sayang belum sempat ditulis di workbook yg dilampirkan di bagian 1.
Yaa. Anggap saja sebagai suatu Challenge lah yauw….. Lain kali bila ada
sumur di ladang.. boleh kita numpang ber-udf lagi..
-------------------------------------------------------
Function SheetName(Optional ShtIdx As Integer = 0) As String
' fungsi menebak Nama SheetIni atau Nama Sheet index(urutan) ke ..
' SheetIni = Sheet tempat fungsi dituliskan
If ShtIdx = 0 Then
SheetName = Application.ThisCell.Parent.Name
ElseIf ShtIdx > 0 And ShtIdx <= Worksheets.Count Then
SheetName = Worksheets(ShtIdx).Name
Else
SheetName = "Err /OutOfRange.."
End If
End Function
Function PrevSheetName(Optional RelIndex As Integer = 1) As String
' fungsi menebak NamaSheet SEBELUM (sebelah Kiri) SheetIni
Dim ThisShtIdx As Integer
ThisShtIdx = Application.ThisCell.Parent.Index
PrevSheetName = Worksheets(ThisShtIdx - RelIndex).Name
End Function
Function NextSheetName(Optional RelIndex As Integer = 1) As String
' fungsi menebak NamaSheet SETELAH (sebelah Kanan) SheetIni
Dim ThisShtIdx As Integer
ThisShtIdx = Application.ThisCell.Parent.Index
NextSheetName = Worksheets(ThisShtIdx + RelIndex).Name
End Function
Function SheetIndex(Optional ShtName As String = "") As Integer
' fungsi menebak NOMOR Urutan (Index) sheet
Dim sht
If ShtName = "" Then
SheetIndex = Application.ThisCell.Parent.Index
Else
For Each sht In Worksheets
If UCase(sht.Name) = UCase(ShtName) Then
SheetIndex = sht.Index
Exit For
End If
Next sht
End If
End Function
----------------------------------------------------------------------
note:
Penggunaan Keyword ActiveSheet (untuk menandai sheet dimana fungsi
dituliskan),
bisa menyesatkan. Oleh karena itu kita hindari dan ganti dengan
" Parent of ThisCell " yaitu object worksheet dimana fungsi dituliskan
' ( Application.ThisCell.Parent )
' Property ThisCell sendiri adalah adalah merujuk ke Cell dimana Fungsi
dituliskan
'-----------------------------------------------------------------------
' jkt 27 mei 2009
' comments, disclaimer, dsb, dapat ditujukan ke siti
' [email protected] / [email protected]
sebaiknya dgn melampirkan workbook ini atau mengQuote text Module ini..
'------------------------------------------------------------------------
2009/5/29 siti Vi <[email protected]>
>
> (bagian 1 dari 2 tulisan)
>
> anda sering bekerja pada banyak sheet dlm sebuah wokbuk
> anda juga sering merujuk nilai cell di sheet lain (dan sebenarnya ingin
secara RELATIF)
> "Rujukan Sheet secara RELATIF" itu gini lho maksodku...
> sheet ke2 merujuk cell di sheet 1, misal cell A1 di Sheet ke 2 (apa pun
nama Tab Sheet nya) merujuk ke cell B1 pada sheet ke 1.
> sheet ke3 merujuk cell di sheet 2, misal cell A1 di Sheet ke 3 (apa pun
nama Tab Sheet nya) merujuk ke cell B1 pada sheet ke 2.
> sheet ke4 merujuk cell di sheet 3, and so on
> bgmana cara membuat rumus di A1 sekali saja di sheet2, tetapi kalau di
copy ke sheet 3
> hasilnya merujuk ke sheet2 bukan sheet1 ??