[Share System.Math使用VB.NET DLL与VBA Excel共享功能

问题描述 投票:0回答:1

我正在使用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

......



excel vba vb.net dll
1个回答
1
投票

在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
© www.soinside.com 2019 - 2024. All rights reserved.