ハイパーリンクが実行された場合の制御方法 ①。ハイパーリンクのジャンプ先セルを、画面の左上に表示する。
利用用途(以下のような場合を解決します)
通常、[HyperLink]でジャンプした場合、ジャンプ先の表示は、
●画面内にジャンプ先がある場合は、選択セル位置が移動するだけ。
●画面外の場合は、列ならば最右列、行ならば最下行にセル位置が移動します。
※ジャンプ先の多くは、[そこから下]や[そこから右]に参照したい
データがある為、かなり不便です。
以下、B100セルへジャンプした場合
以下、T100セルへジャンプした場合
G13セル(画面内)へジャンプした場合。
記述方法について(ブックとシートで制御方法を分ける)
ハイパーリンクの制御は、ワークブック全体に対して行う方法と、
シート毎に行う方法で分ける事ができます。
それぞれ記述する場所とコードが異なるので注意します。
ワークブック全体で、ハイパーリンク実行時の動きを制御する。
ワークブック全体で制御を行う場合、[ThisWorkbook]内に記述をします。
以下のコードを書き込みます。
Option Explicit
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Application.Goto Selection, True
End Sub
シートに戻ってハイパーリンクをクリックすると、画面の左上に
リンク先が表示されるようになりました。
[ThisWorkbook]内に記述したので、どのシート内のハイパーリンクを
クリックしても、同じ結果になります。
特定のシートで、ハイパーリンク実行時の動きを制御する。
ハイパーリンクの制御を行いたいシート内にコードを記述します。
[Sheet1(Sheet1)]内に記述して行きます。
以下のコードを書き込みます。
Option Explicit
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Application.Goto Selection, True
End Sub
[Sheet1(Sheet1)] 内に記述したので、「Sheet1」内でのみハイパーリンクを
クリックして、結果が得られます。(Sheet2などでは効果がありません。)
同じ効果のある記述方法の差し替えについて。
ブック、シート、両方とも、実行する構文として、以下を利用しました。
Application.Goto Selection, True
自分に分かり易く別の記述へ差し替える事もできます。
ActiveWindow.ScrollRow = Selection.Row ’’行番号を抽出し実行ActiveWindow.ScrollColumn = Selection.Column ’’列番号を抽出し実行
- 両方実行で、差し替え前と同じ動き。
- 「ActiveWindow.ScrollRow = Selection.Row」だけ実行
>>行だけ下にスクロールされる。 - 「ActiveWindow.ScrollColumn = Selection.Column」だけ実行
>>列だけ右にスクロールされる。
リンク先の選択セル位置をずらす(例:ThisWorkbook に記述)
完全に左上に表示させたくない場合(1行、1列ずつの余白が欲しい、等)
左上から指定の行数、列数をずらす事ができます。
「Application.Goto Selection, True」記述の場合
「Offset」値を設定してずらします。
ThisWorkbookへの記述への場合、下記のようになります。
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Application.Goto Selection.Offset(-1, -1), True
End Sub
「ActiveWindow.Scroll *** = Selection.***」記述の場合
Rowナンバーや、 Columnナンバーを直接「+1」や「-1」して書きます。
ThisWorkbookへの記述への場合、下記のようになります。
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
ActiveWindow.ScrollRow = Selection.Row – 1
ActiveWindow.ScrollColumn = Selection.Column – 1
End Sub
実行したあとは、いずれもジャンプ先セルは、1行、1列左上が選択され、
その分、余白を持たせて表示されます。