Есть ли способ сделать лучшую реализацию функции excel IFERROR с помощью VBA ?
Всем привет,
Я хотел бы иметь функцию, которая возвращает подписанное максимальное доступное число в Excel в случае переполнения (т. е. + или - 9.99999999999999 E+307) в случае переполнения и ноль в случае недостаточного потока.
IFERROR позволяет мне установить только одно значение в случае ошибки.
Я придумал какой-то код, но он не работает
Основная причина, я думаю, заключается в том, что аргумент, который может быть выражением, вычисляется Excel перед передачей его в функцию, поэтому я не могу контролировать то, что происходит
Есть зацепка ?
Спасибо
Что я уже пробовал:
Option Explicit Function Test(ByVal x As Variant) As Variant Application.Volatile Dim retval As Variant Application.ScreenUpdating = False On Error GoTo ErrorHandling retval = Evaluate(x) If VarType(retval) = vbError Then Select Case retval Case CVErr(xlErrDiv0) MsgBox "#DIV/0! error" Case CVErr(xlErrValue) MsgBox "#VALUE! error" Case Else MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description End Select End If Test = retval Application.ScreenUpdating = True Exit Function ErrorHandling: Select Case Err.Number Case 10 ' Divide by 0 MsgBox "Division by 0" Case Else MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description End Select End Function