プロが教えるわが家の防犯対策術!

データ型がハイパーリンクの文字列が入力されたテーブルをコンボボックスに表示させています。(添付画像参考)
希望は、
プルダウンでURLを選択したと同時にリンク先へ飛びたいです。
現在は、
プルダウンでURLを選択→コンボボックスをクリック
でリンク先に飛んでいます。
多分コンボボックスのChangeイベントだと思うのですが
どうすればいいのでしょうか?

アドバイスよろしくお願いします。

「コンボボックスの値が変更されたらそのコン」の質問画像

A 回答 (3件)

No.2です。



> ""を開いています。

このメッセージから、推測される原因を確認した結果、
おおよそ状況がつかめました。

前回回答前のこちらでのテストでは、ハイパーリンク型
フィールドへのファイルのドラッグ&ドロップでアドレス
を記録したのですが、この場合、入力データにカーソルを
合わせた後、F2キーで編集モードにすると
「http//www.goo.ne.jp/#http//www.goo.ne.jp/#」
と、アドレスが二重に表示されます。
(実際には1個目のアドレスは文字列としての表示、
 2個目のアドレスが実際のリンク先)

一方、Webブラウザなどからアドレスをコピー&ペースト
した場合は
「#http//www/goo.ne.jp#」
と、実際のリンク先のアドレスのみが記録されますが、
このデータを「Call FollowHyperlink(コンボ0)」の
形で参照すると、エラーとなってしまうようです。
大変失礼致しました。


対処法としては、「データの先頭文字が『#』かどうかで
切り分け」も考えましたが、今回の件では「Follow」を
使用した方がよさそうです(汗)

Private Sub コンボ0_AfterUpdate()

  If Nz(コンボ0, ") = "" Then Exit Sub

  'コンボ0に記録されたハイパーリンクを実行
  '(FollowHyperlinkと違い、アドレスを引数とする必要
  ' はなし。こちらの詳細もヘルプを参照下さい(汗))
  コンボ0.Hyperlink.Follow

End Sub
    • good
    • 0
この回答へのお礼

おおお!
希望通りできました!
大変感謝しております!
再度ご回答ありがとうございます!!1

お礼日時:2009/04/04 22:21

> 多分コンボボックスのChangeイベントだと思うのですが



Changeイベントは、極端な話、IMEをオフにしていると
1文字入力毎(IMEがオンの場合は変換の確定毎)にイベント
が発生してしまうので、更新後イベントの方がよいのでは
ないでしょうか。
(ハイパーリンクアドレスの手入力を制限できていれば
 ChangeでもOkですが、その制限の方がコードとしては
 難しいかと・・・)


ハイパーリンク先の表示には「FollowHyperlink」を
使用するのがいいかと思います。
(なお、ハイパーリンクアドレス以外の引数も指定可能
 ですが、下記では省略しています。詳細はVBAのヘルプ
 を参照下さい:htmlとかには非常に疎いので(汗))


Private Sub コンボ0_AfterUpdate()

  'アドレスの文字列がない場合は何もしない
  If Nz(コンボ0, "") = "" Then Exit Sub

  'リンク先を表示
  Call FollowHyperlink(コンボ0)
  '構文としては以下でも可
  'FollowHyperlink コンボ0
  'Application.FollowHyperlink コンボ0

End Sub


・・・以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
しかしエラーになってしまいます。

まず、
「""を開いています。
ハイパーリンクにはコンピューターやデータに問題を起こす可能性もあるものもあります。
お使いのコンピューターを保護するには、信頼できる発行元からのハイパーリンクのみをクリックしてください。続行しますか?」

にて「はい」をクリックすると

VBAのエラーになり
「実行時エラー 7971
'#http://www.google.co.jp/#'へのハイパーリンクを認識できません。
接続先を確認してください。」
となってしまいます。

しかしその後にコンボボックスをクリックするとリンク先へ飛べます。

何がいけないのでしょう?

再度ご回答いただければ助かります。
よろしくお願いします。

お礼日時:2009/04/04 11:56

”クリックする”という行為は PCに ある意味で ”確認した”というサインです。


コンポボックスに表示された URLリストが ”新規データー ”であることを認識させれば・・・なんとか・・・と思います。

例えば URL のテーブルに 登録順のID番号と アクセスした 履歴を残すフィールドが
あれば コンポボックスに 逆順に表示された一番目の URLが履歴が ”Null " なら URLを コンポボックスの値にして
クリックした状態にする・・・・
以上の行為を プロシージャーに設定すれば 可能です。

プロシージャーを造るのが 面倒なら・・・クリックしてして下さい。
    • good
    • 0
この回答へのお礼

がんばってプロシージャーを作ってみます。ありがとうございます。

お礼日時:2009/04/04 10:05

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