• ベストアンサー

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

Sub test()  Dim r1 As Range  Set r1 = Range(ActiveCell.Address)   On Error GoTo er:    For i = 0 To r1.End(xlToRight).Column - r1.Column    ActiveCell.Offset(-i, 0) = ActiveCell.Offset(0, i).Value    Next i   er: End Sub 上記のマクロを実行すると、以下のように横に入力されているものが縦にコピーされます。 A SS DDD FF GGG   ↓ ↓ ↓ ↓ GGG FF DDD SS A SS DDD FF GGG これを、コピーではなくカット&ペーストに変更するにはどうすればいいでしょうか?

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

next の前に If i <> 0 Then ActiveCell.Offset(0, i).ClearContents を 入れるとか

kayonon
質問者

お礼

うまくいきました。 有難うございました。

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

その他の回答 (2)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

こんばんは。 >これを、コピーではなくカット&ペーストに変更するにはどうすればいいでしょうか? 提示のコードは一般的に言うコピーではなく、値の代入ですね。 ですから、カット&ペーストも一般的なそれではなく、ただ代入元を消すということですよね。   No.1さんの回答と99%同じですが、質問のコードをちょと変えています ------------------------------------------ Sub Test()  Dim i As Integer  On Error GoTo Er:  With ActiveCell    For i = 1 To .End(xlToRight).Column - .Column      .Offset(-i, 0).Value = .Offset(0, i).Value      .Offset(0, i).ClearContents    Next i  End With Er: End Sub -------------------------------------------- 以上です。

kayonon
質問者

お礼

有難うございました。

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

A1:F1に a b c d e f Sub test() Dim r1 As Range Set r1 = ActiveCell On Error GoTo er: r = ActiveCell.Row C = r1.End(xlToRight).Column - r1.Column + 1 For i = C To 1 Step -1 Cells(r, i).Cut Cells(r + 1 + (C + 1) - i, 1).Select ActiveSheet.Paste Next i er: End Sub 結果A3:A8 f e d c b a スタートをA2にすることも Cells(r + 1 + C - i, 1).Select にすればよい。

kayonon
質問者

お礼

有難うございました。

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

関連するQ&A