お知らせ

CustomFunction

CustomFunction イベント

対  象

fpSpreadコントロール

機  能

Formulaプロパティにユーザー定義関数が設定されたときと、関数の処理が必要になったときに発生します。

書  式

Sub fpSpread_CustomFunction(ByVal FunctionName As String, ByVal ParameterCnt As Integer, ByVal Col As Long, ByVal Row As Long, Status As Integer)

引  数

FunctionName設定されたユーザー定義関数名
ParameterCntユーザー定義関数の引数の数
Col数式が設定されているセルの列番号
Row数式が設定されているセルの行番号
Statusユーザー定義関数の実行結果

解  説

関数の引数の情報は、CustomFunctionイベントの中でCFGetParamInfoメソッドを呼び出すことによって取得できます。
Status引数には、ユーザー定義関数の実行結果に対応する次のいずれかの値を設定します。fpSpreadコントロールは、Status引数に設定した値に基づいて、数式の計算を続行するか中止するかを判断します。次の定数は、SSOCX.BASファイルで定義されています。

定数関数の実行結果
0SS_VALUE_STATUS_OK正常
1SS_VALUE_STATUS_ERRORエラー
2SS_VALUE_STATUS_EMPTY引数の値が無効

サンプル 次のサンプルコードは、セルA2の数式にユーザー定義関数cube()を設定します。

Private Sub Command1_Click()
    ユーザー定義関数を登録します。
    fpSpread1.AddCustomFunction "cube", 1
     Formulaプロパティに関数を設定します。
    fpSpread1.Col = 1
    fpSpread1.Row = 2
    fpSpread1.Formula = "cube(A1)"
End Sub

Private Sub fpSpread1_CustomFunction( _
    ByVal FunctionName As String, ByVal ParameterCnt As Integer, _
    ByVal Col As Long, ByVal Row As Long, Status As Integer)

    Dim vResult As Variant
    Dim b As Boolean
    Dim lArg1 As Long, dfArg1 As Double
    Dim nTypeArg1 As Integer, nStatusArg1 As Integer

     計算結果が無効な場合には、SS_VALUE_STATUS_EMPTYを返します。
    Status = SS_VALUE_STATUS_EMPTY
     ユーザー定義関数 cobe() を処理します。
    If FunctionName = "cube" Then
        b = fpSpread1.CFGetParamInfo( 1, nTypeArg1, nStatusArg1)
        If nStatusArg1 = SS_VALUE_STATUS_OK Then
            If nTypeArg1 = SS_VALUE_TYPE_LONG Then
                lArg1 = fpSpread1.CFGetLongParam(1)
                vResult = lArg1 * lArg1 * lArg1
                Status = SS_VALUE_STATUS_OK
        ElseIf nTypeArg1 = SS_VALUE_TYPE_DOUBLE Then
            dfArg1 = fpSpread1.CFGetDoubleParam(1)
            vResult = dfArg1 * dfArg1 * dfArg1
            Status = SS_VALUE_STATUS_OK
            End If
        End If        
    End If
    If Status = SS_VALUE_STATUS_OK Then
        fpSpread1.CFSetResult vResult
    End If
End Sub

コメント