bon*_*igo 6 excel enums vba excel-vba logical-operators
跨夫妇的那一个想要通过场景来operators作为parameter一个函数或方法.根据这篇文章,Java没有那种能力,因此需要创建一个Enum主要的解决方法.
例如
Function doCalcs(ByRef AND as LogicalOperator, ByRef greater ArithmeticOperator)
尽管与.Net,Java相比,VBA库的数量要少得多,但创建Enum得到了很好的支持.也许我不知道,所以如果VBA有可能operator types或我们可以通过的任何其他变通方法an operator,那就射入.(除了if else/ case检查包含运算符参数的字符串.. =))我要的是不同于这里提到的.
例如,如果你看CountIFS,它有能力接受operators.即使有人可以解释此功能中可能的后端工作,
operator?Enum结构还是比那更有效或更低效的结构?这些问题的答案仍然可以接受.
使用类的方法:
定义一个接口类
Op
Public Function eval(operand1, operand2)
End Function
对于每个所需的运算符,定义一个实现。例如
OpMinus
Implements Op
Private Function Op_eval(operand1 As Variant, operand2 As Variant) As Variant
    Op_eval = operand1 - operand2
End Function
OpPlus
Implements Op
Private Function Op_eval(operand1 As Variant, operand2 As Variant) As Variant
    Op_eval = operand1 + operand2
End Function
现在模块中的一些测试例程:
Sub test()
    Dim Minus As New OpMinus
    Dim Plus As New OpPlus
    Dim o, v1, v2
    For Each o In Array(Minus, Plus)
        For Each v1 In Array(1, 2, 3)
            For Each v2 In Array(1, 2, 3)
                operate o, v1, v2
            Next
            Debug.Print ""
        Next
        Debug.Print ""
    Next
End Sub
Sub operate(ByVal operator As Op, operand1, operand2)
    Debug.Print operator.eval(operand1, operand2),
End Sub
输出:
 0            -1            -2            
 1             0            -1            
 2             1             0            
 2             3             4            
 3             4             5            
 4             5             6            
请注意,如果您知道要操作的类型,您可能希望使用egDouble而不是在界面中使用。Variant
| 归档时间: | 
 | 
| 查看次数: | 4417 次 | 
| 最近记录: |