こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelで、リストから選択したら自動的にリンク

エクセルの「入力規則」で、入力値の種類を「リスト」にし、
プルダウンメニューで選択できるようにしたいのですが、
そこまでは自分でできるのですが、例えばそのリストが
何かのホームページのリストだったとして、
選択したリストに応じて自動的にリンクが貼られるように
するには、どうすればいいのでしょうか?
エクセルではこういった処理はできないでしょうか?

投稿日時 - 2009-04-27 11:00:56

QNo.4912606

困ってます

質問者が選んだベストアンサー

Private Sub Worksheet_Change(ByVal Target As Range)
Dim hlc As Range
If Target <> Range("A1") Then Exit Sub
For Each hlc In Range("A5:A15")
If hlc.Hyperlinks.Count = 1 And hlc = Range("A1") Then
With hlc
ActiveSheet.Hyperlinks.Add Target, hlc.Hyperlinks.Item(1).Address
End With
End If
Next
End Sub

投稿日時 - 2009-04-30 13:26:34

お礼

ありがとうございます!!
やってみたらできました!!
まさにこの答えを待ってました・・・。
本当にありがとうございました。

投稿日時 - 2009-04-30 13:30:12

ANo.6

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.5

[回答番号:No.4] の DOUGLAS_ です。
>選択した途端にリンク先に飛ぶのでは困ります。
とのことでしたら、#2さんのコードの方がよいですね。

>チェンジイベントとかよくわかりません。
 私のコードも、#2さんのコードも「チェインジイベント」といって、ワークシート上で何らかの変化が生じたときに自動的に動くマクロのことです。
 とは、言っても、
If Target <> Range("A1") Then Exit Sub
とか
If Target.Address = "$A$1" Then
というような記述で、セルA1 以外での変動は除外するようにしてあります。

>マクロというのが実はよくわかりません
 さて、上記の「チェインジイベント」を使用するには下記の段取りで行ないます。
1)シート タブ(ラベル)を右クリック [コードの表示(V)] をクリックして現われる コードウィンドウ に#2さんのコードをコピペ。
2)[Alt] + [F4] で コードウィンドウ を閉じる。
3)A1 のドロップダウンから URL を選び、それをクリックすると ブラウザ が起動して、リンク先に飛びます。

 このマクロが不要なときは、(1)と同様にして コードウィンドウ を開き、(1)でコピペしたコードを削除し、(2)のように コードウィンドウ を閉じます。

投稿日時 - 2009-04-28 13:14:17

補足

皆さんに教えて頂いて、それでも上手くいかない要因が見つかりました。
入力規則の元となるセルにURLをそのまま(グーだったらhttp://www.goo.ne.jp
と入れていれば、ドロップダウンでグーのURLを選択すれば、
選択したあとにクリックすれば飛ぶのですが、
元となるセルに、URLそのままではなく、「グー」と表記されていると、
その後選択してもリンク先に飛ばなくなってしまいます
(ハイパーリンクの挿入で、表示文字列が「グー」で、
アドレスにhttp://www.goo.ne.jpと入っている状態)

これを上手くやる方法はないのでしょうか・・・

投稿日時 - 2009-04-30 10:04:31

ANo.4

 HTML でしたら Javascript で可能ですが、エクセルのワークシートから直接ご要望のことをしようとすれば、#2さん同様、ワークシートの チェインジイベント になります。

1)シート タブ(ラベル)を右クリック [コードの表示(V)] をクリックして現われる コードウィンドウ に下記をコピペ。
'---------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$A$1" Then ActiveWorkbook.FollowHyperlink Target.Value
End Sub
'---------------------------------------------------------------
2)[Alt] + [F4] で コードウィンドウ を閉じる。
3)A1 のドロップダウンから URL を選んだ途端に ブラウザ が起動して、リンク先に飛びます。

 もし、A1 の ドロップダウン リスト には、ホームページの名前が入っていて、アドレスが別のセルに羅列されているというような場合でしたら、例えば、リストの [元の値(S)] が「=B1:B3」で、「C1:C3」に対応するURLが入っているというようなことでしたら、
'---------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$A$1" Then
  ActiveWorkbook.FollowHyperlink _
   Application.WorksheetFunction.VLookup(Target.Value, Range("B1:C3"), 2, 0)
 End If
End Sub
'---------------------------------------------------------------
というようなことになります。

投稿日時 - 2009-04-27 16:47:18

補足

せっかく書いていただいたのですが、
チェンジイベントとかよくわかりません。
また、選択した途端にリンク先に飛ぶのでは困ります。

難しそうですが、やってみます・・・。

投稿日時 - 2009-04-28 09:11:00

ANo.3

NO1です。
>指示頂いたとおりにやってみましたがエラーになってしまいました。
⇒回答しました式をそのまま使用できません。
 「入力規則セル」の記載部分は、入力規則が機能しているセル(例えば、A1など)を代入して下さい。

投稿日時 - 2009-04-27 14:04:20

補足

それくらいはわかります・・・。
そのとおりにしましたが、それでもうまくいきませんでした。
どこか入力を間違えたのかもしれませんが。

投稿日時 - 2009-04-28 09:09:52

ANo.2

入力規則のセルがA1として、別セルに
=HYPERLINK(A1,"お気に入り")
とすれば(Excel2007)OKでした。

A1セルで、ハイパーリンクするならマクロになります。
シートラベルを右クリック>コードの表示で、VBEのコードウインドウに下記コードを貼り付け

Private Sub Worksheet_Change(ByVal Target As Range)
If Target <> Range("A1") Then Exit Sub
Target.Hyperlinks.Add Target, Target.Value
End Sub

投稿日時 - 2009-04-27 13:31:10

お礼

ありがとうございます。
使っているのは2002なので、できなさそうですね。
マクロというのが実はよくわかりませんが、やってみます。

投稿日時 - 2009-04-28 09:08:40

ANo.1

入力規則のセルにはできませんが、別セルにリンク先を関連付ける事は可能ですが如何でしょうか。
一例です。
(1)リストを定義、A1:A5として、B1:B5にHPのURLを定義、入力規則で「リスト」「=$A$1:$A$5」を登録
(2)入力規則の左隣のセルに=IF(入力規則セル<>"",HYPERLINK(VLOOKUP(入力規則セル,$A$1:$B$5,2,FALSE),"リンク先"),"")

投稿日時 - 2009-04-27 11:22:35

お礼

ご丁寧にありがとうございます。
ご指示頂いたとおりにやってみましたがエラーになってしまいました。

やはり入力規則セルには設定できないのですね。
できれば便利かなと思ったのですが、地道に
自分で他のやり方でやるしかないみたいです。

ありがとうございました。

投稿日時 - 2009-04-27 11:37:37

あなたにオススメの質問