1

関数がfalseの場合(ハードコードされた回答のように)、関数値をペーストスペシャル値として返したい。誰でも私を助けてもらえますか?かなり大きなデータセットに対してこれを行う必要があるため、サブの代わりに関数を使用する方が簡単だと思いました。

Function produktion(d2, sum1, sum2)

    Dim j As Integer
    j = Application.Sum(sum1) - Application.Sum(sum2)


    If d2 = Date Then

        produktion = j

    Else
        'here hardcode the produktion = j forever like the paste special value

お時間をいただきありがとうございます!

4

2 に答える 2

1

UDF はワークシートを直接変更することはできず、値を返すことしかできません。UDF 呼び出し自体の外部でコードを実行するようにトリガーする回避策があります。

1 つEvaluateは、シートを変更するコードを呼び出すために使用することです (もう 1 つは、Gary が回答したワークシート イベントを使用することです)。

Function produktion(d2, sum1, sum2)
    Dim j As Long
    j = Application.Sum(sum1) - Application.Sum(sum2)

    If d2 = Date Then
        produktion = j
    Else
        With Application.Caller
            'here hardcode the produktion = j forever like the paste special value
            .Worksheet.Evaluate "HardCodeValue(""" & .Address & """)"
        End With
    End If
End Function

Sub HardCodeValue(rng As String)
    With Range(rng)
        .Value = .Value
    End With
End Sub
于 2014-12-22T20:02:47.727 に答える