我正在使用VB.NET(VS 2015)编写一些几何数学函数来创建DLL(geoMath.DLL),包括System.Math。我可以构建DLL并在VBA Excel中使用这些功能没有问题。
我想做的是使System.Math的功能也可用于VBA代码,仅引用geoMath.DLL。我可以在类中使用Math,例如x = Math.Sign(y),但在vba代码中看不到Math函数。
问题:如何使用自定义DLL与vba共享System.Math功能?
VB.NET代码
Option Strict Off
Option Explicit On
Imports System.Math
Namespace Mat
Partial Public Class geoMathmatica
Public mathNET as System.Math
......
在DLL中创建模仿System.Math函数的方法。
Public Class MyDLL
Public Shared Function Sin(AngleInRadians As Double) As Double
Return System.Math.Sin(AngleInRadians)
End Function
End Class
编辑:最多使用对象
Public Shared Function Max(val1 As Object, val2 As Object) As Object
'tested with
' Dim ii As Integer = CInt(MyDLL.Max(7I, 2I))
' Dim dd As Double = CDbl(MyDLL.Max(7.3R, 2.42R))
Select Case True
Case TypeOf val1 Is Double
Return System.Math.Max(DirectCast(val1, Double), DirectCast(val2, Double))
Case TypeOf val1 Is Integer
Return System.Math.Max(DirectCast(val1, Integer), DirectCast(val2, Integer))
'etc - add others
End Select
End Function