Coba udf Sheet berikut : *UDF Sheet : (syntax) *
=Sheet( [nomor_index] , [hasil_berupa_index] ) [nomor_index] ::
bersifat optional yang dapat diisi dengan bilangan bulat :
< 0 untuk mendapatkan jumlah sheet dalam workbook
0 array vertikal 1 dimensi tentang urutan sheet tergantung opsi
[hasil_berupa_index]
N jika N antara 1 dan jumlah sheet dalam workbook, maka menghasilkan nama
sheet di index ke-N
jika N lebih dari jumlah sheet dalam workbook, maka menghasilkan NullString
("") [hasil_berupa_index] :: bersifat optional yang dapat diisi dengan
nilai Boolean (TRUE/FALSE) :
TRUE akan membuat array hasil (ketika [nomor_index] diisi 0) berisi
nomor-nomor index sheet
FALSE akan membuat array hasil (ketika [nomor_index] diisi 0) berisi
nama-nama sheet
*Peringatan !!!*
- UDF Sheet bersifat volatile. Gunakan dengan bijak agar tidak memberatkan
kalkulasi Excel - UDF Sheet tidak merespon adanya pembuatan sheet baru
secara langsung, tetapi array hasil akan ter-update karena sifat
volatile-nya ketika ada nilai cell berubah nilanya - Cara lain untuk
membuat UDF Sheet merespon adanya pembuatan sheet baru adalah dengan
memanfaatkan event workbook new sheet, yang diisi dengan perintah untuk
mengkalkulasi aplikasi atau sheet tertentu yang menggunakan UDF Sheet. -
Contoh baris perintah kalkulasi aplikasi :
Application.Calculate - Contoh baris perintah kalkulasi sheet ke-1 :
Thisworkbook.Sheets(1).Calculate
*Contoh :*
1. Jumlah sheet :
=sheet(-1)
2. nama sheet ke-4 dalam sheet tab :
=sheet(4)
3. array nomor-nomor index sheet :
=sheet(0,true)
4. array nama-nama sheet :
=sheet(0)
atau
=sheet(0,false)
*Script UDF Sheet :*
Public Function Sheet(Optional lIdx As Long = -1, Optional bAsIdxNum As
Boolean = False) As Variant
Dim vSht() As Variant
Dim lShtCount As Long, lSht As Long
Application.Volatile
With ThisWorkbook
lShtCount = .Sheets.Count
Select Case lIdx
Case 0
ReDim vSht(1 To lShtCount) As Variant
For lSht = 1 To lShtCount
vSht(lSht) = IIf(bAsIdxNum, lSht, .Sheets(lSht).Name)
Next lSht
Sheet = WorksheetFunction.Transpose(vSht)
Case Is < 0
Sheet = lShtCount
Case Is > lShtCount
Sheet = vbNullString
Case Else
Sheet = .Sheets(lIdx).Name
End Select
End With
End Function
*File :*
re-Update sheet.xlsm (terlampir)
Wassalam,
Kid.
2012/8/30 Abang Tukang tanya <[email protected]>
> **
>
>
> Selamat Malam,
>
>
> Maaf menggangu teman-teman untuk tidur malamnya, saya mau tanya bagaimana
> cara mengubah otomatis suatu range jika saya merubah
> sheetnya, sehingga ketika saya merubah sheetnya dengan saya beri nama
> misal "A5" maka otomatis pada range yang ditunjuk akan terisi A5.
>
>
> Mohon bantuannya
>
>
> Regards,
>
>
>
> Abang tukang tanya
>
>
>
re-Update sheet.xlsm
Description: Binary data

