2013-07-02 68 views
1

我想用相同的变量使用不同的数据类型并做一些计算。 例如,我使用的是可变的“选项”中,对不同的数据类型使用相同的变量

If option = 1 then 
    Do this 
Elseif option = "X" then 
    Do this 
Elseif option = 6 then 
    Do this 
Endif 

有什么办法,我可以得到这个工作?

+0

如何将值分配给“选项”?是否可以将1和6作为字符串?另一个选项可能是让另一个变量保存“X”,如果该变量设置为一个值,将选项设置为0 ... – sous2817

+0

我正在阅读一行中的选项。可能的选项可能是1,一组中的X和2,整数0至6,另一组中的-1至-6。我想在这里使用相同的变量。因此,对于第一组,我可以将选项视为字符串,将第2组视为整数。对于第2组,我希望使用如下条件:如果选项> 0或选项= 0或选项<0覆盖-1到-6,0和1到6的所有可能值。请提供建议。 – Shan

回答

2

您可以使用变体来允许在一个变量内部使用不同的数据类型。下面的代码工作。

Public Sub TestVariant() 
    Dim x As Variant 

    x = 17 

    If x = 1 Then 
    ' Do this 
    ElseIf x = "bob" Then 
    ' Do this 
    ElseIf x = 17 Then 
    ' This is done 
    End If 
End Sub 

关闭我的头顶,这虽然闻起来有点。将变量严格定义会更好。如果你正在处理也可能是字符串的数字,你总是可以将数字转换为字符串。例如:

Public Sub TestVariant() 
    Dim x As string 

    x = "1" 

    If x = "1" Then 
    ' Do this 
    ElseIf x = "bob" Then 
    ' Do this 
    ElseIf x = "17" Then 
    ' This is done 
    End If 
End Sub 

编辑:在Excel中编译和按预期工作的另一个示例。

Public Function TestVariant(theOption As Variant) 
    If theOption < 0 Then 
    TestVariant = "Negative" 
    ElseIf theOption = 6 Then 
    TestVariant = "Six" 
    ElseIf theOption = "Stuff" Then 
    TestVariant = "Other Stuff" 
    Else 
    TestVariant = theOption 
    End If 
End Function 
+0

我遵循同样的方法。 我的函数是这样的,函数fcComm(oddsId As Integer,agt As String,ma As String,sma As String,Option As Variant)。我在excel中使用了相同的函数as = fcComm(A3,B4,C4,D4,-6)。我的条件内的功能是如果选项<0然后做到这一点。不过,我确实收到单元格中的#VALUE错误。可能是什么问题 ?我已经使用了相同的函数来处理不同的条件,比如If Option = 1,它运行良好。 – Shan

+0

我假设你实际上没有使用变量选项,因为它是保留的,它并不真正起作用。这听起来像你有另一个错误。如果你看看我的编辑,我可以让它在Excel中工作。尝试发布更多的实际代码。 – lfrandom

1

如果您声明optionVariant您应该很好去。

相关问题