[[20091005105913]] 『アクティブセルを画面中央に表示』(ビギナー) ページの最後に飛ぶ

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

 

 『アクティブセルを画面中央に表示』(ビギナー)

 お世話になります。

 (例)
 セルA1にハイパーリンクででDM1を表示するよう設定します。
 このとき、表示されたセルDM1は画面の右端あります。
 このアクティブセルを画面中央に表示させることは可能でしょうか
 (厳密に言いますと左右方向に対してのみ画面中央で上下方向には指定しません)
 Excel2003を使用しています

 もっと良いコードがあるかもしれませんが・・・
 該当シートのオブジェクトモジュールに以下をコピペでいかがでしょうか?

  Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  Dim r As Range, i As Long
  If Target.Range.Address(0, 0) = "A1" Then
    With ActiveWindow
      Set r = .ActiveCell
      For i = 0 To 256
        DoEvents
        a = r.Left - .Width / 2 + .Left
        If r.Offset(, -(i + 1)).Left < r.Left - .Width / 2 + .Left Then
          .ScrollColumn = r.Column - i
          Exit For
        End If
      Next i
    End With
  End If
  End Sub

 (momo)

 momo様

 早速の回答ありがとうございます。
 コピペして試しましたところ
 A1からDM1の表示はアクティブセルは中央になりましたが
 他のハイパーリンクでは全くだめでした。

 ハイパーリンクは他にもたくさんありますが
 中央に表示させたいセルは以下の31個になります。
 説明不足ですみません

 C10・K10・S10・AA10・AI10・AQ10・AY10・BG10・BO10・BW10
 CE10・CM10・CV10・DC10・DK10・DS10・EA10・EI10・EQ10・EY10
 FG10・FO10・FW10・GE10・GM10・GV10・HC10・HK10・HS10・IA10・II10

 ハイパーリンクで移動させたとき上のセルは画面中央に表示するよう
 再度、お願いします。

 (ビギナー)


 1列ごとの幅を得るのが面倒ですね。
 ウインドウサイズによっても違いますし。
 簡単に下のような感じでも大丈夫ですか?

  Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  With ActiveWindow
    x = Int(ActiveCell.Column - .Width / ActiveCell.Width / 2)
    x = IIf(x <= 0, 1, x)
    .ScrollColumn = x
  End With
  End Sub

 (momo)

  momo様

 ありがとうございます。
 お見事!!
 思い通りの動きができました。
 特に列の幅には影響ないようです。

 また、機会がありましたら
 よろしくご指導お願いします。

 (ビギナー)

コメント返信:

[ 一覧(最新更新順) ]


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