電子書籍の厳選無料作品が豊富!

 エクセル2000についての質問です。
 エクセルにてデータベースを作成したのですが、そのデータベースから検索抽出したセルに、変更を加えたとします。(個数を1個減らすとか)
 その際、その変更の操作を行った人物と、変更したセルのデータを、別のシートに返したいのですが、どのように組み立てたら宜しいのでしょうか?
 色々書籍を探したのですが、該当するものがなかったので投稿しました。
 ご存知の方がいらしたら、回答の程、宜しくお願い致します。 

A 回答 (4件)

早速マクロを作ってみました。



Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRow As Long
Dim mySyukko As Integer
Dim myZaiko As Integer
Dim myName As String

If Target.Column = 5 Then
If Target.Value <> "" Then
mySyukko = Target.Value
myZaiko = Target.Offset(0, -2).Value
Target.Offset(0, -2).Value = myZaiko - mySyukko
Target.Value = ""
myName = Target.Offset(0, -1).Value
Target.Offset(0, -1).Value = ""

If Worksheets.Count = 1 Then
Worksheets.Add after:=Worksheets(1)
Worksheets(2).Range("A1").Value = "商品名"
Worksheets(2).Range("B1").Value = "持出数"
Worksheets(2).Range("C1").Value = "担当者"
Worksheets(2).Range("D1").Value = "日付"
Worksheets(2).Columns("D:D").ColumnWidth = 10
End If

myRow = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Target.Offset(0, -4).Copy Destination:=Worksheets(2).Cells(myRow, 1)
Worksheets(2).Cells(myRow, 2).Value = mySyukko
Worksheets(2).Cells(myRow, 3).Value = myName
Worksheets(2).Cells(myRow, 4).Value = Date
End If
End If

End Sub

前回と同じ手順で実行してみて下さい。

また何かありましたら、お知らせ下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。
おかげさまで、納得のいくマクロが完成しました。
本当にお世話になりました。

お礼日時:2002/09/23 14:27

早速ご返事いただきまして有難うございます。

変更点を直すことは、すべて可能です。調べたいことがありますので、少し時間を下さい。必ず回答させていただきます。
    • good
    • 0

早速マクロを組んでみました。

参考にして下さい。
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRow As Long

If Target.Column = 5 Then
If Target.Value <> "" Then
Target.Offset(0, -2).Value = Target.Value
Target.Value = ""

If Worksheets.Count = 1 Then
Worksheets.Add after:=Worksheets(1)
Worksheets(2).Range("A1").Value = "商品名"
Worksheets(2).Range("B1").Value = "在庫数"
Worksheets(2).Range("C1").Value = "担当者"
End If

myRow = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row
If myRow > 1 Then
Worksheets(2).Rows("2:2").Insert Shift:=xlDown
End If
Target.Offset(0, -4).Copy Destination:=Worksheets(2).Range("A2")
Target.Offset(0, -2).Copy Destination:=Worksheets(2).Range("B2")
Target.Offset(0, -1).Copy Destination:=Worksheets(2).Range("C2")
End If
End If

End sub

Sheet1のA列を商品名・B列を価格・C列を在庫数・D列を人物名・E列を変更数として、説明します。
1.上のPrivate sub Worksheet_Change(ByVal Target As Range)からend subまでをコピーする。
コピー方法は、上のPrivate sub Worksheet_Change(ByVal Target As Range)からend subまでを選択して青く反転させ、青く反転した範囲の中で右クリック→コピーをクリックする。
2.A列~D列にそれぞれデータを入力する。
3.シートのメニューバーの中のツールをクリックし、マクロ→Visual Basic Editorと順にクリックし、Visual Basic Editorを表示させる。
4.画面右側のVBAProjectと書かれている下のsheet1の上でダブルクリックし、右側の灰色の画面を白くする。
5.右の白い画面の一番上の左端で右クリックし、貼り付けをクリックする。
6.右上端の赤の×ボタンをクリックしてVisual Basic Editorを終了させる。
7.E列に数字を入力すると、商品名・在庫数・人物名がsheet2の2行目に自動的にコピーされる。もし、Sheet2にデータ-があった場合は、1行下にずれて表示される。

このようなことでよろしいのでしょうか。もし違っている時・わからないことがあった時は、ご遠慮なくお知らせ下さい。あなた様の考えられていることが実現できるまで、私でよろしければ一緒に考えてみたいと思います。
    • good
    • 0
この回答へのお礼

 ありがとうございました。
 早速、実行してみました。4~6のVisual Basic Editorの操作が、若干私のエクセルでは違ったようですが、なんとか教えていただいたマクロは実行できました。
 そこで、厚かましいようですが変更したい個所が2点あります。宜しければ教えて頂けないでしょうか?
 先ず1点目。シート1のセルE列に「変更数」という項目を置きましたが、ここを「持ち出し数」という風に換えて、「持ち出し数」に入力した際、シート1の「在庫数」から「持ち出し数」引いた値を、再びシート1の在庫数に反映させる事は可能でしょうか?シート2の持ち出し数はそのままです。
 2点目。シート2の4項目めのセルに、自動でその日の日付を表示出来ないでしょうか?つまり、シート2には、「商品名」「持ち出し数」「人物名」「日付」を返すようにしたいのですが。

 重ね重ね、宜しくお願い致します。

お礼日時:2002/09/19 23:47

はじめまして。

あなた様の質問の内容がよくわからないのですが、変更を行った人物と変更したセルのデータをコピーして別のシートに貼り付けるという方法ではダメなのでしょうか?
それとも、上の方法を自動的に実行したいということなのでしょうか?
もし、自動的に実行するのであれば、私はVBAを使ってマクロを書いてしまいます。
もし、マクロを書く方法がわからないのであれば、そんなに難しいマクロではないので、実行する方法をお知らせすることができるかと思います。その時は、次の点を御知らせ下さい。
1.別シートに返すデータは変更を行った人物と変更したセルのデータだけでよいのか
2.データを返すシートは同じブックの中でよいのか
お手数をおかけしますが、よろしく御願いします。
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。返答が遅くなってスミマセン。
 質問も言葉足らずで、的を得ない問いを出してしまいましたが、kazuhiko5681さんの仰る通りの事を行いたいのです!
 補足として、1.の別シートに返すデータは、変更を行った人物と変更したセルのデータだけでよいのか?という問いですが、プラス、変更したセルのある行の、別のセルも返したいのです。つまり、ひとつの行に「品物名、価格、在庫」と3つのセルがあった場合、ある人物が在庫を1個減らした時に、その「人物名、品物名、変更された在庫」の3つを別のシート(同じブック内)に返したい。と言うものです。
 お手数おかけしますが、回答の程、宜しくお願い致します。

お礼日時:2002/09/17 20:33

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