- 締切済み
セルに数値を入力した際、自動的にハイパーリンクが設定されるようにしたいのですが可能でしょうか。
VBで可能なのではないかと思うのですが、VBはまったくやったことがありません。 可能でしたらコードを書いて頂けると本当にたすかります。 ハイパーリンク先のURLパターンは常に決まっていて、以下の通りです http://page5.auctions.yahoo.co.jp/jp/show/contact?aID=セルの値 ※要はイコール記号の後が変わるだけです 例:セルA1にa123456と入力すると自動的にA1にハイパーリンクが設定される セルの表示はa123456、 ハイパーリンクは、 http://page5.auctions.yahoo.co.jp/jp/show/contact?aID=a123456 例:セルA2にb987654と入力すると自動的にA2にハイパーリンクが設定される セルの表示はb987654、 ハイパーリンクは、 http://page5.auctions.yahoo.co.jp/jp/show/contact?aID=b987654 例:セルA3に564879と入力すると自動的にA3にハイパーリンクが設定される セルの表示は564879、 ハイパーリンクは、 http://page5.auctions.yahoo.co.jp/jp/show/contact?aID=564879 以上のように自動設定させれるにはどうしたらよいかご教授下さい。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- DOUGLAS_
- ベストアンサー率74% (397/534)
[回答番号:No.2] の DOUGLAS_ です。 >VBで可能なのではないかと思うのですが、VBはまったくやったことがありません。 回答がかぶってしまいましたので、VBAの例をお一つ。 1)シートタブを右クリック [コードの表示(V)] をクリック。 2)現われたコードウィンドウ(Visual Basic Editor)に下記コードをコピペ。 3)[Alt] + [F4] でVBE(Visual Basic Editor)を閉じます。 4)以上で、A列に「a123456」と入力されたら「a123456」と表示される http://page5.auctions.yahoo.co.jp/jp/show/contact?aID=a123456 へのハイパーリンクが設定されます。 複数の範囲を指定してデータの貼り付けが行なわれたような場合でも、A列だけが反応するように書いております。 このマクロ(VBA)が不要になったときは、 5)シートタブを右クリック [コードの表示(V)] をクリック。 6)現われたコードウィンドウ(Visual Basic Editor)の(2)で貼り付けた部分を削除。 7)[Alt] + [F4] でVBE(Visual Basic Editor)を閉じます。 でOKです。 なお、「VBA」は「Visual Basic for Application」の略で「VBE」はそのエディタ(編集画面)の略です。 '/ ̄/ ̄ この下から / ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄ Private Sub Worksheet_Change(ByVal Target As Range) Dim myURL As String Dim myRng As Range myURL = "http" & "://page5.auctions.yahoo.co.jp/jp/show/contact?aID=" For Each myRng In Target If myRng.Column = 1 And myRng.Value <> "" Then ActiveSheet.Hyperlinks.Add Anchor:=myRng, _ Address:=myURL & myRng.Value, _ TextToDisplay:=myRng.Value End If Next End Sub '_/_/ この上まで _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
No.3のコードを修正しました。 これでエラーなしで処理されると思います。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static SlctCell As Object Dim str As String If (SlctCell Is Nothing) Then Set SlctCell = ActiveCell End If str = SlctCell.Value If (SlctCell <> "") Then ActiveSheet.Hyperlinks.Add Anchor:=SlctCell, Address:= _ "ハイパーリンクのリンク先" + str, TextToDisplay:=str End If Set SlctCell = ActiveCell End Sub
お礼
やってみたら出来ました!私はVB無知なのでこれは神でした。当方の説明不足で若干思惑と違う部分が出てきましたので後日改めて質問するかもしれません。本当に感謝です!
すいません。No3ではエラーが出てしまいます。
VBAのコードでハイパーリンクを設定するには ツールー>マクロー>Visual Basic Editorを選択します。 左上のプロジェクトエクスプローラから使用するシート名をダブルクリックします。 もしプロジェクトエクスプローラがなければメニューの表示から選択してください。 以下のコードを入力 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static SlctCell As Object If (SlctCell Is Nothing) Then Set SlctCell = ActiveCell End If If (SlctCell <> "") Then ActiveSheet.Hyperlinks.Add Anchor:=SlctCell, Address:= _ "ハイパーリンクのリンク先" + SlctCell.Value, TextToDisplay:=SlctCell.Value End If Set SlctCell = ActiveCell End Sub これで、セルに何か文字を入力して確定すれば自動的にハイパーリンクがつきます。
- DOUGLAS_
- ベストアンサー率74% (397/534)
>VBはまったくやったことがありません。 VBAで簡単にできることですが、[HYPERLINK] 関数を使ってB1にでもリンクを作った方が簡単ですね。 =HYPERLINK("http://page5.auctions.yahoo.co.jp/jp/show/contact?aID=" & A1,A1)
お礼
ありがとうございます。これも応用して使えそうなので感謝です。
- mitarashi
- ベストアンサー率59% (574/965)
ここはコーディング承り所ではないので、HYPERLINK関数で我慢してください。But,ご希望のURLはセキュリティの問題でExcelからはアクセスできないかもしれません。(LOGINしていればいけるのかな?) .....A.........................B 1...a123456........ =HYPERLINK("http://page5.auctions.yahoo.co.jp/jp/show/contact?aID=" & A1,A1) 2...qa4861580... =HYPERLINK("http://okwave.jp/" & A2 & ".html",A2) VBAがご希望なら、ハイパーリンク設定を自動記録していじってください。試しにやってみましたが、セキュリティのエラーは同様でした。
お礼
大変親切で私でもなんとなく理解できる(コード以外)書き方に感動です。非常に使い勝手の良い仕様にしてくれているのも感謝感謝です。私の説明不足で若干思惑と違う部分が出てきましたので後日補足か質問をするかもしれませんがよろしくお願いします。