[[20150227101348]] 『ハイパーリンクできないマクロコード』(はんぱ者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ハイパーリンクできないマクロコード』(はんぱ者)

本を参考に見よう見まねでハイパーリンクのマクロコードを書いたのですが、

うまくいきません。どこがまずいのでしょうか、よろしくお願いします

入力原本シート(後でコピーして名前が変わる)のセル G15から

 同じブック内の先頭シート”目次”のセルE1に飛びたいのです。

シートモジュールに下記の通り、書いたのですが

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

  ActiveSheet.Hyperlinks.Add Anchor:=Range("G15"), _

    Address:="", SubAddress:=Worksheets("目次") & "!E1", _

      ScreenTip:=" 目次へ", TextToDisplay:="目次へ"

End Sub

< 使用 Excel:Excel2007、使用 OS:Windows8 >


 良く見てないけど
 ここは
 SubAddress:=Worksheets("目次") & "!E1"
 こうでは?
 SubAddress:="目次!E1" 
(稲葉) 2015/02/27(金) 10:44

稲葉様 

回答ありがとうございます。

アドバイス通り、

SubAddress:="目次!E1" としたのですが、うまくいきません。

(はんぱ者) 2015/02/27(金) 10:54


 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
 ↓
 Private Sub Worksheet_Change(ByVal Target As Range)

 にするとか?
(se_9) 2015/02/27(金) 11:11

調べた情報がごっちゃになっているようです。

ActiveSheet.Hyperlinks.Add は、ハイパーリンクを作成する命令。1回だけ動かせばよろしい。
Worksheet_FollowHyperlinkイベントは、ハイパーリンクをクリックした際に毎回発生。
ここにリンク作成のコーディングをしてはいけません。もし書くなら、他シートをActivateする命令を。
(ハイパーリンクの飛び先と違うところに飛ばしても意味ないか…)

ハイパーリンクを作成していない状態で、ハイパーリンクを押したときのコーディングをしても動きませんよね。
ハイパーリンクを押したときに、ハイパーリンクを作成するコードも、意味不明かと。
(???) 2015/02/27(金) 11:22


 よく読んだら結構おかしいですね。

 >入力原本シート(後でコピーして名前が変わる)のセル G15から 
 >同じブック内の先頭シート”目次”のセルE1に飛びたいのです。
 これならG15セルにHyperLinkを設定して、マクロ不要だと思うのですけど
 そうできない理由があるのでしょうね。
(稲葉) 2015/02/27(金) 11:53

???様、稲葉様 どうもありがとうございました。

今回、初めてエクセルでマクロを組み、いろんなことが自動でできるので、

楽しくなり、ついハイパーリンクもマクロでやろうと欲張り見当違いの

作業をやっていたようです。

稲葉様のご指摘のように、”G15セルにHyperLinkを設定して、マクロ不要 ”で

希望のことができました。今までこんな簡単に設定できるとは思いませんでした。

とんだお騒がせして申し訳ありません。

(はんぱ者) 2015/02/27(金) 12:39


se_9様 

マクロを使わない方法で、できました。ご心配頂きありがとうございました。

(はんぱ者) 2015/02/27(金) 12:45


 楽しくなるのわかります!
 もしリンク先が例のように1件だけならそれでもいいのですが
 例えば隣のシートにリンクしたいときに役に立ったりします。

 例として
 新しいブックを作ってください。
 シートを適当に増やしてください。
 適当なシートに
 A1を選択して、Ctrl+K リンク先をドキュメント内の適当なところ(Sheet1のA1)に設定し、
 表示文字列を「前へ」
 B1を同じ手順で、表示文字列を「次へ」

 これをコピーしてすべてのシートに貼り付けてください。

 Alt+F11を押してThisWorkBookモジュールに以下のコードを張り付けてください。

    Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
        Select Case True
            Case Target.Name = "次へ" And Sh.Index < Sheets.Count
                Sheets(Sh.Index + 1).Select
            Case Target.Name = "前へ" And Sh.Index > 1
                Sheets(Sh.Index - 1).Select
            Case Else
                Sh.Select
        End Select
    End Sub

 次へを押すと、右隣のシート、前へを押すと左隣のシートに移動できます。

 まあ、HyperLinkのイベント使わなくても、ダブルクリックや右クリックで代用できますが
 直感でわかりやすいですよね。
(稲葉) 2015/02/27(金) 13:47

稲葉様 

わかりやすく懇切丁寧な説明と、コード表記など具体的な事例を挙げていただき

ありがとうございます。

ハイパーリンクのコマンド Ctrl+K から ThisWorkBookモジュールの使い方まで

何から何まで参考になりました。

おっしゃるように、書かれたコードで左右自在にシート移動できました。

大変便利なので、これも利用させていただきます。

(はんぱ者) 2015/02/27(金) 15:55


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.