アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (6件)

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
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/04/30 13:30

[回答番号: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)のように コードウィンドウ を閉じます。

この回答への補足

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

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

補足日時:2009/04/30 10:04
    • good
    • 0

 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/28 09:11
    • good
    • 1

NO1です。


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

この回答への補足

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

補足日時:2009/04/28 09:09
    • good
    • 0

入力規則のセルが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
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/04/28 09:08

入力規則のセルにはできませんが、別セルにリンク先を関連付ける事は可能ですが如何でしょうか。


一例です。
(1)リストを定義、A1:A5として、B1:B5にHPのURLを定義、入力規則で「リスト」「=$A$1:$A$5」を登録
(2)入力規則の左隣のセルに=IF(入力規則セル<>"",HYPERLINK(VLOOKUP(入力規則セル,$A$1:$B$5,2,FALSE),"リンク先"),"")
    • good
    • 3
この回答へのお礼

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

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

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

お礼日時:2009/04/27 11:37

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

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