[[20060328161655]] 『ハイパーリンク時画面中央に表示したい』(智恵蔵) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ハイパーリンク時画面中央に表示したい』(智恵蔵)

Excel2000でハイパーリンクを貼った住所録から別シートの図面に飛ばしたいのですが、大体画面の隅にリンク先が表示されてしまいます。
参照先のセルをアクティブ表示?(セルに薄い色が付いているように見える)させたいので、選択範囲を大きく取出来画面左上に表示させる「ScrollColumn」や「ScrollRow」などはあるけど中央というのは見つけられませんでした。
分りやすく教えてください。


こんな感じでどうでしょうか?

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2006/3/28 ユーザー名 : wkj
'

'ハイパーリンクのセルを選択

    Range("B8").Select
'ハイパーリンクをクリック
    にする
    Range("E8").Select

End Sub

上記のToRightの値とDownの値を、画像に応じて変更して頂ければ、中央に表示可能ではないかと思います。 wkj


『』(智恵蔵です。)
 wkjさんありがとうございます。

初歩的な質問からさせて下さい。なんせコードなんて書いたこと無いもので…
まずシートが2枚あって、「住所録」シートから「図面」シートの、とあるセル部分に
リンクを貼っております。(数としたら300以上)
この「住所録」のシートタブを右クリックしてコードを出して、そこに教えていただいたように書き込めば良いのですよね??

>'ハイパーリンクのセルを選択

   Range("B8").Select  

↑の()内には「住所録」側のリンクを貼っているセル番を入れれば良いのでしょうか?

>'ハイパーリンクをクリック

    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

↑Selection.Hyperlinks(1). の()内に飛び先の「Sheet1」を入れるのですか?
一応教えていただいた通りに書き込んだところ、コンパイルエラーが出てしまいました。Selection.Hyperlinks(1).Follow NewWindow:=False,←ここが「行番号または行ラベルまたはステートメントまたはステートメントの最後」全く何を入れてよいやら分りません。。。

>'飛び先のシートのセルをアクティブにする

    Range("E8").Select

↑()内にハイパーリンクで飛んだ後のアクティブにしたいセル番を入れれば良いのでしょうか?リンクを貼ったシートとは別の「図面」シートなのですが、その指示は盛り込まなくても大丈夫なのでしょうか?

質問の仕方もトンチンカンで解りづらいとは思いますが、宜しくお願いします。
面倒だとは思いますが、解りやすく説明してください。


 ↓をよく読みましょう。他人の書込みを消してはいぃけません。
 初めての肩へ
http://www.excel.studio-kazu.jp/wiki/excelboard/
 (MARBIN)


 コメント欄新設後の「初めての方へ」には
 旧版にあった「枠の中身(=既存の書き込み)を消さないようにしてください」の
 一文がなくなっているようですね(庸)

 #注意書きのあるなしに関わらず、ひとさまの書き込みを消すというのが問題ですが。
 #ってか、消したら会話が見えなくなるでしょーっ!!


 【マクロ(VBA)の記述】
 >この「住所録」のシートタブを右クリックしてコードを出して、そこに教えていただいたように書き込めば良いのですよね??
 その通りですが、ウインドウが2つ開いてると思いますので、”Module1(コード)”
と表示されている方に、マクロを貼り付けて下さい。

 また、念のためですが、マクロを実行する際には、ツール→マクロ(M)→マクロ(M)を選択し、
表示されたウインドウで、実行するマクロを選択して、実行ボタンを押して下さい。
(ボタンを作ってマクロを貼り付けられるとは思いますが、一応念のため)

 【ご質問への回答】
 >Range("B8").Select  
 >↑の()内には「住所録」側のリンクを貼っているセル番を入れれば良いのでしょうか?
 その通りです。該当のセル番を入れて下さい。

 >'ハイパーリンクをクリック 
 >Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
 このままで、変更しなくても動くはずなのですが・・・。コメントが動作不正の原因とも
考えられますので、VBAのコメントを全て削除して実行して頂けませんでしょうか。

 >'飛び先のシートのセルをアクティブにする 
 >Range("E8").Select
 ハイパーリングで該当のシートにジャンプしますので、「図面」シートがアクティブになっているはずです。
 そのため、ここでは「図面」シート内でアクティブにしたいセル番だけを指定します。

 上手く行かなければ、お手数ですが再度ご連絡お願いします。  (wkj)

 蛇足ですが、上記の方法だとハイパーリンクの数だけマクロを作成する必要が出てきます。
あるセルに、セル番を入力させて移動させる方がスマートです。

 【変更前】
    Range("B8").Select
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

 【変更後:セル番を入力するセルを"D2"とします】
    Dim myRange As Range
    Set myRange = Worksheets("住所録").Range("D2")
    Range(myRange).Select
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

 上記のようにすると、住所録が追加・削除されても、マクロの修正は不要となります。
 ※飛び先の「図面」シートのセルは、ハイパーリンクで指定していれば、
ジャンプした時点でアクティブになっています。

メールの返信のように引用しただけだったのですが…いけなかったんですか×××  
すみません。  
wkjさんの言われるとおりに試してみます。

 良いとか悪いとかじゃなくて、他にも同じ事で困ってる人が居たら、ログを見れば
分かるのでそれだけ助かるって事なのです。
 消しちゃうと、話が分からないので、他の人がしたのと同じ質問をしないといけない
かも知れませんよね。
 それに、残しておくと、一人だけじゃなくて、色んな人のアドバイスが受けられるので
回答者も参考になる事が多いのです。

 失敗は誰にでもありますから、これに懲りずに投稿して下さいね。 (wkj)

wkjさんの言われたとおりに貼り付けたところ、マクロの実行で上手くいきましたが、数が多いので大変…
そこでもうひとつ教えて頂いた【変更後:〜】の方を試したところ、
 Range(myRange).Select←ここが「中断モードでコードを実行することはできません」なるメッセージが・・・

  Range("B8").Select
   Selection.Hyperlinks(1).Follow False, AddHistory:=True
の代わりにに
  Dim myRange As Range
    Set myRange = Worksheets("住所録").Range("D2")
    Range(myRange).Select
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
を入れるのですよね?やり方を間違えてますか?

ハイパーリンクの数だけマクロの設定をしないでも、1つの定義で全てのハイパーリンクの参照先のセルを画面中央にもってくるという都合の良いやり方は無理なのでしょうか。 
何も解らないのに無理な注文ばかりすみませんが、懲りずに教えてください。


 「中断モードでコードを実行することはできません」と言うメッセージは、マクロが
エラーとなって、中断された状態であるのに、再度、マクロを実行しようとした場合に
発生します。

 多分ですが、入力したセル番にハイパーリングが貼られていなかったものと推測します。
 ハイパーリンクが未設定のセル番を指定された場合に、処理を何もしなようにさせれば良いと思います。

 【指定したセルにハイパーリンクがない場合を考慮したマクロ】
 Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2006/4/3  ユーザー名 : XP
'
    'D2にセルの番号を入力させ、Rangeとして設定する
    Dim myRange As Range
    Set myRange = Worksheets("住所録").Range("D2")
    Range(myRange).Select

    'ハイパーリンクにより、シートを移動
    'エラー発生時には、処理をさせずに終了する
    On Error GoTo SHURYO:
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
    ActiveWindow.SmallScroll 2
    ActiveWindow.SmallScroll Down:=6

 SHURYO:

 '
 End Sub

 On Error GoTo文でエラーが発生した場合に、ハイパーリンクでの移動をさせずに、処理を終了させます。
 これでもまだ上手く行かない場合には、お手数ですが再度書き込みお願いします。 (wkj)


 ご無沙汰しております。智恵蔵です。 
wkjさんに教えて頂いた上記のコードをそのまま貼り付けたのですが、

  実行時エラー ´1004´
´Range´メソッドに失敗しましたオブジェクト

がRange(myRange).Selectのところに出てしまいます。
ハイパーリンクを設定したセルの番号を
Set myRange = Worksheets("住所録").Range("D2")
の("D2")に入れているのですが・・・
それと、一番最初に教えて頂いたマクロなんですが、同じものを実行しても画面の位置がまちまちなんです。
スクロールで指定した行・列通りではない、端の方に表示されることもあって・・・
何故なんでしょうか?


>実行時エラー ´1004´ ´Range´メソッドに失敗しましたオブジェクト

http://support.microsoft.com/default.aspx?scid=kb;ja;213540

 上記現象が該当するなら、マクロの登録されている場所が、VBAPeojectの下の
標準モジュールの下のModule1ではない可能性が考えられます。
お手数ですが、マクロの登録されている場所を確認お願いします。

>画面の位置がまちまちなんです

 可能性としてですが、ハイパーリンクで指定されているセルがまちまちなのではありませんか?
スクロールはハイパーリンクされたセル位置を基点にして実行されますので、指定しているセル番を確認お願いします。  (wkj)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.