こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

VBAのことで質問させていただきます。
エクセルのバージョンは2010です。

3行目から100行目までの間にカーソルがあった場合、その行のA列に異動し、
その値をコピーし、A2のセルに貼りつけ、コピーしたセルに戻る、というVBAを
作れたらと思っているですが、可能でしょうか?

VBAは本を読んでかじったりはしているのですが、自分では組めないんです。

狩野であれば、どなたかよろしくお願いいたします。

投稿日時 - 2013-12-16 22:31:42

QNo.8389219

困ってます

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

あなたがヤリタイ事:
>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

という意味づけになります。

投稿日時 - 2013-12-18 18:48:13

お礼

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

投稿日時 - 2014-01-08 09:16:04

ANo.6

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.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

投稿日時 - 2013-12-17 13:20:05

お礼

親切に丁寧な回答をしていただき、ありがとうございます。

インターネットで調べたら、だいたい意味がわかった気がします。
(自分では到底組めなさそうですが)
勉強になりました。

投稿日時 - 2013-12-18 16:16:33

ANo.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

投稿日時 - 2013-12-17 12:50:23

お礼

再度、お答えいただき、ありがとうございます。

ただ、「range("A2").value = activecell.value」の部分が理解できなかったのですが、
教えていただけると幸いです。

よろしくお願いします。

投稿日時 - 2013-12-18 16:03:24

ANo.3

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

投稿日時 - 2013-12-16 23:16:53

お礼

ありがとうございます。

しかし、実行してみたのですが、A2にコピペした後、
最初のセルのあった行のA列にカーソルが移動してくれません。

ご教授していただけるとありがたいです。
よろしくお願いいたします。

投稿日時 - 2013-12-17 10:18:56

ANo.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

投稿日時 - 2013-12-16 23:13:12

お礼

ありがとうございます。

書いていただいたプログラムをシートのモジュールに貼り付けたのですが、
なぜか起動しません。(というか、開発タブ→マクロで表示されません)

また、ダブルクリックしなくても(ワンクリックでカーソルをセルに合わせただけでも)、
起動するようなマクロはできないでしょうか。

何度も申し訳ありませんが、ご教授いただけると幸いです。

投稿日時 - 2013-12-17 10:16:31

ANo.1

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

投稿日時 - 2013-12-16 22:53:55

お礼

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

投稿日時 - 2013-12-17 08:51:02

あなたにオススメの質問