• ベストアンサー
  • すぐに回答を!

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

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数490
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.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プロパティーは良く使うので覚えておくとすごく役に立つでしょう。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • VBA 現在コピーモード中のセルだけを、再度コピーモードにするには?

    VBA 現在コピーモード中のセルだけを、再度コピーモードにするには? Windows XP Home Edition SP3 Office XP Personal 2002 Excel 2002 下記コード実行で、Offset(-3, 0) が選択されてしまいます。 実行後、下記の Offset(-3, 0) の選択をなくして、 再度 (A20:B30) だけを コピーモードにしたいのですが、うまくいきません。 Offset(-3, 0) の選択はどのようにすればなくなりますか。 Offset(-3, 0) が選択されておりますと、次の作業の、他の別のVBAがうまく動作しないのでございます! Set r = Selection などを使用すればよいのでしょうか? 何卒、ご教示のほどをお願い致します。 Sub 再度コピーモードに()   Range(A20:B30).Copy    Application.Goto Selection.Cells(1).Offset(-3, 0), True   CopyMode.Cells.Copy '←ここの編集がわかりません End Sub

  • 行の指定文字位置へ画面をスクロール

    下記のVBAコードでボタンクリックにより列そのまま行10を先頭画面へスクロールできたのですが作業上範囲内に行挿入項目(表ー2)が発生してきました。 このコードでは2行挿入したため行10の"梅田"が先頭と変わってしまいます。 表ー3のように都度行挿入後も"江藤"を先頭行にもってきたいため、 コードCells(10, ActiveWindow.ScrollColumn)の行部分を指定文字"江藤"を代入してコードを構成したいのですが? どなたか解る方よろしくお願いします。 Sub 移動1() Application.Goto reference:=Worksheets("sheet1").Cells(10, ActiveWindow.ScrollColumn), Scroll:=True End Sub

  • 複数のコマンドボタン(VBAで)を一つにまとめたい。

    複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?

  • エクセルVBAでコピーして 手動で貼り付け 

    こん○○は 初心者であちこちからコードをコピペしてなんとかつなぎ合わせているレベルです。 エクセル2002 OS XP Sub copy() i = Worksheets(3).Range("I2")      'I2に適当な数字が入ってる i = i + 1 左上 = "G1" '選択する範囲の左上セル 右下 = "H" & i '   〃   右下セル 範囲 = 左上 & ":" & 右下 Worksheets(3).Range(範囲).copy_ Worksheets(3).Range("n1").PasteSpecial Paste:=xlPasteValues i = (i + 1) / 2 左上2 = "N1" 右下2 = "O" & i 範囲2 = 左上2 & ":" & 右下2 Worksheets(3).Range(範囲2).copy End Sub というコードでコピーした状態にした後手動で他のエクセルやテキストに貼り付けようとしています。ただしシート3は Private Sub auto_Open() ActiveWorkbook.Unprotect Worksheets("Sheet1").Visible = False Worksheets("Sheet3").Visible = False ActiveWorkbook.Protect End Sub でみえなくしています。 こうすると他のエクセルに貼り付けると 貼り付け先のシートが消えてしまいます。消えないようにしたいのですが。 なんとかお知恵を拝借できませんでしょうか?よろしくお願いします。

  • VBA セル範囲コピー 図形のみ

    現在下記コードで指定のセル範囲のコピーをしています。 B4セルからI33セル範囲内にはjpg画像ファイルと そのjpgファイルに印をする為、図形の円があります。 円は複数ありjpgファイルに重なっています。 今回行いたのは、B4セルからI33セルをコピーして J4、R4セルに貼り付ける際に jpgファイルは貼り付けないで、図形の円のみを貼り付けしたいです。 宜しくお願いします。 Sub セルコピー() Range("B4:I33").Select Range("I33").Activate Selection.Copy Range("J4").Select ActiveSheet.Paste Range("R4").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub

  • スクロール位置を中央にしたい

    こんにちは。質問させてください。 クリックした位置に画面がスクロールするものを作っています。 今の状態だとクリックした位置にスクロールするのですが ストップする位置が画面の左上で止まります。 これを画面の中央で止まるようにしたいのです。 ヒントをいただけませんでしょうか。宜しくお願い致します。 // 現在のスクロール量を取得 function getScroll(){ var x, y; if(document.all !== void 0){ // IE4, IE5, IE6 x = document.body.scrollLeft; y = document.body.scrollTop; }else if(document.layers !== void 0 || (navigator.userAgent.indexOf("Opera") != -1 || window.opera !== void 0)){ // NN4, Opera6 x = window.pageXOffset; y = window.pageYOffset; }else if(navigator.userAgent.indexOf("Gecko") != -1){ // NS6, Mozilla x = window.scrollX; y = window.scrollY; }else{ x = y = 0; } return {x: x, y: y}; } // スクロール始めのスクロール量 var SCROLL ; var divCountScroller = 50 ; // 分割数 // 現在のスクロール位置から、指定座標までスクロールします function scroller( x, y, count ){ if( count === void 0 ){ count = 0 ; SCROLL = getScroll(); } if( count++ < divCountScroller ){ var c = count/divCountScroller ; var nx = SCROLL.x+( x-SCROLL.x )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); var ny = SCROLL.y+( y-SCROLL.y )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); window.scrollTo( nx, ny ); setTimeout( "scroller("+x+","+y+","+count+");", 30 ); } }

  • Excelマクロについて(セルのコピー)

    今、マクロで自動的にセルのデータを別シートに貼り付けるというものを作っています。 Private Sub コピー定義() Worksheets("sheet1").Activate 'sheet1をアクティブにする コピー元行 = 2 コピー先行 = 1 コピー元セル = "A" & コピー元行 コピー先セル = "A" & コピー先行 Worksheets("sheet1").Range(コピー元セル).Copy _ Destination:=Worksheets("sheet2").Range(コピー先セル) End Sub これで、sheet1のA2からsheet2のA1にコピーできるのですが、 Private Sub コピー定義() Worksheets("sheet1").Activate 'sheet1をアクティブにする コピー元行 = 2 コピー先行 = 1 コピー元行 = 2 コピー先行 = 1 コピー元セル = "A" & コピー元行 コピー先セル = "A" & コピー先行 コピー元セル = "B" & コピー元行 コピー先セル = "B" & コピー先行 Worksheets("sheet1").Range(コピー元セル).Copy _ Destination:=Worksheets("sheet2").Range(コピー先セル) End Sub とすると、B2の項目しかコピーされません。複数のセルを一度にコピーするマクロの作り方をご存じの方、ご伝授下さい。

  • マクロ セルコピーを指定範囲先に張り付ける

    セルコピーを指定範囲先に張り付けループさせるマクロを作成したいと 思います。 調べたところ以下のように指定範囲をコピーしてセルに貼り付けは できるみたいですが、指定範囲先に貼り付けができません。 Sub CopyCell() Range(Cells(1,2),Cells(3,4)).Copy Destination:=Cells(5,6) End Sub   ↓ 最終的に以下のように実行を考えています。 Dim p As Integer For p = 1 To 10 Range(5,6).Copy Destination:=Range(Cells(10*p+2,2),Cells(10*p+15,4)) Next p セル値を等間隔に連続して貼り付けは可能でしょうか? よろしくお願いします。

  • 行はそのままで列のみをVBAコードで移動

    アクティブセルがどの位置にあってもウインドウの行が変わらず列のみを移動できるでしょうか? ちなみに下記コードではアクティブセルが行(2~20)にある場合、列と同時に行も上に移動します。 どなたかコードが解る方、宜しくお願いします。 Sub 列移動() Application.Goto reference:=Worksheets("sheet1").Range("E" & ActiveCell.Row), Scroll:=True End Sub

  • エクセルVBAでコピーすると行の高さが低くなる

    いつもお世話になってます。 エクセル2003のVBAで、セルの範囲を指定してコピーすると行の高さが低くなってしまいます。その他の書式は、変化せずうまくコピーできています。以下がプログラムです。 Sub copy_hyou() Worksheets("sheet1").Activate Range("A1:K24").Copy 'セルA1からK24をコピーします。 Range("A25").Select 'A25からペイストします。 ActiveSheet.Paste End Sub どう直せば、行の高さもコピーできるでしょうか? お休み中すみませんがよろしくお願いいたします。