• ベストアンサー

コピペして元のセルに戻るVBAについて

VBAのことで質問させていただきます。 エクセルのバージョンは2010です。 3行目から100行目までの間にカーソルがあった場合、その行のA列に異動し、 その値をコピーし、A2のセルに貼りつけ、コピーしたセルに戻る、というVBAを 作れたらと思っているですが、可能でしょうか? VBAは本を読んでかじったりはしているのですが、自分では組めないんです。 狩野であれば、どなたかよろしくお願いいたします。

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

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

あなたがヤリタイ事: >3行目から100行目までの間にカーソルがあった場合、その行のA列に異動し、 >その値をコピーし、A2のセルに貼りつけ、コピーしたセルに戻る、 ヤリタイ事の整理: 1:3行目から100行目までの間にカーソルがあった場合 2:その行のA列に異動し、… コピーしたセルに戻る、 3:その値をコピーし、A2のセルに貼りつけ 回答したマクロ: sub macro2()  if activecell.row < 3 or activecell.row > 100 then exit sub ’←1を実施  cells(activecell.row, "A").select  ’←2を実施  range("A2").value = activecell.value  ’←3を実施 end sub という意味づけになります。

schuler
質問者

お礼

丁寧に教えていただきありがとうございます。 理解できました。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.2です。 >また、ダブルクリックしなくても(ワンクリックでカーソルをセルに合わせただけでも)、 とありましたので・・・ 本来ですと、間違ったセルを選択してもマクロが走ってしまいますので、 前回、ダブルクリックの方法を提案したのですが、 シングルクリックでやりたい場合の一例です。 シートモジュールですので、画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてセルを選択してみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から With Target If .Row >= 3 And .Row <= 100 Then Cells(.Row, "A").Copy Range("A2") Cells(.Row, "A").Select End If End With End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

schuler
質問者

お礼

親切に丁寧な回答をしていただき、ありがとうございます。 インターネットで調べたら、だいたい意味がわかった気がします。 (自分では到底組めなさそうですが) 勉強になりました。

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

ん? >コピーしたセルに戻る とは「コピーしたときに選ばれていたセル」に戻る,という意味じゃなかったんですか。 まぁでも、単にセルを選ぶ命令を追加するだけですが。 sub macro2()  if activecell.row < 3 or activecell.row > 100 then exit sub  cells(activecell.row, "A").select  range("A2").value = activecell.value end sub

schuler
質問者

お礼

再度、お答えいただき、ありがとうございます。 ただ、「range("A2").value = activecell.value」の部分が理解できなかったのですが、 教えていただけると幸いです。 よろしくお願いします。

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

sub macro1()  if activecell.row < 3 then exit sub  range("A2").value = cells(activecell.row, "A").value end sub とかでいいです。

schuler
質問者

お礼

ありがとうございます。 しかし、実行してみたのですが、A2にコピペした後、 最初のセルのあった行のA列にカーソルが移動してくれません。 ご教授していただけるとありがたいです。 よろしくお願いいたします。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! こういうコトですかね? ダブルクリックでの方法としています。 シートモジュールです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Row >= 3 And .Row <= 100 Then Cancel = True Cells(.Row, "A").Copy Range("A2") Cells(.Row, "A").Select End If End With End Sub 適当なセルでダブルクリックしてみてください。m(_ _)m

schuler
質問者

お礼

ありがとうございます。 書いていただいたプログラムをシートのモジュールに貼り付けたのですが、 なぜか起動しません。(というか、開発タブ→マクロで表示されません) また、ダブルクリックしなくても(ワンクリックでカーソルをセルに合わせただけでも)、 起動するようなマクロはできないでしょうか。 何度も申し訳ありませんが、ご教授いただけると幸いです。

  • denbee
  • ベストアンサー率28% (192/671)
回答No.1

可能です。 マクロの記録機能を使ってその操作を行えば、質問者が必要としているコードが記録されます。

schuler
質問者

お礼

自動記録では無理だと思います。