VBA|NavigateArrowメソッドの使い方(Excel VBA)

エクセルVBA VBAでセルの操作



NavigateArrowメソッドって使ってますか?

NavigateArrowメソッドは、セルを参照した数式を作成するときに非常に役立つメソッドです。

今回は、NavigateArrowメソッドの使い方について徹底的に解説していきます。



NavigateArrowメソッドの使い方

NavigateArrowメソッドって何をするの?

NavigateArrowメソッドについて、マイクロソフトの説明は以下のようになっています。

※ 読んでも何を言いたいのかよくわからないと思いますので、灰色の枠の中を飛ばしても問題ありません。

指定した範囲のトレース矢印をたどって、参照元のセル、参照先のセル、またはエラーの発生したセルに移動します。 参照元、参照先、またはエラーのセルを選択し、新しい選択範囲を表すRangeオブジェクトを返します。 指定されたセルにトレース矢印が表示されていないときは、エラーを返します。

上の説明を無視して(笑)、NavigateArrowメソッドについてひとことで言うと、

数式において参照先セルを視覚的に確認できる

というものです。

NavigateArrowメソッドの動作

NavigateArrowメソッドの動作について解説します。

以下のように「男子の平均得点」と「女子の平均得点」を求めている表があります。

男子の平均得点、女子の平均得点を求める表

ここで、男子の平均得点を求める数式は、以下のように設定しています。

E3 = ( C2 + C4 + C7 + C8) / 4

この式について、それぞれのセルの関係性について「矢印」で表示すると、以下の表のようになります。

男子の平均得点を算出するための参照元をトレースしている

この矢印を表示させるには、エクセル上で、 セル E3 を選択し、[数式] タブの [ワークシート分析] グループで、[参照元のトレース] を選択します。

この矢印のことを 「トレース矢印 」といいます。

トレース矢印が表示されている状態でNavigateArrowメソッドを実行すると、トレース矢印の参照先の任意のセルにカーソルが移動します。

NavigateArrowを実行すると、参照先の任意のセルにカーソルが移動する

以上のように、NavigateArrowメソッドを使うことにより、複雑な数式において、

「どのセルが参照先なのか」、「数式の任意の項がどのセルに該当するのか」

ということを視覚的に確認することができるのです。

NavigateArrowメソッドの構文・サンプルコード

構文: Rangeオブジェクト. NavigateArrow  TowardPrecedent, ArrowNumber, LinkNumber

パラメータの説明:

TowardPrecedent トレース矢印の方向を指定します。Trueの場合、参照元の方向に移動します。 Falseの場合は、依存関係に向かって(つまりTrueの逆方向)移動します。
ArrowNumber 対象となるトレース矢印の番号を指定します。つまり、数式における右から何番目の項なのかを指定します。
LinkNumber トレース矢印が外部参照を表すとき、この引数でどの外部参照を対象とするかを指定します。 この引数を省略すると、最初の外部参照が使用されます。
※省略可能

上記動作を行うサンプルコード:

Sub NavigateArrowの動作()
    Worksheets("Sheet1").Activate
    Range("E3").Select
    ActiveCell.NavigateArrow True, 2 'E3に設定された数式の「右から2番目の項」を指定している
End Sub

 実行する前に、セル E3 を選択し、[数式] タブの [ワークシート分析] グループで、[参照元のトレース] を選択しておきます。

実行すると、下図のように、数式 「E3 = ( C2 + C4 + C7 + C8) / 4」 の右から2番目の項の「C7」にカーソルが移動します。

【まとめ】NavigateArrowメソッドの使い方

NavigateArrowメソッドを使うことにより、複雑な数式において、

「どのセルが参照先なのか」、「数式の任意の項がどのセルに該当するのか」

ということを視覚的に確認することができることがわかったと思います。

複雑な数式がうまく動作しないときには、ぜひNavigateArrowメソッドを使用してみてくださいね。

 




VBAでセルの操作
ブイサバ【Excel VBAサバイバル】~とりあえずここに来れば解決できる~

コメント

タイトルとURLをコピーしました