@Rez Kautsar ...
Pada baris perintah berikut ini :
...
' Perform the VLOOKUP
On Error Resume Next ' Ignore errors temporarily
result = Application.WorksheetFunction.VLookup(lookupValue, lookupRange, 2, False)
On Error GoTo 0 ' Restore error handling
' Check if there was an error in the VLOOKUP
If IsError(result) Then
' If an error occurred, display "Data tidak ditemukan"
result = "Data tidak ditemukan"
End If
...
jika fungsi Application.WorksheetFunction.VLookup
tidak menemukan data yang dicari, maka VBA akan menimbulkan kesalahan (Error). Namun karena pada baris sebelumnya ada perintah On Error Resume Next
, maka kesalahan yang terjadi tidak akan muncul, namun tetap tersimpan pada object Err
(Error), sampai perintah berikutnya (yakni On Error GoTo 0
) dieksekusi.
Jadi, untuk mengetahui apakah terjadi kesalahan pada script di atas, yang diperiksa seharusnya adalah object Err
, bukan pada nilai variabel result
karena variabel tersebut tidak akan menghasilkan nilai kesalahan yang terjadi. Solusinya :
...
' Perform the VLOOKUP
On Error Resume Next ' Ignore errors temporarily
result = Application.WorksheetFunction.VLookup(lookupValue, lookupRange, 2, False)
' Check if there was an error in the VLOOKUP
If Err.Number <> 0 Then '+-- Periksa object Error!
' If an error occurred, display "Data tidak ditemukan"
result = "Data tidak ditemukan"
End If
On Error GoTo 0 ' Restore error handling
...
Solusi lainnya, karena tipe variabel result
adalah Variant
, maka gunakan fungsi VLookup
langsung dari object Application
seperti berikut :
' Perform the VLOOKUP
On Error Resume Next ' Ignore errors temporarily
'+-- Dengan Application.VLookup, jika data tidak ditemukan maka
'+-- variabel result akan menyimpan nilai error.
result = Application.VLookup(lookupValue, lookupRange, 2, False)
On Error GoTo 0 ' Restore error handling
' Check if there was an error in the VLOOKUP
If IsError(result) Then
' If an error occurred, display "Data tidak ditemukan"
result = "Data tidak ditemukan"
End If
Pada solusi kedua ini, jika terjadi kesalahan, maka fungsi Application.VLookup
akan mengembalikan nilai kesalahan ke dalam variabel result
, sehingga bisa diuji dengan fungsi IsError
.
Demikian.