プロが教える店舗&オフィスのセキュリティ対策術

VBA コピーモード中の左上隅セルを、画面の左上の位置にスクロールしたい!


Windows XP Home Edition
SP3
Office XP Personal 2002
Excel 2002

「 現在、コピーモード中になってる左上隅セル ( A20 ) 」 の 「 3つ上のセル ( A17 ) 」を
Window画面の左上の位置に、スクロールしたいのですが、どおすればよろしいでしょうか?

何卒、ご教示のほどをお願い致します。

Sub スクロール()
 Range(A20:B30).Copy
 Application.Goto reference:=ActiveWindow.Range(VisibleRange.Item(1).Address), Scroll:=True
End Sub

A 回答 (1件)

Gotoメソッドが出てますので、もっと単純に考えましょう。



Goto(移動先,スクロールの有無)

ですが、移動先はRangeオブジェクトでもかまいません。ですので、OffsetプロパティーとWithステートメントを追加すると以下のような構文で解決可能です。

With [コピー範囲]
 .Copy
 Application.Goto .Cells(1).Offset(-3,0), True
End With

[コピー範囲]は任意のRangeオブジェクトにしてくださいね。質問文の場合だと
With Range("A20:B30")
になります。


キーポイントは.Cells(1)と.Offset(-3,0)になります。
.Cells(1)というのはWithで指定したセル範囲の左上のRangeオブジェトを返すものです。
.Offset(-3,0)は指定したセルから指定したセル移動した先のRangeオブジェクトを返すものです。
Offset(行移動数,列移動数)と指定します。今回は上に3個なので(-3,0)です。

Offsetプロパティーは良く使うので覚えておくとすごく役に立つでしょう。
    • good
    • 0
この回答へのお礼

早速のご回答、ご詳細、誠に有難うございました。
Goto(移動先,スクロールの有無)
が、よく理解できてませんでした。

お礼日時:2010/06/04 22:33

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