• 締切済み

相対セルの範囲指定?

現在選択しているセルから右に2つ分範囲指定して、それをコピー 左に2つ下に1つ移動してペースト セルの名称が(A1)のように決まっていればいいのですが、 場所が不確定の為に、自分で基準のセルを指定してからマクロ実行しようと考えてます。 基準セルを自分で選択後に上記のようなことをすることができるのでしょうか?

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

Do ActiveCell.Range("A1:B1").Select Selection.Cut Destination:=ActiveCell.Offset(1, -2).Range("A1:B1") ActiveCell.Offset(1, -2).Range("A1:B1").Select ActiveCell.Offset(0, -48).Range("A1:S1").Select Selection.Cut Destination:=ActiveCell.Offset(0, 50).Range("A1:S1") ActiveCell.Offset(-1, 48).Range("A1").Select Selection.EntireRow.Delete ActiveCell.Offset(0, 2).Range("A1").Select If Selection.Offset(1).Value = "" Then Exit Do 'ループを抜ける Selection.End(xlDown).Select Loop

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 少し、口を挟ませていただきます。ご質問者さんの、その説明ではうまく伝わっていないように思います。 >そのまま下に1つ移動し、左へ50セルを移動します。 >移動後右へ40範囲指定し、切り取ります。 >そして、右へ50移動し貼り付けをします。 これでは、ActiveCell が、AY列になければ、エラーが出るのは当然なのです。 例えば、質問する場合は、  A1 にセルがあって、それを、A2に下り、そこから、AX3 までの範囲を取り、Copy して、それを、A10 から AX11 まで貼り付ける、 というようにします。 マクロの行だけを教えてもらって、貼り付けるようなことを考えても、多くは失敗してしまいます。 A1 に、元のセルがあったら、どことどこの範囲を囲むという説明しないと分からないのです。相対参照とはいっても、最初の基点が、ActiveCell などという、相対参照のマクロというのは、一般的には作りません。どこの場所にあっても、同じ動作をするマクロというのは作りません。 どこの列を基点としてとか、どこの行を基点として、どういう動作をさせるということでなければならないのです。 もちろん、この程度のものは、相対参照でも、記録マクロで可能です。記録マクロの設定を、相対参照に換えればよいのです。

kikakubute
質問者

補足

相対参照に切り替えたらできるようになりました。 ActiveCell.Range("A1:B1").Select Selection.Cut Destination:=ActiveCell.Offset(1, -2).Range("A1:B1") ActiveCell.Offset(1, -2).Range("A1:B1").Select ActiveWindow.SmallScroll ToRight:=-41 ActiveCell.Offset(0, -48).Range("A1:S1").Select ActiveWindow.SmallScroll ToRight:=-4 Selection.Cut Destination:=ActiveCell.Offset(0, 50).Range("A1:S1") ActiveCell.Offset(-1, 48).Range("A1").Select Selection.EntireRow.Delete ActiveCell.Offset(0, 2).Range("A1").Select Selection.End(xlDown).Select というのを Selection.End(xlDown).Select ができなくなるまで繰り返しするというのを指定することはできますか?

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

>現在選択しているセルから右に2つ分範囲指定して、それを切り取り >左に2つ下に1つ移動してペースト >そのまま下に1つ移動し、左へ50セルを移動します。 >移動後右へ40範囲指定し、切り取ります。 >そして、右へ50移動し貼り付けをします 具体的に列が決まっているなら、行・列のサンプルを提示してもらえますか?

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

>r.Offset(1,-50).Resize(,40).Cut r.Offset(,50) r.Offset(1,-50).Resize(,40).Cut r.Offset(1) ですか。

kikakubute
質問者

補足

やはりできません。 何度もすいません。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

>そのまま下に1つ移動し、左へ50セルを移動します。 >移動後右へ40範囲指定し、切り取ります。 >そして、右へ50移動し貼り付けをします 貼り付けた位置から、更に移動なら。 Sub test2() Dim r As Range If ActiveCell.Column < 3 Then Exit Sub Set r = ActiveCell.Resize(, 2) r.Cut r.Offset(1, -2) r.Offset(1,-50).Resize(,40).Cut r.Offset(,50) Application.CutCopyMode = False End Sub でしょうか? >参考図書はVBA関係の図書を参考にすればいいのでしょうか? 私はプラス色んなサイトで色んなQ&Aを見て勉強してます。

kikakubute
質問者

補足

r.Offset(1,-50).Resize(,40).Cut r.Offset(,50) ここでなぜかデバックを要求されます。 AY列からA列までは50なので問題ないと思うのですが、なぜでしょう><

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>2つ分範囲指定して、それを切り取りです。 では、こちら。 Sub test() Dim r As Range If ActiveCell.Column < 3 Then Exit Sub Set r = ActiveCell.Resize(, 2) r.Cut r.Offset(1, -2) Application.CutCopyMode = False End Sub

kikakubute
質問者

補足

ありがとうございます。 現在実行できました。 そのまま下に1つ移動し、左へ50セルを移動します。 移動後右へ40範囲指定し、切り取ります。 そして、右へ50移動し貼り付けをします。 自分自身でやれればいいのですが、言語の意味がわかりません。 教えて下さい。 自分自身でもできるようになりたいのですが、参考図書はVBA関係の図書を参考にすればいいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

このような事でしょうか? Sub test() Dim r As Range If ActiveCell.Column < 3 Then Exit Sub Set r = ActiveCell.Resize(, 2) r.Copy r.Offset(1, -2).PasteSpecial Application.CutCopyMode = False End Sub

kikakubute
質問者

補足

ただ今実行しました。 説明が間違っていました。 2つ分範囲指定して、それをコピー ではなく、 2つ分範囲指定して、それを切り取りです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロのセルの範囲指定

    お世話になります。マクロ初心者です。エクセルの業務でマクロを作成しようとしているのですが、マクロ実行で、セルの範囲が指定される方法はありますか?例えば シート名  開始  終了  Sheet1   A1  D10 を入力して、ボタンを押したらA1からD10までのセルが選択されることです。説明不足ですみません。宜しくお願いします。

  • Excelのマクロ 指定した範囲のセルの処理方法

    Excel2000のマクロを使って以下のマクロを作っています。 ■指定した範囲のセルの値が80以上だったら色をつける そこで質問なのですが、 range("","").select でセルの範囲を指定して、そこから選択したセルだけを対象に処理を実行するにはどうしたらいいのか方法がわかりません。どうすればいいでしょうか? どなたかご解答よろしくお願いします。

  • 特定セルから29右までを範囲選択→切り取り→

    特定セルから29右までを範囲選択→切り取り→50個右に移動して貼り付け 毎回A列が先頭にあるのですが、どこのA列になるかは、データによってまちまちになってしまうため、自分自身でそこを選択してからマクロ実行をしようと考えてます。

  • セルの指定範囲について

    Word2000でビジネス文書(点数分布グラフ)作成の練習をしています。 表は項目が左から、『点数』『人数を*で表すグラフ』『人数を示す数字』と三項目にわかれています。 まずはじめに表の挿入で『3列×5行』の表を作成、文字や数値を入力します。 その次に*が多くて2行に渡っているものがあるので、*が1行に収まるように、2行に渡っている行のみ『セルを範囲指定』して、右側の縦線をドラッグする、と解説にあるのですが、どのようにして『範囲指定したセルの縦線のみを移動』させるかわかりません。 2行にわたっている列を反転させて、右クリック、自動調整、文字列の幅に合わせるをクリックしてみましたが、全ての文字列が一斉に移動してしまい、それぞれの点数にあわせた棒グラフを作成できません。 ●『範囲指定したセルの縦線のみを、点数分だけ移動させる』というのはどうすればできるのでしょうか? ご存知の方、アドバイスください! よろしくお願いいたします。

  • マクロが実行されるセル範囲の変更を簡素化したい

    excel 2016を使っています。 例えば、ボタンを押すと指定したセルA1~A10までに入力されている数値を昇順に並べ替えるマクロがあるとします。 この数値が入力されているセルA1~A10の範囲をドラックして、D1~D10の位置に移動すると、マクロが実行される範囲を新たにD1~D10に指定しないとならないのですが、マクロが実行される範囲をA1~A10の範囲に固定して、別の場所に移動してもマクロを修正しなくても良い方法はありますか。

  • Excel2000:マクロのセル範囲の変更方法について

    マクロの自動記録でセルを範囲指定しグラフを作成したので、VisualBasicEditorで開くと、実行するセル範囲が固定されています。範囲を固定しないでマクロを実行したときに次に選択されている範囲に対して実行できるようにする方法を教えてください。VBA初心者になります。どうぞよろしくお願いいたします。

  • エクセルのマクロのセルの範囲指定

    エクセルのマクロで、うまくセルの範囲を指定できません。 例えば、 Range(Cells(5.6), Cells(8, 7)) = "AAA" と、指定した時は、F5:G8のセルにAAAという文字を代入するつもりで書いています。 ところが、マクロを実行すると、F1:G8まで、AAAの文字が代入されます。 どうしてでしょうか。 宜しくお願い致します。

  • 範囲指定したセルを1つずつ飛ばす方法

    エクセルで、例えば Range("A5:A30")と、範囲指定した場合、この間で 1つ置きにセルを把握させたい場合(A5→A7→A9。。。) どのような記述になるでしょうか? マクロを実行すると Range("A1:A30,A3,A5,A7,A9。。。").Selectとなって しまい、結局は1つずつ指定するしかないさそうなのです が、広範囲になると、これでは追いつきませんし。。。 for文のstepなどの記述の仕方ってできないんでしょうか? よろしくお願いします。

  • エクセルの複数セルへの範囲指定ができないのです。

    XP, OFFICE2007 のユーザーです。 EXCELで、複数セルに範囲指定してコピー、移動などの操作を試みると、「この操作は複数のセルに対しては実施できません」と表示され、実際に操作できません。移動などの時は、1セルずつ動かしているような次第で、大変困っております。なお、以前はこのようなことはありませんでした。修復要領を教えてください。

  • エクセルで指定セル範囲内の画像・オートシェイプ・値をマクロを使って削除したい

    エクセル2003のマクロについての質問になります。 "B2:D2,B3:F10"を指定範囲として,その中に存在する画像・オートシェイプ及び, 同範囲内のセルに入力されている値を一度に削除するマクロを教えてください。 画像・オートシェイプは指定範囲に一部でも掛かっていれば削除対象にしたいと思っています。 なお,指定範囲には罫線,結合セル,入力規則(プルダウン),マクロ登録オートシェイプ,数式が存在しますが,それらは残したままにしたいと思っています。 (マクロ登録オートシェイプと数式については,残したままにすることは困難に感じるので,無理そうならそれらは除外してお願いします。) マクロについて初心者ですので,コピーペーストでそのまま使用できる状態で回答頂けると助かりますm(__)m よろしくお願いします。

専門家に質問してみよう