UDF yang Anda ciptakan tidak hanya dapat melayani sebagai rumus worksheet saja, melainkan juga dapat diundang dari suatu macro, yang mana tidak akan membatasi kemampuan macro untuk melakukan apapun yang perlu diselesaikannya.

Sebagai contoh kode UDF berikut, fungsi UDF Buka terpisah dari macro BukaAtauTidak, yang mana untuk menguji-coba apakah suatu file workbook tertentu sedang dibuka atau tidak dibuka.

Rumus Buka ini akan membuktikan jika file workbook contohnya bernama NamaFileAnda.xlsm sedang dibuka atau tidak dibuka dalam komputer Anda, yang mana hasilnya adalah nilai TRUE (jika file dibuka) atau FALSE (jika file tidak dibuka).

=Buka("NamaFileAnda.xlsm")

Adapun untuk menguji-coba melalui macro, maka Anda bisa mengembangkan kemampuan misalnya dengan menanyakan pertanyaan apakah Anda akan membuka file tersebut atau tidak melalui kotak pesan Yes dan No.

Silakan ikuti panduan berikut untuk menyusun UDF dan Macro:

1. Buka VBE dengan menekan Alt+F11.

2. Buat module baru melalui menu Insert > Module:

3. Buat UDF misalnya dengan judul Buka dengan mengetik garis kode berikut diikuti dengan tombol Enter sehingga memunculkan garis kode End Function:

Function Buka(w) As Boolean

4. Tepat di atas garis kode End Function, tetapkan variabel untuk workbook:

Dim wb As Workbook

5. Pakai statement On Error untuk mengecek dan melakukan bypass run time error barangkali workbook tidak dibuka:

On Error Resume Next
Set wb = Workbooks(w)

6. Jika tidak ditemukan error, maka workbook dibuka:

If Err = 0 Then
Err.Clear
Buka = True
Else

7. Jika error muncul, artinya workbook tidak dibuka:

Buka = False
End If

8. Tepat di bawah garis kode End Function, buat macro misalnya dengan judul BukaAtauTidak, dengan mengetik kode berikut diikuti dengan tombol Enter:

Sub BukaAtauTidak()

9. Tepat di atas garis kode End Sub, tetapkan variabel String yang akan menjadi nama workbook:

Dim nf As String
nf = "NamaFileAnda.xlsm"

10. Undang UDF Buka yang telah Anda buat untuk melakukan penilaian apakah workbook dibuka atau tidak:

If Buka(nf) = True Then

11. Untuk memperagakan saja, kotak pesan memberitahukan Anda jika workbook dibuka:

MsgBox nf & " sedang dibuka.", vbInformation, "Perhatian!"
Else

12. UDF Buka menentukan workbook tidak dibuka, maka buat kotak pesan untuk menanyakan apakah workbook akan dibuka atau tidak:

Dim TanyaBuka As Integer
TanyaBuka = _
MsgBox(nf & " belum dibuka, apakah Anda ingin membukanya?", _
vbYesNo, _
"Silakan pilih!")

13. Contoh kode jika jawabannya adalah No, artinya workbook tidak dibuka:

If TanyaBuka = vbNo Then
MsgBox "Tenang saja, file tidak jadi dibuka.", , "Anda telah memilih No."
Else

13. Contoh kode jika jawabannya adalah Yes, artinya workbook dibuka, sehingga Anda perlu membantu macro dengan menuliskan alamat lengkap file workbook tersebut, maka dari itu diperlukan variabel String lain untuk menyediakan alamat file-nya:

Dim nfl As String
nfl = "C:\Alamat\File\Anda\" & nf

14. Buka file:

Workbooks.Open Filename:=nfl

15. Akhiri penghubung logis If:

End If
End If

16. Susunan UDF dan Macro lengkap menjadi sebagai berikut:

Function Buka(w) As Boolean
Dim wb As Workbook
On Error Resume Next
Set wb = Workbooks(w)
If Err = 0 Then
Err.Clear
Buka = True
Else
Buka = False
End If
End Function
Sub BukaAtauTidak()
Dim nf As String
nf = "NamaFileAnda.xlsm"
If Buka(nf) = True Then
MsgBox nf & " sedang dibuka.", vbInformation, "Perhatian!"
Else
Dim TanyaBuka As Integer
TanyaBuka = _
MsgBox(nf & " belum dibuka, apakah Anda ingin membukanya?", _
vbYesNo, _
"Silakan pilih!")
If TanyaBuka = vbNo Then
MsgBox "Tenang saja, file tidak jadi dibuka.", , "Anda telah memilih No."
Else
Dim nfl As String
nfl = "C:\Alamat\File\Anda\" & nf
Workbooks.Open Filename:=nfl
End If
End If
End Sub

17. Tekan Alt+Q untuk kembali ke worksheet.

18. Masukkan rumus =Buka("NamaFileAnda.xlsm") pada sel mana saja.

19. Tekan Alt+F8 untuk membuka macro BukaAtauTidak.

Itulah pembahasan tentang cara mengundang UDF dari suatu macro, selamat mempraktikkan dan semoga bermanfaat.