• ベストアンサー

セルをクリックで選択。違うセルへ価をコピーしたいです。

お知恵をお貸しください。 エクセルでA列のセルを1つ選択して、その価を違うセル(例えばE12)に自動でコピーさせたいのですが良い方法がわかりません。マクロも試してみたのですが、A列のみの選択がうまくいかず動きませんでした。(A列は番号の入力域で、空欄が下へ続きます。) 単純なことの質問で申し訳ありませんが、よろしくお願いいたします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

WorksheetのイベントにBeforeClickがあれば簡単なのですが、BeforeRightClickやBeforeDoubleClickはあるのに、BeforeClickがないんですよねえ。 私も同じようなことをしようとして、No.1さんのようなやり方で以前やりましたが、矢印キーでA列にセルを移動してもこのイベントが走ってしまい、そのときはそれではまずかったので、苦労した経験があります。 結局、そのブックだけ右クリックメニューに追加して、右クリック→メニュー選択とするようにしました。 たとえば以下のような感じです。これではSheet1のA列で右クリックしたときに、E17にコピーするようにしています。 標準モジュールに以下を記述 Public NewMenu As CommandBarButton Sub CopyToE12()  Range("E12").Value = Selection.Cells(1, 1).Value End Sub そしてThisWorkbookに以下を記述 Private Sub Workbook_Open()  Set NewMenu = Application.CommandBars("Cell").Controls.Add(before:=1)  With NewMenu   .Caption = "E12へコピー"   .OnAction = "CopyToE12"  End With End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean)  NewMenu.Delete End Sub そしてシートオブジェクト(Sheet1など)に以下を記述。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Selection.Columns(1).Column = 1 Then   NewMenu.Enabled = True  Else   NewMenu.Enabled = False  End If End Sub Private Sub Worksheet_Deactivate()  NewMenu.Enabled = False End Sub

tasogaregoo
質問者

補足

ご回答ありがとうございます。 右クリックメニューとは考えませんでした。 コードを試したのですが、実行時エラー91、オブジェクト変数またはWithブロック変数が設定されていません。と出てデバックすると Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Selection.Columns(1).Column = 1 Then   NewMenu.Enabled = True←の行で止まります。 環境で違いが出るのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.6

No.2です。 > 新しいブックを開き右クリックをすると「E12へコピー」のメニューが現れ、 > クリックするとマクロを記入していたブックが開かれ、 > マクロが開けませんのエラーが出ます。 他のブックを開いたときにはそのメニューは現れないはずですが、どうやらエラーが出たときにゴミが残ってしまったようですね。 対処法ですが、まずExcelをいったん終了し、もう一度起動して新規のブックを作成します。そしてAlt+F11でVBAの画面を立ち上げ、以下のマクロをコピーして貼り付けてください。(貼り付けるのはどこでもかまいません) Sub DelMenu()  Dim m  For Each m In Application.CommandBars("Cell").Controls   If m.Caption = "E12へコピー" Then m.Delete  Next End Sub これをF5キーで実行すると、これで「E12へコピー」という「右クリックのメニューが削除されます。シート上で右クリックしてこのメニューがなくなったことを確認したら、そのブックは閉じてかまいません。

tasogaregoo
質問者

お礼

ありがとうございます。 メニュー出なくなりました。 色々な方法があるんですね。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#3です。お礼部分に関連して、効果の出る列を限定してみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static m If Target.Column = 1 And Target.Row < 10 Then m = Target End If If Target.Column <> 1 And Target.Column = 3 Then 'C列 ActiveCell = m End If End Sub で、C列とコメントしたところにTarget.Column = 3を入れて 3=C列以外では反応しないようにしました。 F列ならTarget.Column = 6と修正すること。 全部やめるには Static mの前に exit Sub を入れてください。 セルと関連づけるなら If range("A1")="" then Exit Sub を入れる。A1セルが空白なら全処理をパスします。 全行コメント化や全行抹消してしまう方法もあります。

tasogaregoo
質問者

お礼

わざわざ考えて頂きありがとうございました。 列の指定で他では反応しなくなりました。

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

No.2です。 > NewMenu.Enabled = True←の行で止まります。 とありますが、マクロの最初の Public NewMenu As CommandBarButton Sub CopyToE12()  Range("E12").Value = Selection.Cells(1, 1).Value End Sub は標準モジュール(Module1など)に貼り付けていますでしょうか。 Workbook_Open()ではエラーが出てないようなので、間違えてThisWorkBookに貼り付けていませんか? どうしてもエラーが出るようだったら、シートのマクロはなくても一応動きます。この Private Sub Worksheet_SelectionChange(ByVal Target As Range) と Private Sub Worksheet_Deactivate() は、右クリックに追加したメニューがSheet1のA列のときだけ表示し、それ以外のセルで右クリックしたときには色が薄くなって選択できないようにしているだけです。これがなくてもやりたいことはできるのですが、右クリックメニューで「E12に追加」がどのセルでもできる状態になります。A列以外で使わなければいいだけの話ですが。

tasogaregoo
質問者

補足

回答ありがとうございます。 ご指摘の通り貼り付ける場所を間違えておりました。 Private Sub Workbook_Open()  Set NewMenu = Application.CommandBars("Cell").Controls.Add(before:=1)  With NewMenu   .Caption = "E12へコピー"   .OnAction = "CopyToE12"  End With End Sub の記述を標準モジュールに書いておりました。 ThisWorkbookに書き込みすると動くようになりました。 ありがとうございました。 新たにご相談があります。 違うマクロを試す為に教えていただいた記述を削除いたしました。 新しいブックを開き右クリックをすると「E12へコピー」のメニューが現れ、クリックするとマクロを記入していたブックが開かれ、マクロが開けませんのエラーが出ます。 削除の仕方がまずかったのでしょうか? メニューを消す方法があれば教えてください。お願いいたします

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

単純なことではないと思います。 綱渡り的に Sheet1のselection_Changeイベントに貼り付ける。 A列例データ a b c d e f g h i j ーー Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static m If Target.Column = 1 And Target.Row =< 10 Then m = Target End If If Target.Column <> 1 Then ActiveCell = m End If End Sub -- まずセットしたいデータの入ったA列のセルをクリック。 A列以外をクリック。 選んた値がセットできます。 ーー 上記コードでボロが出ないことを願う。

tasogaregoo
質問者

お礼

ご回答ありがとうございました。 指定以外のセルにも簡単に貼り付けることが出来ました。 ただ次にクリックした所にも張り付いてしまうので、気をつけてつかいます。解除の方法もあるのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

シート名右クリック → コードの表示 で開く画面に以下のマクロを貼り付けます。A列をクリックするとそのセルの値をE12セルに書きこむマクロです Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Column = 1 Then 'A列は列番号が1、もしB列なら2   Range("E12").Value = Target.Value  End If End Sub

tasogaregoo
質問者

お礼

ご回答ありがとうございます。 簡単な記述で出来るのですね! 列の指定もわかりました。 クリック以外にもセルがアクティブになれば書き込まれるので色々と使えますね。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELのセルのコピー

    EXCELで、セル(例えばE8)に「=VLOOKUP(D8,携帯番号一覧!A1:B18,2,0)」と入力して、この関数を下のセル(E9~)にどんどんコピーをしたいのですが、普通にコピーをするとE9のセルでは「=VLOOKUP(D9,携帯番号一覧!A2:B19,2,0)」となってしまいます。「D9」はいいのですが、「A2:B19」ではなく、「A1:B18」のままでコピーをしたいのです。今は、一つ一つコピーしては変更を繰り返していますが、もっと簡単にコピーする方法は無いのでしょうか?

  • セルのコピー

    EXCELにおいて数式を記入したセルを別のセルにコピーすると、コピー先のセルの数式は自動的に行・列の差を考慮したものに変更されます。 例えば(行・列)=(1・A)に「=C1」と数式を入力します。 これを(3・B)にコピーすれば「=D3」、(5・D)にコピーすれば「=F5」となってしまいます。 どこにコピーしても「=C1」となるようにしたいのですが、どうすればよいでしょうか?

  • セルの選択

    エクセルで、マクロを作っています。 列の中に、数値がとびとびに入っている場合、数値の入っている最も下のセルはどのように選択すればいいのか教えてください。 Selection.End(xlDown).Select ↑では、空白になっているセルがあると、そこが選択されてしまうので、、、 お願いします。

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

  • EXCELでセルの移動マクロを作りたいのですが…

    EXCELについての質問です。マクロを使ってセルの移動をさせたいと考えています。 まず使うデータ範囲はA1:E11です。A1:E10にはデータが入っています。 ちなみに、A列には名前、B~E列には数字が入っており、A11:E11は合計が表示される設定しており、合計の場所はここに固定させたいのです。 その移動のさせ方ですが、 A1:E1に空欄があるとします。 そのときに、マクロを再生させるとA2:E10のセルに入っているデータ(値のみ)を上に移動させたいのです。 さらに、A3:E3の内容を消して空欄が出来たとします。 その時に同じ操作によってA4:E10のデータを上に移動させたいのです。 前者のマクロを単純に作ると縦に9つ分のセルを移動させるマクロでは、 A11:E11も上に移動させられてしまいます。なので、移動させるセルの一番下が10行目になるようなマクロを作りたいのです。 何がしたいのかといいますと、いらないデータを消した時に空欄をマクロで詰めてしまいたいのです。 乱文で判りづらいかと思いますが、知識のある方教えていただけないでしょうか。 よろしくお願い致します。

  • エクセルVBA・一定の条件でセルを選択したい

    エクセルVBA・一定の条件でセルを選択したい 添付した画像で、毎日、社員番号等が入力されます。 D列の内線番号は空白の場合もありますがA、B、C列は必ず入力されます。 添付画像だと「A1:D5」という具合に選択したいのです。 考え方としては、A列の*行に入力された場合は、「A1:D*」を選択するという具合になるかと思います。 私の目的は、セル範囲を選択したあと、並べ替えたいと考えています。 この並べ替えは自動記録でできそうです。 よろしくお願いします。

  • VBAを使って検索したセルをコピーして別の場所に貼り付ける。

    こんにちは。 業務でエクセルを使っていたのですが、 あまりに毎回時間がかかってしまうため、 VBAを利用して自動化したいと考えています。 まず、以下のようなシートが存在します。 A   B      C D E     F       G  H 1             2  なす          とまと   3 20 3 かぼちゃ         えんどう  4 55 4 きゅうり         りんご   2 82 5 とまと           6                7               みかん  3 10 8 にんじん         ごぼう  9  21 9 はくさい         うり   10 33 10 ねぎ 次のような作業を自動化したいのです。 1.A列に入っている野菜の名前と一致するものがF列にあるかどうか検索する。 2.もし一致するセルがあれば、そのセルとその横のセル、もう一つ横のセルをまとめてコピーしてそれぞれC、D、E列で、検索したもとの野菜と同じ行にペーストする。 3.この操作をA列にある全ての野菜について行い、 もし、F列に一致するものがなければ、CDE列は空欄にしておく。 4.A列一番下まで完了すれば作業終了。 以上です。 よろしくお願い致します。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • エクセルで数字を認識して、行をコピーして挿入するマクロ

    エクセルのマクロでこんなことは可能でしょうか? (1)あるセルに(数字)が入ったとき    (そのセルの列は固定) (2)自動的にそのセルの「行」全体をコピーして    その数字が5なら4行、1なら0行 (入力値より-1行) (3)ひとつ下の行に「コピーしたセルの挿入」で行の追加をする 例 列 A.B.C.D.E a.b.c.d.2 "a.b.c.d.2" a.b.c.d.3 "a.b.c.d.3" "a.b.c.d.3" Eの列に2とある場合下に2行-(1行)追加コピー "a.b.c.d.2"の部分。 無理を言いますが可能であれば お詳しい方、ご教授宜しくお願い致します。

  • エクセルでセルの値を参照してコピー

    エクセルで一枚の表があり、 各行の先頭列はユニークなIDが入力してあります。 例; 100 ◆ ▲ ● : 123 ■ ▽ ◎ : 200 ◇ ▲ ○ というIDがある表が、 A3からD102まであるとします。 A1セルに 123という数値を入力して、 マクロを登録したボタンを押すと、 123が先頭列のデータをコピー (この場合はA25~D25ですね) して、 A2セルに貼り付けるためには、 どのようなマクロを書けばよろしいでしょうか? 説明が足りなければ補足させていただきますので、 どなたかご教示いただければ幸甚です。 よろしくお願いします。

専門家に質問してみよう