运算符在Excel VBA中重载

我想做什么:

我想在Excel中使用运算符重载来运行自定义数据types的自定义函数。 例如,当计算一个公式时,当计算涉及我的一个自定义数据types时,我希望Excel运行我的函数而不是“+”运算符。

为什么我想要这样做:

在分析化学中,每个数字都有一个不确定性,写成:

13.56(±0.02)mm

我想创build一个自定义的数据types保持在同一个单元格中的数量的大小和不确定性。

此外,我想实现运算符重载,所以当我写

=A1+A2 

并且A1或A2包含不确定型数字,我的自定义函数将运行而不是默认的“+”运算符来计算不确定性。

这将使我的电子表格更加清洁,因为目前我必须写下这样的声明

 =ADD_UNC(A1, A2) 

对于非常简单的方程式来说,这是可以find的,但是当我试graphics成的操作甚至是微不足道的时候,就会变成一种痛苦。

 =MULT_UNC(A3, ADD_UNC(MULT_UNC(A5, A1, A2), A3) vs. =A3*((A1*A2)+A3) 

为什么我认为这是可能的:

我知道, 真正的 ,完全成熟的编程语言,如C#,运算符重载是非常普遍的,非常容易执行。

感谢您的帮助,

迈克尔

在VBA中不可能。 VBA旨在提供有助于自动化的脚本。 你看,我们称之为macros观。 VBA不是build立在模块化类或对象之上的。 你的VBE在编辑器input/input的时刻写入直接的P代码。 VBA很棒,包含了很多function,但是期望VBA中的这些设施有点儿延伸。 即使将来也没有这个可能性。 只是一个build议,不要太担心代码化妆品,它们是无用的开销。

这是一个使用Worksheet_Change事件的黑客攻击。 你可以基本上放置在任何你想要的包含“+”字符的单元格中,从而有效地分离“+”号正常函数。

 Private Sub Worksheet_Change(ByVal Target As Range) If UBound(Split(CStr(Target), "+")) > 0 Then Target = "Overloaded" Else: Target = "Not overloaded" End If End Sub 
Interesting Posts