[解決済み] Excelカスタム関数のツールチップの探求
質問
この質問は
質問
以前
を使用した関数の説明を提供することを諦めるというものです。
Application.MacroOptions
(
VBA6
) (
VBA7
など)がありますが、この情報は実際にはツールチップとして表示されないので、私の問題の解決にはなりません。
ゴール
私たち全員が望むことは、あらゆる手段(VBA、VSTO、または COM アドイン)でカスタム関数を定義でき、インラインまたは数式バーにあるすべての Excel 組み込み関数のように、関数とそのパラメーターのポップアップ/ツールチップの説明をユーザーに提供することです。
このニーズに対する広く受け入れられている答えは、カスタム関数では不可能だということですが、私はその信念に異議を唱えたいと思います。
問題点
現在、私が見た最善の方法は、関数ダイアログ (数式バーの fx ボタン) を表示するときに、その関数とパラメータの説明が以下のように表示されるように、関数 (多くの場合、上記の MacroOptions 呼び出しを使用します) を定義することです。
ご覧のように、これは多くのパラメータを持つ複雑な関数です。ユーザーがこの "関数引数" ダイアログとその表示方法を知らず、代わりに Excel の標準ツールチップにのみ精通している場合、数式名だけが表示され、追加のヘルプは表示されないでしょう。
これでは、必要なパラメータを正しく提供するチャンスはないでしょう。(ドキュメントを読まずに。もちろん、そんなことをするユーザはいないのですが。)
さて、パワーユーザーであれば、次のように入力することで Ctrl + シフト + A のように、関数パラメータの自動補完リストが付与されます。
しかし、もちろん、標準的なExcelユーザーは最初の画像からデフォルトの動作にしか慣れず、おそらくその機能を学ぶことはないだろうという、上記と同じ問題があります。
この時点で、なぜこれが十分ではなく、すべてのビルトイン関数が持っているもの、つまり、関数の使用方法をユーザーに伝えるインライン ツール ヒントが必要なのかが明らかになるはずです。
いじわる
最初は、これは単に Excel のネイティブ アプリケーションの関数以外では不可能だと確信していたかもしれません。アドインと VBA は拡張機能であり、このツールチップは単に拡張できないだけなのかもしれません。しかし、分析ツールパックというアドインの存在によって、その説は覆されました。確かにMicrosoftで作られているが、ANALYS32.xllはVB、C、C++、C#で作成できるものと同じようにスタンドアロンのXLLアドインである。案の定、このXLLをアプリケーションに読み込むと 関数 を利用できるようにすると、ネイティブの Excel 関数と同じツールチップが表示されます。
この情報が何らかの方法でこの XLL ファイルにエンコードされて Excel に渡されるのであれば、独自のアドインでそれを再現する方法があるのではないでしょうか。私は今、逆コンパイルについて独学で学び始め、分析ツールパックで何が起こっているかをリバース エンジニアリングできるかどうかを見ているところです。
お手伝いできること
私はこの問題に関して、公開されているすべての情報を調査したとほぼ確信しています。もし、私が知らないことを誰かが知っていて、それがこの問題の助けになるかもしれないならば、遠慮なく申し出てください。私はコンパイルされたDLL/xllのリバースエンジニアリングに非常に不慣れなので、もし誰かがローカルのAnalysis32.xllを開いて、カスタム関数定義で何が起こっているのかを調べたいなら、私は大いに感謝するでしょう。そうでなければ、私はすべての行き止まりに行き当たるまでこれを自分で掘り続け、見つけたものを報告するつもりです。
どのように解決するのですか?
GitHub に概念実証のためのプロジェクトを Excel-DNA IntelliSense プロジェクトとして、実装しています。
UI Automation クラスを使用して適切な Excel ユーザーインターフェイスイベントを監視し、適切なときにフォームが表示されます。
このコードは Excel-DNA アドインとしてラップされており、私の Excel 2013 / Windows 8 マシン上で動作します。他の 1 つの構成 (Windows Server 2008 上の 64 ビット Excel 2010) でテストしましたが、深刻な問題が発生しました。
このように Excel-DNA の属性で定義された C# 関数の場合。
[ExcelFunction(Description =
"A useful test function that adds two numbers, and returns the sum.")]
public static double AddThem(
[ExcelArgument(Name = "Augend",
Description = "is the first number, to which will be added")]
double v1,
[ExcelArgument(Name = "Addend",
Description = "is the second number that will be added")]
double v2)
{
return v1 + v2;
}
関数の説明と
で、関数を選択すると、引数のヘルプが表示されます。
見た目はいいのですが、すべてがまだ非常に不安定で、私のマシンでしか動作せず、時々 Excel がクラッシュします。しかし、これは手始めかもしれません...。
2014年5月9日更新です。
古い Excel と Windows のバージョンで引数ヘルプを動作させる方法について、いくらか進展がありました。しかし、すべてを信頼できるようにするには、まだかなり多くの作業が必要です。これを手伝いたい人は、私に直接連絡してください。
2016年6月18日に更新しました。
Excel-DNAアドインとVBA関数の両方に対するExcel UDF IntelliSenseのサポートは現在テスト中です。以下を参照してください。 入門編 のページをご覧ください。
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Distinct() with lambda?
-
[解決済み] UTF-8のCSVファイルをExcelに強制的に自動認識させることは可能ですか?
-
[解決済み】Excel VBAでSelectを使用しないようにする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み] 関数を終了するには?