• ベストアンサー

カット&ペーストのマクロ(エクセル)

Sub test1() Selection.Cut Destination:=Selection.Offset(0, -1) Selection.CurrentRegion.Select End Sub Sub test2() Selection.Cut Destination:=Selection.Offset(0, 1) Selection.CurrentRegion.Select End Sub K1:N1が選択状態になっている時にtest1を実行すると、4つのセルが一セル分だけ左に移動します。 test1を連続してもう一回実行すると二セル分だけ左に移動します。連続して3回だと三セル分です。 が、test2だと、test1と同様に実行回数分だけ全体を右に移動させることができません。どうしてでしょうか? 実行回数分だけ全体を右に移動させるには、どういった記述が必要でしょうか?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

TEST2で右に行くと、Activeセルが取り残されてしまうのでCurrentRegionが働かなくなるからです。(左ならActiveセルにかぶるから問題なし) TEST2ではActiveセルもいっしょに移動させてやればOKです。 Sub test2() Selection.Cut Destination:=Selection.Offset(0, 1) ActiveCell.Offset(0, 1).Activate ActiveCell.CurrentRegion.Select End Sub

kayonon
質問者

お礼

有難うございました。

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

その他の回答 (2)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

Sub test2() Selection.Cut Destination:=Selection.Offset(0, 1) Selection.Offset(0, 1).CurrentRegion.Select End Sub ではいかが?

kayonon
質問者

お礼

有難うございました。

すると、全ての回答が全文表示されます。
  • 11369
  • ベストアンサー率29% (20/67)
回答No.2

選択領域が右方向なので右方向の移動だと領域が拡張してしまうんですね。 次のように配列で定義すればいけるようです。 Sub Test Dim A As Range Set A = Selection Selection.Cut Destination:=Selection.Offset(0, 1) A.Select End Sub

kayonon
質問者

お礼

有難うございました。

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

関連するQ&A