Как устранить ошибку при ошибке функции VBA? - PullRequest
0 голосов
/ 29 октября 2018

Я не знаю, как исправить ошибку на моем VBA, чтобы пустая ячейка возвращала пустое значение.

В моей таблице есть некоторые значения, которые я хочу заменить. Другие значения являются правильными, и если не упомянуто в Case, возвращает значение ячейки (strSize). Но некоторые клетки пустые, и если пустота, то должны оставаться пустыми.

Все значения возвращаются в соответствии с приведенным ниже регистром, но когда идет с пустой ячейкой, возвращается # Ошибка

Public Function fncRetornaSize(strSize As String) As String
Select Case strSize
   Case "": fncRetornaSize = ""
   Case "3,5": fncRetornaSize = "36"
   Case "4": fncRetornaSize = "36,5"
   Case "4,5": fncRetornaSize = "37"
   Case "5": fncRetornaSize = "38"
   Case "5,5": fncRetornaSize = "38,5"
   Case "6": fncRetornaSize = "39"
   Case "6,5": fncRetornaSize = "40"
   Case "7": fncRetornaSize = "40,5"
   Case "7,5": fncRetornaSize = "41"
   Case "8": fncRetornaSize = "42"
   Case "8,5": fncRetornaSize = "42,5"
   Case "9": fncRetornaSize = "43"
   Case "9,5": fncRetornaSize = "44"
   Case "10": fncRetornaSize = "44,5"
   Case "10,5": fncRetornaSize = "45"
   Case "11": fncRetornaSize = "46"
   Case "11,5": fncRetornaSize = "46,5"
   Case Else
    fncRetornaSize = strSize
End Select
End Function

Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 29 октября 2018

Ошибка вызвана не функцией VBA, а способом ее реализации. Строка никогда не может быть нулевой, и ваша функция принимает строку в качестве параметра. Таким образом, если аргумент равен нулю, он вызывает ошибку.

Простое исправление - заставить функцию принимать в качестве аргумента вариант:

Public Function fncRetornaSize(strSize As Variant) As Variant

Вы можете оставить остальные функции без изменений.

Кроме того, вы можете использовать IIF(IsNull(, чтобы избежать ошибки:

IIF(IsNull(SomeVariable), Null, fncRetornaSize(SomeVariable)) 
...