我不知道如何在我的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
有人可以帮我吗?
答案 0 :(得分:1)
不是导致错误的VBA函数,而是实现它的方式。字符串永远不能为Null,并且您的函数将字符串作为参数。因此,如果参数为null,则会导致错误。
一个简单的解决方法是使函数采用一个变体作为参数:
Public Function fncRetornaSize(strSize As Variant) As Variant
您可以保留其余功能。
或者,您可以使用IIF(IsNull(
来避免该错误:
IIF(IsNull(SomeVariable), Null, fncRetornaSize(SomeVariable))