• ベストアンサー

エクセルマクロで出来るでしょうか。

マウスでクリックしたセル位置の入力内容を、別のセル位置に表示するようなマクロは出来るでしょうか?。 考えているのは、弁当注文の集計表の作成です。 A列に氏名、B列に店名、C列に品名、D列に金額と、予め入力してある表で、 当日注文する分を、個人毎に、氏名・店名・品名・金額・とクリックすれば、 同じシート内に作成した集計表に、クリックした順番に表示していくというようなものです。 予めの入力は、各列5行目から行っています。 また集計表は、F列、G列、H列、I列の5行目から下に、クリックした順番に表示できればと思っています。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

クリックでマクロを動かすことはできませんが、ダブルクリックなら以下のようなイベントマクロで実行できます。 シート名を右クリックして「コードの表示」をして、以下のコードをコピー貼り付けしてみてください。 A列からD列のデータをダブルクリックすると、F5セル以下のデータベースの最下行にデータが追加されていきます。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column < 5 Then Cells(5, Target.Column + 5).End(xlDown).Offset(1, 0).Value = Target.Value End If End Sub

hijtxa
質問者

お礼

早速のご教示ありがとうございました。 バッチリ思うように動きます。 早速活用させていただきます。 本当にありがとうございました。

その他の回答 (1)

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

エクセルの都合で,そういうのはクリックじゃなくWクリックで作成します。 それとどのみち1行分転記するなら,イチイチABCD列と順にセルをクリックしていく必要は無いと思いますが如何に。 シート名タブを右クリック,コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_beforedoubleclick(byval Target as excel.range, cancel as boolean)  if target.row > 4 and target.column < 5 and target <> "" then  range("F65536").end(xlup).offset(1).resize(1, 4).value = cells(target.row, "A").resize(1, 4).value  cancel = true  end if end sub ワークシート画面に戻り,転記したい行のセルをWクリックする。

hijtxa
質問者

補足

早速のご教示ありがとうございます。 説明が悪かったようですので補足させていただきます。 例えば、A列5行目記載の山口さんが、B列8行目の店名、C列の8行目の品名、D列8行目の金額と 言った具合に、A列とB列以降のWクリックする行が同一ではないのです。 申し訳ありませんが、よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう