簡単なエクセルマクロ(私にとっては簡単でない・・)にご協力くださいませ。


シートが2つあります。
「カテゴリ」「Aシート」という名前です。

「カテゴリ」でコピー(CTRL+C)を選択すると、

「Aシート」の「N2」セルから下方向にコピーした値が順番に貼り付けられるようにしたいのです。

ただ、問題がありまして、N1セルには「カテゴリ」という言葉が入っています。N2から下方向に式がずっと入っています。

「カテゴリシート」でコピーする種類はいつも「値」です。

マクロ実行時に一番初めにN2に貼り付けられ、次に同じマクロを実行したときは、N列の値の入っている一つ下の行に貼り付けていくようにしたいのです。

例(すでにマクロが実行されて、N2には値が入っているとします)

「Aシート」
  N
1 カテゴリ(文字列)
2 123456(値)
3 =a+b(式)

この場合、SelectionChangeイベントになるのでしょうか?
マクロを実行し、「カテゴリ」シートのどこかのセルに入っている、22222をコピーしたとすると、
「Aシート」のN3に22222が上書きされるようにしたいのです。

ぜひお教えくださいませ。
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/08/03 16:13:25
  • 終了:2008/08/03 18:21:34

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/08/03 18:07:57

ポイント60pt

セルがコピーされたらというイベントはないので、カテゴリシートでセルを選択し、

マクロのショートカットを使用して実行してはどうでしょうか。


標準モジュールに下記を下記、Alt+F8でマクロのウィンドウを開き、下記のマクロを選択して「オプション」を選びます。

ショートカットキーに適当なキー(例えばN)を入力してください。


「カテゴリ」シートでセルを選択し(複数選択してもOK)、Ctl+N(上記でNを指定した場合)を押せば処理が実行されます。

Sub myCopyToN()
    Dim r As Long
    
    If ActiveSheet.Name <> "カテゴリ" Then Exit Sub
    
    With Worksheets("Aシート")
    For Each rg In Selection
        For r = 2 To Rows.Count
            If InStr(.Cells(r, "N").Formula, "=") = 1 Or IsEmpty(.Cells(r, "N")) = True Then
                .Cells(r, "N").Value = rg.Value
                Exit For
            End If
        Next
    Next
    End With
End Sub

http://www.relief.jp/itnote/archives/001492.php

id:naranara19

「セルがコピーされたらというイベントはない」という部分で、わけのわからないことを言って失礼いたしました。

完璧に動作いたしました。

大変感謝します。

すぐに完璧にやっていただいたのに、すごく丁重な文章で、こちらが恐縮してしまいます。

本当にありがとうございました。

感謝します。

2008/08/03 18:20:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません