プロが教える店舗&オフィスのセキュリティ対策術

以前行った質問で、
(1)シート2のリストに入力=(2)シート1のフォームに反映(→(3)印刷)というものがあり
その際は皆さんに色々教えて頂いたヒントを元にリストとvlookupで解決しました。

しかし、今度は逆に、
(1)シート1のフォームを入力=(2)シート2のリストに反映→
(3)シート1で『確定』ボタン?を押す=(4)シート2が確定され→
(1)シート1で新たな入力→(2)…以下繰り返し
という事をしたいという依頼が来ました。
最終的には、常にシート1は入力用で、シート2が蓄積・保存用になる予定です。

サイトで色々調べ、(http://www.sigoto.co.jp/excel/
多分マクロで書式の消去を使えば上手くいきそうな気がしているのですが、
具体的にどのように行えばよいのか掴めていません。

初心者な質問で申し訳ありませんが、どのようにすれば良いか教えて下さい・・・・!
ヒントになるようなサイトがあればお願いします。。

A 回答 (3件)

やりたいことが、Sheet1のC1,C2,C3に入力した内容を、ボタンを押すと


Sheet2のデータの最後の行の下に、或いは指定した行に、横方向に記録していくということですかね。VBAで仕事を行うに定番のようなマクロです。
以下、試して、そちらの都合に合わせて編集してください。

Sub ボタン3_Click()
GYOU = Sheets("Sheet2").Range("B65536").End(xlUp).Offset(1, 0).Row
Sheets("Sheet2").Cells(GYOU, 2).Value = Range("C1").Value
Sheets("Sheet2").Cells(GYOU, 3).Value = Range("C2").Value
Sheets("Sheet2").Cells(GYOU, 4).Value = Range("C3").Value
End Sub
補足説明
Range("B65536").End(xlUp).Offset(1, 0).Row  は
エクセルで使用できる最大行65536行目のB列を上方向へ移動して、空白でない行を探す、その行から1行上へ移動した行番号を取得して、変数GYOUに入れる。

もし、既に、登録してあるデータ行を変更して、書き換えるのであれば、編集しているデータの行番号をSheet1に表示しておいて(仮にA1の場合)
上記マクロのGYOUに GYOU=Range("A1").Value
と買えて、別途ボタンも作っておけば、新規登録と編集内容更新のボタンが出来ます。
追記
ご質問にシートに入力とVlookup関数で表示と有りますね。
Vlookup関数で表示させたセルに入力すると、Vlookup関数も消えてしまいます。こちらの機能もVBAに置き換えた方が良いかと思います。
    • good
    • 0
この回答へのお礼

丁寧な説明をありがとうございます!試してみます。

>Vlookup関数で表示させたセルに入力すると、Vlookup関数も消えてしまいます。
>こちらの機能もVBAに置き換えた方が良いかと思います。

とありますが、もしよろしければ具体的な方法を教えて下さい(><)
そこまでは・・・というのであれば、ネットでどのように調べれば出てくるか
ヒントを下さると大変助かります。

何度も申し訳ありませんが、よろしくお願いいたします。

お礼日時:2008/02/22 14:05

データの状況がわかりませんが、


データシートのA列に、重複していない管理番号などあったとして、
A2に、表示したいデータの管理番号を入力(Vlookup関数で使用した検索値など)
A1には、=MATCH(A1,Sheet2!A:A) と入れると、A2に入れた管理番号の行番号が表示されると思います。
A1の値を利用して

Sub ボタン1_Click()
GYOU = Range("A1").Value
Range("C1").Value=Sheets("Sheet2").Cells(GYOU, 2).Value
Range("C2").Value=Sheets("Sheet2").Cells(GYOU, 3).Value
Range("C3").Value=Sheets("Sheet2").Cells(GYOU, 4).Value
End Sub
と、先に紹介したマクロの式の=の左右を入れ替えて見てください。
式の内容を理解すると、やりたいことが自由に出来るようになります。
    • good
    • 0

No1,No2です。


>A1には、=MATCH(A1,Sheet2!A:A)
先ほどの、関数間違っていましたので、訂正の上確認下さい。
A2にいれた値をデータで探して、行番号を表示するので
A1には、=MATCH(A2,Sheet2!A:A)
が正しいです。
    • good
    • 0

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