• ベストアンサー

コンボボックスの値が変更されたらそのコンボボックスに表示されたURLを開きたい

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

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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

noname#150256
質問者

お礼

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

その他の回答 (2)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> 多分コンボボックスの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 ・・・以上です。

noname#150256
質問者

お礼

ありがとうございます。 しかしエラーになってしまいます。 まず、 「""を開いています。 ハイパーリンクにはコンピューターやデータに問題を起こす可能性もあるものもあります。 お使いのコンピューターを保護するには、信頼できる発行元からのハイパーリンクのみをクリックしてください。続行しますか?」 にて「はい」をクリックすると VBAのエラーになり 「実行時エラー 7971 '#http://www.google.co.jp/#'へのハイパーリンクを認識できません。 接続先を確認してください。」 となってしまいます。 しかしその後にコンボボックスをクリックするとリンク先へ飛べます。 何がいけないのでしょう? 再度ご回答いただければ助かります。 よろしくお願いします。

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.1

”クリックする”という行為は PCに ある意味で ”確認した”というサインです。 コンポボックスに表示された URLリストが ”新規データー ”であることを認識させれば・・・なんとか・・・と思います。 例えば URL のテーブルに 登録順のID番号と アクセスした 履歴を残すフィールドが あれば コンポボックスに 逆順に表示された一番目の URLが履歴が ”Null " なら URLを コンポボックスの値にして クリックした状態にする・・・・ 以上の行為を プロシージャーに設定すれば 可能です。 プロシージャーを造るのが 面倒なら・・・クリックしてして下さい。

noname#150256
質問者

お礼

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

関連するQ&A