Tecnologia, programação e muito Visual FoxPro.

sexta-feira, 29 de maio de 2009

]] XL-mania [[ Re: Adakah Rujukan Relatif untuk Sheet ?



(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
' villager.girl@gmail.com  / setiyowati.devi@gmail.com
sebaiknya dgn melampirkan workbook ini atau mengQuote text Module ini..
'------------------------------------------------------------------------



2009/5/29 siti Vi <villager.girl@gmail.com>
>
> (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 ??

__._,_.___
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| Uanggggg... di manakah kau beradaaaa?                             |
| http://www.facebook.com/group.php?gid=37671048001&ref=mf          |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message,  melecehkan,  tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan  winzip  jika  perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke  |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/           |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau...  |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html           |
+-------------------------------------------------------------------+
| Message lama ada di :                                             |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id]  |
| http://www.mail-archive.com/xl-mania@yahoogroups.com              |
+-------------------------------------------------------------------+
Recent Activity
Visit Your Group
Give Back

Yahoo! for Good

Get inspired

by a good cause.

Y! Toolbar

Get it Free!

easy 1-click access

to your groups.

Yahoo! Groups

Start a group

in 3 easy steps.

Connect with others.

.

__,_._,___

Nenhum comentário:

Arquivo do blog