还有另一种选择,除了
If Currency1 = "USD" Or Currency1 = "CNY"
意见中已经提出。它有点复杂,它使用了一个额外的函数,检查值是否在数组中。
因此,在这种情况下,我们可以将数组作为字符串传递
"USD:AUD:DEM"
或作为实数数组
Array("USD", "AUD", "DEM")
,这取决于我们的需要。在下面的例子中,我展示了两种选择。
Option Explicit
Public Function b_value_in_array(my_value As Variant, my_array As Variant, Optional b_is_string As Boolean = False) As Boolean
Dim l_counter
If b_is_string Then
my_array = Split(my_array, ":")
End If
For l_counter = LBound(my_array) To UBound(my_array)
my_array(l_counter) = CStr(my_array(l_counter))
Next l_counter
b_value_in_array = Not IsError(Application.Match(CStr(my_value), my_array, 0))
End Function
Public Sub TestMe()
Dim Currency1 As String
Currency1 = "USD"
If b_value_in_array(Currency1, Array("USD", "AUD", "DEM")) Then
Debug.Print "Value is in the array."
End If
If b_value_in_array(Currency1, "USD:AUD:DEM", True) Then
Debug.Print "Value is in the array."
End If
End Sub