- 締切済み
ハイパーリンクのイベント挙動について
Excel2007でのハイパーリンクをクリックした際に発生するイベントについてお伺いさせてください。 Excelでハイパーリンクのイベントを用いてやりたいことがあったのですが、どうしてもWorkbook_SheetFollowHyperlinkでの動作がうまくいかないため、以下の処理を試みてみました。 Private Sub Workbook_SheetFollowHyperlink (ByVal Sh As Object, ByVal Target As Hyperlink) Worksheets("sheet1").Cells(1, 1).Value = 5 End Sub ところが、ハイパーリンクをクリックしてもsheet1のセルA1には代入は行われず、ただリンク先のセルへ飛ぶだけの処理となってしまいます。 以上を踏まえた上で以下の2点について質問させてください。 ・Workbook_SheetFollowHyperlinkはブック内のハイパーリンクをクリックしたときに呼び出されるという認識に間違いがあるのでしょうか。 ・上記のようにハイパーリンクをクリックした際に指定したセルへ適当な数値を代入するにはどうすればよいのでしょうか。 わかりにくい文章で申し訳ありませんが、ご教授の程よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- DreamyCat
- ベストアンサー率56% (295/524)
原因は??です。 Vista 、Excel2007で同じBookのシート3のセルにハイパーリンクを設定しておいて上記を実行してみましたが、問題なく5が代入されます。(元の文字と表示が変わるだけでハイパーリンクは元のまま維持されます。)
- keithin
- ベストアンサー率66% (5278/7941)
マクロ自体には特に間違いの要因は見あたりません。 そのマクロや,あるいは今回はわざわざWorkbook_SheetFollowHyperlinkを利用していますが,ふつーにシートのイベントを使う事でもご質問でやりたかった事は実現出来ます 考えられる原因その1:シートを間違えている Workbookのイベントを使おうとしているので,VBE画面のプロジェクトエクスプローラで当該のブックのVBAProjectに含まれるThisWorkbookをWクリックして現れたシートに記入する必要があります。 考えられる原因ソノ2:単純にマクロが無効になっている セキュリティセンターでマクロを有効にする設定にしてエクセルを再起動します。 また「以前使えたマクロ」が問題なく実行できるか念のため確認します。 ご相談ではホントの所何をしたいのかは書かれていません(必要に応じて改めてヤリタイ事を文章にして,別のご相談で,ご質問を投稿なさってみてください)が,ThisWorkbookにブックのイベントとしてたとえば private sub Workbook_SheetFollowHyperlink(byval Sh as object, byval Target as hyperlink) target.range.offset(0,1) = "go" end sub などのように書いておけば,個々の(クリックした)ハイパーリンクのセルを基点にメモを記入するような仕込みもできます。
補足
考えられる要因の2点ですが、実際にOpenやSheetChangeを使用して同様の記述をすると問題なく処理が行われています。 同様の処理をハイパーリンクイベントにも入れているのですが(コピペしてるので間違いはないはずです。。。)、ハイパーリンクをクリックしても処理が行われないのです。
補足
環境の問題かと思い別OSなどでなってみたのですが、結果が一緒でした。 もしかしたらマクロの記述場所が間違っているのでしょうか。 Alt+F11>ThisWorkbookをダブルクリック>左プルダウンからWorkbookを選択>右プルダウンからSheetFollowHyperlinkを選択>中に処理を記述 この流れで間違ってはいないとは思うのですが、何かおかしな点ありましたらご指摘お願いします。