3

プログラムでエラー関数と補完エラー関数を使用しようとしています。どちらも機能していません。エラーが発生し続けますCompile Error: Sub or Function not defined。ただし、セルに入って手動でエラー関数を使用しようとすると、機能します。

何故ですか?実際のコードでどのように使用できますか?

誤差関数はERF(x)で、補誤差関数はERFC(x)です。

動作しないものの例を次に示します。

Sub SeriouslyWHYIsntThisWorking()
    x = 3
    Range("A1") = Erf(x)
End Sub

これでもうまくいきません:

Sub PleaseWork()
    Range("A1") = Erfc(1)
End Sub

しかし、Excel に入力してセルに入力=ERF(3)する=ERFC(1)と、機能します。

私はこれに非常に慣れておらず、おそらく信じられないほど単純なものが欠けています。助けていただければ幸いです。

4

3 に答える 3

3

Analysis Toolpak for VBA アドインがインストール/参照されていますか? (atpvbaen.xls を探します)

関数はそのERFアドインの一部であり、2 つのバージョン (Excel 関数用と VBA 用) があり、プロジェクトで使用できるように設定して参照する適切なバージョンが必要です。

アドインは MSFT の標準ですが、常に既定で設定されているわけではありません。Excel で正常に使用できる場合は、少なくとも Excel のバージョンは既にセットアップされています。したがって、その機能をどのように実装/使用するかに関係なく、やりたいように見えるようにすべてを使用するには、アドインが必要です。つまり、これを他の人と共有したい場合は、アドインをインストール/アクティブ化する必要があります。


この回答を提供された他の回答 (同等に正確で正しい) とリンクするには、次のいずれかでセル値を設定します。

Range("A1").value = Application.WorksheetFunction.ERF(x)

またはセル式を設定する

Range("A1").Formula = "=Erfc(" + x + ")"

アドインを使用するエンド ユーザーが必要になります。

于 2012-07-23T21:15:24.777 に答える
2

これを試して:

Sub ThisShouldWorkNow()
    x = 3
    formula = "=Erfc(" + x + ")"
    Range("A1").Formula = formula
End Sub

私の Linux マシンには Excel がないので、まったくテストされていません。しかし、要点は理解できたと思います。Range オブジェクトの .Formula プロパティを使用する必要があります。

ここに詳細があります:

http://msdn.microsoft.com/en-us/library/office/gg192736.aspx

于 2012-07-23T21:11:57.507 に答える
2

vba でワークシート数式を使用するには、その前に配置する必要がありますApplication.WorksheetFunction.

一部の関数には vba に相当するものがありますが、(私の知る限り) and の場合はそうではerfありませんerfc

于 2012-07-23T21:12:31.810 に答える