2024年のうちにやっておきたいこと、ここで宣言しませんか?

エクセルで、ページの上部にメニュー・下部にメニューの説明を書き、上部メニューを押すと下部メニューに飛ぶようにハイパーリンクを作成しています。
メニュー欄をウィンドウ枠で固定していますが、リンク先へ飛ぶ際、そのリンク先のセルが常のハイパーリンクのすぐ下に表示されるようにしたいんです。

ふつうにハイパーリンクを貼ると、そのセルがページの一番下に表示されてしまいますよね?そうはしたくないんです。
マクロで、リンク先が常にページのトップに来るようなものがあると思いますが、ウィンドウ枠の固定をしているので、それは使えません。

説明が下手ですみませんが、どうすればいいか教えてください。
よろしくお願いします。

A 回答 (3件)

リンク先がページのトップに来るマクロは、ウィンドウ枠の固定をしているので使えないという意味が分かりませんが、次のような内容ではダメということなのでしょうか。


シートタブの右クリックメニューにある"コードの表示"から開くウィンドウに以下を記述し、そのウィンドウを閉じます。
------
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Application.Goto Selection, True
End Sub
    • good
    • 5

たとえばA1,B1,C1セルにハイパーリンクを埋めて、それぞれA5,A35,A65セルにジャンプするようにしてるとして。





方法1:ふつーにハイパーリンクでできること

>上部メニューを押すと下部メニューに飛ぶようにハイパーリンクを作成しています

A1のハイパーリンクのとび先をたとえばA5:E40などのように、B1のとび先をたとえばA35:E70、C1のとび先をたとえばA65:E100などのように大きなセル範囲に設定しておくと、目的のA5,A35,A65の各セルはメニューに近い位置に持ち上がって表示されます
あなたの実際のエクセルに配置に従い、適切に範囲を調整します





方法2:マクロで行う方法

>ウィンドウ枠の固定をしているので、それは使えません。

ふつーにウィンドウ枠の固定をしていれば、別に問題なくマクロが使えます

シート名タブを右クリック、コードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

private sub Worksheet_BeforeDoubleclick(byval Target as range, Cancel as boolean)
 if not application.intersect(target, range("A1")) is nothing then
 application.goto range("A5"), true
 cancel = true
 end if

 if not application.intersect(target, range("B1")) is nothing then
 application.goto range("A35"), true
 cancel = true
 end if

 if not application.intersect(target, range("C1")) is nothing then
 application.goto range("A65"), true
 cancel = true
 end if
end sub

ファイルメニューから終了してエクセルに戻る
A1,B1,C1のハイパーリンクを取り消し、各セルをWクリックしてジャンプする。
    • good
    • 1

>ふつうにハイパーリンクを貼ると、そのセルがページの一番下に表示されてしまいますよね?そうはしたくないんです。



ハイパーリンクのセル参照をたとえば「A60」セルにしているなら、「A60:A100」のように範囲指定して見てください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A