Excel のコマンド、関数、および状態

適用対象: Excel 2013 | Office 2013 | Visual Studio

Microsoft Excel は、コマンドと関数という、2 種類の別々の追加機能を識別します。

コマンド

Excel のコマンドには次のような特性があります。

  • ユーザーが行うのと同じ方法でアクションを実行する。

  • Excel の設定を変更する、ドキュメントを開く、閉じる、編集する、再計算を開始するなど、ユーザーが実行可能なあらゆる操作 (使用するインターフェイスの制限に依存します) を実行できる。

  • トラップされた特定のイベントが発生したときに、呼び出されるようセットアップできる。

  • ダイアログ ボックスを表示でき、ユーザーと対話できる。

  • 左クリックなど、オブジェクト上でアクションが行われるときに呼び出されるように、オブジェクトの制御にリンクできる。

  • 再計算中に Excel がコマンドを呼び出すことはない。

  • 再計算中に関数がコマンドを呼び出すことはできない。

関数

Excel の関数は、次のことを実行します。

  • 通常、引数を受け取り、常に結果を返す。

  • Excel の式の部分として、1 つ以上のセルに入力できる。

  • 定義された名前定義で使用できる。

  • 条件付き書式の制限およびしきい値の式で使用できる。

  • コマンドで関数を呼び出せる。

  • 関数がコマンドを呼び出すことはできない。

Excel makes a further distinction between user-defined worksheet functions and user-defined functions that are designed to work on macro sheets. Excel does not limit user-defined macro sheet functions only to being used on macro sheets: these functions can be used anywhere a normal worksheet function can be used.

ワークシート関数

Excel ワークシート関数には、次の事項が当てはまります。

  • マクロ シート情報関数にはアクセスできない。

  • 計算されていないセルの値を取得できない。

  • Excel 2007 以降では、スレッド セーフとして作成し、登録できる。

マクロシート関数

Excel マクロシート関数には、次の事項が当てはまります。

  • マクロ シート情報関数にアクセスできる。

  • 呼び出し元のセルの値を含む再計算されたセルの値を取得できる。

  • Excel 2007 以降では、スレッド セーフとみなされない。

どのように Excel でユーザー定義関数 (UDF) を操作するか、関数のどんな動作を許可するか、どのように関数を再計算するかは、関数を登録するときにすべて定義します。 関数がワークシート関数として登録されているにもかかわらず、マクロシート関数だけが実行できる操作を実行しようとすると、その操作は失敗します。 Excel 2007 以降、スレッド セーフとして登録されているワークシート関数がマクロ シート関数を呼び出そうとする場合にも、操作が失敗します。

Excel は、Microsoft Visual Basic for Applications (VBA) の UDF をマクロ シート等価の関数として扱います。それらの UDF はワークスペース情報と計算されないセルの値にアクセスでき、Excel 2007 以降、スレッド セーフとはみなされません。

Excel の状態

ユーザー、外部プロセス、マクロを実行するトラップされたイベント、または時間指定の Excel のハウスキーピング イベント (Autosave など) のアクションによって、Excel はどの時点でも、数ある状態のうちのどれか 1 つに入ります。

ユーザーは、次のような状態を経験します。

  • 準備完了状態: コマンドやマクロは実行されていません。 ダイアログ ボックスは表示されません。 セルは編集されておらず、ユーザーは切り取り/コピーおよび貼り付け操作の途中にありません。 埋め込みオブジェクトにフォーカスがありません。

  • 編集モード: ユーザーが、ロック解除されたセル、または保護されていないセルに、有効な入力文字を入力し始めた場合や、1 つ以上のロック解除されたセルまたは保護されていないセルで F2 キーを押した場合です。

  • 切り取り、コピー、貼り付けモード: ユーザーがセルまたはセル範囲を切り取ったりコピーしたりして、それをまだ貼り付けていない場合や、複数の貼り付け操作が可能な [形式を選択して貼り付け] ダイアログ ボックスを使用して貼り付けた場合です。

  • ポイント モード: ユーザーは、数式を編集中で、編集している数式にアドレスが追加されるセルを選択しているところです。

ユーザーは、編集、ポイント、貼り付け、コピー モードを [ESC] キーを押すことによって解除でき、Excel は準備完了状態に戻ります。 他のイベントでは、これらの状態を次のように解除することができます。

  • ユーザーがビルトイン ダイアログ ボックスを開く。

  • ユーザーが再計算を開始する。

  • ユーザーがコマンドを実行する。

  • Excel が Autosave 操作を実行する。

  • タイマー イベントがトラップされる。

最後の例は、アドイン開発者にとって重要です。 タイマー イベント トラップが頻繁に設定され実行されることが、Excel の通常の使いやすさに及ぼす影響を検討する必要があります。 これがアドインの機能の重要な部分である場合は、ユーザーが必要なときに通常どおりに切り取り/コピーおよび貼り付けできるように、簡単にアクセスできる一時停止方法をユーザーに提供する必要があります。

関連項目

Excel プログラミングの概念

時間のかかる操作でユーザーによる中断を許可する