Set Custom Functions - VB.NET
Spreadsheet SDK sample in VB.NET demonstrating ‘Set Custom Functions’
Module1.vb
Imports Bytescout.Spreadsheet
Module Module1
    ' This example demonstrates the calculation of custom functions.
    Sub Main()
        ' Create Spreadsheet instance
        Dim spreadsheet As New Spreadsheet()
        spreadsheet.RegistrationName = "demo"
        spreadsheet.RegistrationKey = "demo"
        ' Add custom formula handler
        spreadsheet.CustomFunctionsCallback = AddressOf MyFunctions
        ' Load document
        spreadsheet.LoadFromFile("CustomFuncExample.xlsx")
        ' Calculate the first worksheet
        Dim worksheet = spreadsheet.Workbook.Worksheets(0)
        worksheet.Calculate()
        ' Save calculated values to neighbor cells to demonstrate custom functions are calculated
        worksheet("C2").Value = worksheet("B2").Value
        worksheet("C3").Value = worksheet("B3").Value
        worksheet("C4").Value = worksheet("B4").Value
        ' Save modified spreadsheet
        spreadsheet.SaveAs("result.xlsx")
        ' Cleanup
        spreadsheet.Dispose()
        ' Open saved spreadsheet in associated application (for demo purpose)
        Process.Start("result.xlsx")
    End Sub
    Private Function MyFunctions(ByVal sender As Worksheet, ByVal funcName As String, ByVal arguments As Object(), ByRef handled As Boolean) As Object
        ' Handle "CUSTOMFUNC_FACTORIAL" function
        If String.Compare(funcName, "CUSTOMFUNC_FACTORIAL", StringComparison.OrdinalIgnoreCase) = 0 Then
            handled = True
            ' Compute factorial
            If arguments.Length > 0 Then
                Dim value As Integer = arguments(0)
                If value = 0 Or value = 1 Then
                    Return 1
                End If
                Dim f As Integer = 1
                For i As Integer = 1 To value
                    f = f * i
                Next
                Return f
            End If
            Return Nothing
        End If
        ' Handle "CUSTOMFUNC_SUM" function
        If String.Compare(funcName, "CUSTOMFUNC_SUM", StringComparison.OrdinalIgnoreCase) = 0 Then
            handled = True
            ' Compute the sum of values
            If arguments.Length > 0 Then
                Dim sum As Double
                For Each o As Object In arguments
                    sum = sum + o
                Next
                Return sum
            End If
            Return Nothing
        End If
        Return Nothing
    End Function
End Module
Resources.Designer.vb
��' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 '   <