質問: vba コピーモード中の左上隅セルを、画面の左上の位置にスクロールした 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
回答: 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プロパティーは良く使うので覚えておくとすごく役に立つでしょう。