• ベストアンサー

VBAで上下のセルを入れ替えるには?

次のようなことをしたいのですが、なかなかうまくいきません。 (1)任意のセル(例えばB2)にカーソルを置いて、 (2)マクロを実行すると、 (3)1つ下のセル((1)の例ならB3)と内容が入れ替わり、 (4)そのセル(B3)にカーソルが移動して終了。 セルの入れ替えを頻繁にする仕事をしているので、上記の動作ができるととても助かります。 いろいろ試したのですが、VBAは初心者なのでなかなかうまくいきません。 どうかよろしくお願いします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>任意のセル(例えばB2)にカーソルを置いて 一旦、Activecellの値を変数に格納して入れ替えするだけですよ Dim tmp As Variant With ActiveCell   tmp = .Value 'ActiveCellの値を変数に格納   .Value = .Offset(1).Value 'ActiveCellに下のセルの値を記述   .Offset(1).Value = tmp '下のセルに変数に格納した値を記述 End With

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

セルを入れ替えてみます。 sub macro1()  selection.offset(1).cut  selection.insert shift:=xlshiftdown  selection.offset(1).select end sub セルを入れ替えるのと内容を入れ替えるのとでは、出来ることも結果も違うので、何をしたいのかよく見て使ってください。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 Sub sample() With Selection.Resize(1, 1) a = .Value .Value = .Offset(1) .Offset(1).Value = a .Offset(1).Select End With End Sub

tsusan1964
質問者

お礼

ありがとうございました。1つの動作でもいろいろなやり方があるのですね。勉強になりました。

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.1

まず、日本語の問題! 質問文を読み返してみても、現状が書いてあるだけで質問点は何?・何が知りたいのか? "どうかよろしくお願いします。 " だけでは判らないけど。 ひょっとして、VBAを作れという 丸投げ か??? ・・・・・・・・・・・・・・・・・・・・・・・・・・   は、さておいて >いろいろ試したのですが、VBAは初心者なのでなかなかうまくいきません。 ならば、どういう事を試して、その結果何が上手くいかないのかを書いておいて方が、解決が早いと思うよ。 質問者のスキルも推測しやすいからね。 例えば、 選択したセルを切り取って、 相対的に二つ下のセルに張り付けて、 そのセルと一つ上のセルを併せて切り取り 一つ上のセルに張り付けて、 一つ下を選択する こんな動作などを、マクロの記録で作ってみればいいと思うが、どうだろう? もしかして、もう一つ条件として、"入れ替える二つのセル以外は使わない"っというのがあるのかな??

tsusan1964
質問者

お礼

アドバイスありがとうございました。 マクロの記録などを使って、それを任意のセルに応用できるようにやっていたのですが、うまくいきませんでした。これから勉強しようと思いますので、今度からうまくいかなかった部分を具体的に質問します。