Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2283 / 13645 ツリー ←次へ | 前へ→

【68975】ハイパーリンクが貼られたセルを見つけ出し、実行させるには? のろ 11/5/4(水) 14:05 質問[未読]
【68979】Re:ハイパーリンクが貼られたセルを見つけ... リンク 11/5/5(木) 14:35 発言[未読]
【68993】Re:ハイパーリンクが貼られたセルを見つけ... のろ 11/5/5(木) 21:24 お礼[未読]

【68975】ハイパーリンクが貼られたセルを見つけ出...
質問  のろ  - 11/5/4(水) 14:05 -

引用なし
パスワード
   いつもお世話になります。

既にハイパーリンクが貼られたセルを見つけ出し、リンクを実行させるマクロを書いてみたのですが、ハイパーリンクの実行のところでエラーがでます。
sheet1のA列の各セルにはハイパーリンク関数によるリンクが貼られています。(リンクは同じブック内の違うシートのセルとの間に設定されています。) 
例 "A1" = HYPERLINK("#sheet2!A1", "aaa1")
  "A2" = HYPERLINK("#sheet3!A6", "aaa2")
  "A3" = HYPERLINK("#sheet2!A27", "aaa3")
  ...
行いたい動作は、A列中のリンクが貼られたセルのうち、どれか一つを指定し、そのリンクを実行するというものです。
「リンク名」を、sheet1のA列中のセルの値とし、
下記のようなマクロを書いてみたのですが、セルの検索のみ処理され、リンクの実行が行われません。

ans = InputBox("リンク名を入力してください", "リンク名", "")
  Worksheets("sheet1").select
  Set Foundcell = Range("A4:A800").Find(ans, LookAt:=xlPart)
If Foundcell Is Nothing Then
MsgBox "リンク元がありません。"
Else
Foundcell.Select
If Selection.Hyperlinks.Count >= 1 Then
  Selection.Hyperlinks(1).Follow
End If
End if

リンクの実行が行えるようにするにはどうすればよいのか、ご教示お願いいたします。

【68979】Re:ハイパーリンクが貼られたセルを見つ...
発言  リンク  - 11/5/5(木) 14:35 -

引用なし
パスワード
   >リンクの実行が行えるようにするにはどうすればよいのか、ご教示お願いいたします。
まず、LookAt:=xlWhole のほうが正確にマッチするかな。

HYPERLINK関数を使った場合にはHyperlinksプロパティには何も設定されません。
従って、Formulaプロパティを見て、
Instrなどを使ってリンク先のアドレスを取得すればいいのでは?
(他人が作ったものなら、
 =HYPERLINK(Sheet2!A1, "aaa1")
 などの書き方もあるから注意が必要。)

リンク先に飛ぶのは、Application.Gotoメソッド。

【68993】Re:ハイパーリンクが貼られたセルを見つ...
お礼  のろ  - 11/5/5(木) 21:24 -

引用なし
パスワード
   ▼リンク さん:
>HYPERLINK関数を使った場合にはHyperlinksプロパティには何も設定されません。
>Formulaプロパティを見て、
>Instrなどを使ってリンク先のアドレスを取得すればいいのでは?
>リンク先に飛ぶのは、Application.Gotoメソッド。

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

hyperlink関数式の中のアドレス(例、"#sheet2!A16")を読み取り、読み取られたアドレスにGotoメソッドを適用して、
Application.GotoSheets("sheet2").Range("A16")というふうに、目的のセルにジャンプするということですね。

ご指摘された線に沿ってマクロを書いたところ、上手く動作しました。

2283 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free