スポンサーリンク

ハイパーリンクのジャンプ先セルを、画面の左上に表示する。[HyperLink]、[VBA]

HyperLink_05.jpg HyperLink
スポンサーリンク
スポンサーリンク

ハイパーリンクが実行された場合の制御方法 ①。ハイパーリンクのジャンプ先セルを、画面の左上に表示する。

利用用途(以下のような場合を解決します)

通常、[HyperLink]でジャンプした場合、ジャンプ先の表示は、
●画面内にジャンプ先がある場合は、選択セル位置が移動するだけ。
●画面外の場合は、列ならば最右列、行ならば最下行にセル位置が移動します。
※ジャンプ先の多くは、[そこから下]や[そこから右]に参照したい
 データがある為、かなり不便です。

以下、B100セルへジャンプした場合

HyperLink_06.jpg

以下、T100セルへジャンプした場合

HyperLink_07.jpg

G13セル(画面内)へジャンプした場合。

HyperLink_08.jpg

記述方法について(ブックとシートで制御方法を分ける)

ハイパーリンクの制御は、ワークブック全体に対して行う方法と、
シート毎に行う方法で分ける事ができます。

それぞれ記述する場所とコードが異なるので注意します。

ワークブック全体で、ハイパーリンク実行時の動きを制御する。

ワークブック全体で制御を行う場合、[ThisWorkbook]内に記述をします。

HyperLink_09.jpg

以下のコードを書き込みます。

Option Explicit
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  Application.Goto Selection, True
End Sub

シートに戻ってハイパーリンクをクリックすると、画面の左上に
リンク先が表示されるようになりました。

[ThisWorkbook]内に記述したので、どのシート内のハイパーリンクを
クリックしても、同じ結果になります。

HyperLink_05.jpg

特定のシートで、ハイパーリンク実行時の動きを制御する。

ハイパーリンクの制御を行いたいシート内にコードを記述します。
[Sheet1(Sheet1)]内に記述して行きます。

HyperLink_10.jpg

以下のコードを書き込みます。

Option Explicit
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  Application.Goto Selection, True
End Sub

[Sheet1(Sheet1)] 内に記述したので、「Sheet1」内でのみハイパーリンクを
クリックして、結果が得られます。(Sheet2などでは効果がありません。)

HyperLink_11.jpg

同じ効果のある記述方法の差し替えについて。

ブック、シート、両方とも、実行する構文として、以下を利用しました。
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列左上が選択され、
その分、余白を持たせて表示されます。

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