プロが教えるわが家の防犯対策術!

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

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

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

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

A 回答 (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

という意味づけになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/01/08 09:16

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
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2013/12/18 16:16

ん?



>コピーしたセルに戻る

とは「コピーしたときに選ばれていたセル」に戻る,という意味じゃなかったんですか。
まぁでも、単にセルを選ぶ命令を追加するだけですが。

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
    • good
    • 1
この回答へのお礼

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

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

よろしくお願いします。

お礼日時:2013/12/18 16:03

sub macro1()


 if activecell.row < 3 then exit sub
 range("A2").value = cells(activecell.row, "A").value
end sub
とかでいいです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

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

お礼日時:2013/12/17 10:18

こんばんは!



こういうコトですかね?
ダブルクリックでの方法としています。
シートモジュールです。

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
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

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

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

お礼日時:2013/12/17 10:16

可能です。


マクロの記録機能を使ってその操作を行えば、質問者が必要としているコードが記録されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/12/17 08:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!