如何解决VBA功能错误的错误?

时间:2018-10-29 13:12:52

标签: access-vba

我不知道如何在我的VBA上修复错误,以使一个Empety单元格返回Empety值。

在我的桌子上,我有一些想要替换的值。其他值是正确的,如果Case中未提及,则返回该单元格的值(strSize)。但是某些单元格是空的,如果是空的,则必须保持空。

所有值均根据以下情况返回,但当带有有效单元格时,返回#Error

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 :(得分:1)

不是导致错误的VBA函数,而是实现它的方式。字符串永远不能为Null,并且您的函数将字符串作为参数。因此,如果参数为null,则会导致错误。

一个简单的解决方法是使函数采用一个变体作为参数:

Public Function fncRetornaSize(strSize As Variant) As Variant

您可以保留其余功能。

或者,您可以使用IIF(IsNull(来避免该错误:

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