このエラーの検索はすべて役に立ちませんでした。これは簡単なはずです...私の簡単なモジュール[FTAという名前]には次のコードが含まれています:VBA - ユーザー定義型が定義されていません
モジュールはきれいにコンパイルされます。次に、関数によって返された型メンバーの1つにワークシートのセル値を設定しようとすると、私は以下の構文を使用します。
=test.added(1,2)
それは、ポップアップ・エラーおよびセルを表示し#NAME「定義されていないユーザー定義型」になり?。 正しい値3を表示するにはどうすればよいですか? これは些細な数学ではなく、Typeを返す関数を呼び出して、そのタイプのメンバーをワークシートに使用できるかどうかについてです。あなたはその後、使用することができます
Public Type AddMult
Added As Double
Multiplied As Double
End Type
Function test(A As Double, B As Double) As AddMult
test.Added = A + B
test.Multiplied = A * B
End Function
Function test_added(A As Double, B As Double) As Double
test_added = test(A, B).Added
End Function
Function test_multiplied(A As Double, B As Double) As Double
test_multiplied = test(A, B).Multiplied
End Function
を:私のExcelはあなたがたUDFとして使用可能である二つの機能を作成することができ、その後、それらの機能のそれぞれは、例えば、既存のものを起動している2010年
返すためにAddMultからの値を参照するには、オプションのブールを使用しています。 UDFから複数の値を返す場合は、配列ではなく型を返す必要があります。 –
2提案に感謝しますが、私の問題はより複雑です。私の真のUDFは、スカラー、ブール値、文字列などが混在した型を返します。個々の型メンバーを個別に返すために別々のVBA関数を書くのは避けたいです。ワークシートが私のVBAパブリック・タイプを認識しないか、またはUDFがそのタイプのオブジェクトを戻すという事実はないようです。ワークシートにそのことを「教える」方法を教えてください。 VBAは構文 "test(1,2).Added"を受け付けているようですが、ワークシートにはありません。どうして? – Gershon
あなたのタイプを認識するようにExcelに教えることはできません。物語の終わり。 – YowE3K