Hai Tukang, 1. UDF (User Defined Function) [fungsi buatan sendiri] - Dibuat oleh user untuk mengkalkulasi sesuatu yang belum ada dalam daftar fungsi built-in Excel. - Cara pakainya seperti menggunakan fungsi-fungsi built-in Excel (yang Anda sebut seperti rumus biasa). - UDF dapat dibuat dengan VBA pada sebuah module dengan scope Public (silakan pelajari dasar-dasar VBA, jalan-jalan ke web milis dan download file dari folder files yang berkaitan dengan VBA)
2. UDF bernama Sheet (Anda menyebutnya rumus bernama Sheet) tidak memiliki kemampuan untuk secara otomatis meng-update hasil ketika user menambahkan sebuah sheet baru. Oleh sebab itu, jika cell yang diberi formula yang berisi UDF bernama sheet ini ingin langsung ter-update karena adanya penambahan sheet baru, maka cara lainnya adalah dengan membuat sebuah prosedur event yang dimiliki workbook yang bernama NewSheet. Karena hal ini juga sudah menyangkut pemrograman VBA, maka silakan pelajari dasar-dasar VBA. Wassalam, Kid. 2012/8/31 Abang Tukang tanya <[email protected]> > ** > > > Dear Mr Kid. > > > Terima kasih untuk balasannya, sekali lagi saya bingung. > *1. UDF Sheet : > (syntax) * =Sheet( [nomor_index] , [hasil_berupa_index] ) > Pertanyaan? > UDF itu apa sih? gunanya untuk apa? Cara buatnya gimana? Pake Makro? ato > itu sudah rumus biasa? > 2. 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. > Pertanyaan? > Mmmm, saya belum "Dong' bisa minta tolong dijelaskan. > > Oh ya maaf tadi saya mau berangkat kerja, jadi ketika mau kirim ada > sedikit error koneksinya.. Jadi tidak semua email terkirim. > > > Regards > > > > Abang Tukang Tanya > > ------------------------------ > *Dari:* Kid Mr. <[email protected]> > *Kepada:* [email protected] > *Dikirim:* Jumat, 31 Agustus 2012 0:09 > *Judul:* Re: [belajar-excel] Update Sheet > > > 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 > > > > > >

