[[20150521210124]] 『検索後のセルへのハイパーリンク』(猫田) ページの最後に飛ぶ

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

 

『検索後のセルへのハイパーリンク』(猫田)

『フォルダ内のエクセルファイルを開かずにファイル』というタイトルで検索後に、
ブックではなく、セルにリンクさせる方法を教えて下さい。

'ハイパーリンクセット

    For Each c In sh2.Range("A2", sh2.Range("A" & Rows.Count).End(xlUp))
        sh2.Hyperlinks.Add Anchor:=c, Address:=c.Value, TextToDisplay:=c.Value
    Next
    sh2.Select
    Application.ScreenUpdating = True

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


こんにちは。
複数の解釈ができるような文章かと思いまして、確認のための質問です。
(1)ハイパーリンクはどこに設定するのですか?
(2)リンク先はどこですか? Excelのどこかのセルですか?
文章で明示してください。

(γ) 2015/05/21(木) 21:32


(γ)さん、ありがとうございます。
『フォルダ内のエクセルファイルを開かずにファイル内の文字で検索する方法』にて、Sheet1に検索語を入力して、Sheet2にブックフルパス、ブック、シート、セルの検索した結果が出力されるのですが、フルブックパスにハイパーリンクが設置されていて、検索したブックが開くのですが、これをブックではなく、検索した結果のセルにリンクできないものなのかと思い質問いたしました。
(すみません。『フォルダ内のエクセルファイルを開かずにファイル』ではなく、『フォルダ内のエクセルファイルを開かずにファイル内の文字で検索する方法』です。)
なので、
(1)は、検索語を入力するSheet1の次のシートのSheet2です。
(2)は、検索結果したセルです。
よろしく、お願いします。
(猫田) 2015/05/21(木) 22:20

 参照スレッドがあるなら、そのURLくらい書くのが常識だと思う。
 それを読んでいないのでわからない。
 自分なりの設定で回答する。
 参考にならなければ、スキップして。

 【前提】
     A列              B列       C列
 1   D:\test.xlsx     Sheet1    B1

 のように、A1にハイパーリンクが挿入されており、
 その右のセルに、シート名と、セルアドレス
 があるという前提で書きます。

 【対応例】
 ・ハイパーリンクで直接、他のブックのシートやセルを指定できないようなので、
   イベントプロシージャを援用します。

 ・ハイパーリンクがあるシートのシートモジュールに以下を記入して下さい。
 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
     Dim myBook As String
     Dim mySheet As String
     Dim myCell As String

     myBook = Dir(Target.address)
     mySheet = Target.Range.Offset(0, 1).Value
     myCell = Target.Range.Offset(0, 2).Value

     Application.Goto Workbooks(myBook).Worksheets(mySheet).Range(myCell)
 End Sub

 これで、ハイパーリンクをクリックすると、
 ブックが開き、指定したセルに飛ぶはずです。

(γ) 2015/05/21(木) 23:01


(γ)さんありがとうございます。
すみません、さっそく設定してみたところ、「実行エラー9 インデックスが有効範囲ではありません」
とエラーが発生いたしました。
質問が不慣れで分かりにくいかと存じますがご教示下さい。
参照スレッドURL
http://www.excel.studio-kazu.jp/kw/20150128232226.html
です。よろしくお願いします。
(猫田) 2015/05/21(木) 23:50

私が提示した前提に合っているのか、あなたが確認してください。
私は実際に動作することを確認してから投稿しています。
エラーが出るのは、前提が違うからです。
それはそちらで修正してください。

コードコピーしました、エラーになりました。
じゃなくて、
確認作業(デバッグ)は あなた がして下さい。
そのためには
・コードの意味を理解する
・どの行でエラーになるのか確認する
・そのとき、変数名は想定したものになっているのか確認する
ことが必要です。

そのうえで、それでも解決しなければ、
上記の情報を提示して、コメントを求めてください。

(γ) 2015/05/22(金) 06:38


 失礼します。
 参照されたのがβが回答したコードだと思いますので。

 その前に、γさん指摘の通り、質問の前に、自分で確認できるところがたくさんあります。
 インデックスエラーですから、黄色く光っていたコードは

 Application.Goto Workbooks(myBook).Worksheets(mySheet).Range(myCell)

 だと思いますが、この黄色く光ったコードの myBook や mySheet や myCell にマウスを当てると
 その内容がポップアップで表示されます。表示された値が、(猫田)さんが意図したものになっているのかどうか。
 もし、意図通りでないとすれば、その変数の元ネタであるセルの値が意図通りではないということですから。

 で、本題です。
 参照されたスレでは、ブック参照のみでよかったのですが、セルに飛ばすなら

 Address:=○○○,SubAddress:="Sheet2!B10" といったように記述すればよろしいかと。
 もちろん、"Sheet2!B10" といった文字列は変数から与えることになりますが。

(β) 2015/05/22(金) 07:43


(γ)さん並びに(β)さん大変ありがとうございました。
(γ)さんのコードにて動作いたしました。
 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
     Dim myBook As String
     Dim mySheet As String
     Dim myCell As String
     myBook = Dir(Target.Address)
     mySheet = Target.Range.Offset(0, 2).Value
     myCell = Target.Range.Offset(0, 3).Value
     Application.Goto Workbooks(myBook).Worksheets(mySheet).Range(myCell)
 End Sub
急に仕事で必要となり、素人な私が作るはめとなり大変に困ってしまいましたが、これを機に
がんばっていきたいと思いますので、また機会があればよろしくお願いいたします。
(猫田) 2015/05/22(金) 20:11

 βさん ご指摘ありがとうございます。
 馬脚を顕すというのは正にこのことか、ですね。
 「ブックマーク」というボタンがあったのですね。
 これを使うとシート、セルにもリンクが張れるのですね。

 普段余り使わないので、(たぶん、昔は使っていたのだろうと思う)
 適当にファイル名を[]で囲ってシートを追加したNGだったので
 諦めていました。
 # 普通に考えて、これができなかったら困りますわね。

 ただ、イベントプロシージャを使う場面があるとすると、
 それは、指定したセルを左上に持って行く場合ですかね。
 Application.Goto の第二引数をTrueにすればよいです。

 ということで、
 質問者さまへ。

 ご自身でのデバッグご苦労様でした。

 私のでも動きますが、やはりβさんの手法を使ったほうが
 自然だと思いますので、ご一考願います。
 どうも失礼しました。

(γ) 2015/05/22(金) 21:23


コメント返信:

[ 一覧(最新更新順) ]


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