- 締切済み
エクセル2003 シート上部で作成した表をしたに反映させたい。
excel2003で、顧客マスタというものをつくっています。 シート上部ので入力した表のデータをコマンドボタンを作り(決定ボタン)、ボタンを押すと、シート下の方に一覧という形でデータが反映されるように作りたいです。 下の表はどんどん下に追加されていき、上の表は決定ボタンを押すとデータがまた新しく入力できる状態になる・・・というプログラムを作りたいです。EXCEL2003でVBA初心者です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
上部には入力、下部は今まで入力したデータの明細を累積したい、で良いのかな。 上部と下部は第100行目とか(固定で)でよいかな。累積は別シートにしたほうが良いように想像するが。 まず (1)上部での入力最終行はどうして捉えられるの (2)下部の累積最終行はどうして捉えられるの (3)上部を下部に移す(移す)方法 (4)下部に移すキッカケのコマンドボタンを作る こういう風に、必要な事項(必要なスキルと似ている)に分解できないと、解決しない。 本当は(1)-(4)のどれかに絞って、ここへ質問すべきだ。現状では丸投げになっている。(4)は判っているでしょうね。 ーー 例データ A1:J9(E列以右列略) x y z u 2007/12/2 2 2 sss 2007/12/3 3 3 fff 2007/12/4 4 4 ggg 2007/12/5 5 5 sd 2007/12/6 6 6 er 2007/12/7 7 7 ty 2007/12/8 8 8 yui 2007/12/1 9 2 sw 第30行に(上記では第100行目といったがテスト用に第30行にした)見出しをコピーしておく。 x y z u コード コマンドボタンのクリックイベント Private Sub CommandButton1_Click() d1 = Range("A30").End(xlUp).Row MsgBox d1 d2 = Range("A65536").End(xlUp).Row MsgBox d2 Range("a2:J" & d1).Copy Range("A" & d2 + 1) End Sub (Msgboxは本番では削除のこと) 実行後 AJ30:J38 x y z u 2007/12/2 2 2 sss 2007/12/3 3 3 fff 2007/12/4 4 4 ggg 2007/12/5 5 5 sd 2007/12/6 6 6 er 2007/12/7 7 7 ty 2007/12/8 8 8 yui 2007/12/1 9 2 sw もう一度クリックすると x y z u 2007/12/2 2 2 sss 2007/12/3 3 3 fff 2007/12/4 4 4 ggg 2007/12/5 5 5 sd 2007/12/6 6 6 er 2007/12/7 7 7 ty 2007/12/8 8 8 yui 2007/12/1 9 2 sw 2007/12/2 2 2 sss 2007/12/3 3 3 fff 2007/12/4 4 4 ggg 2007/12/5 5 5 sd 2007/12/6 6 6 er 2007/12/7 7 7 ty 2007/12/8 8 8 yui 2007/12/1 9 2 sw となった。 これは累積テストの成功と、2度ボタンを押すと、同じデータを2度累積する危険性も示している。 とりあえず防止策は、利用者の実情も踏まえ、質問者で考えてください。略。
- pbforce
- ベストアンサー率22% (379/1719)
何ができないのですか? ごく基本的な操作で全てできると思います。 全部作ってほしいということでしょうか? Cells(Row,1)=Cells(1,1) でRowに整数を入れればA列のRow行にA1の値を入れられます。 A1を消したいときは、 Cells(1,1).Clear でいけます。