• ベストアンサー

ExcelのVBA

Excelで、データベースを作成したいと思っています。 新規レコード入力時に、ユーザーフォームを使って入力したいのですが、 ユーザーフォームに入力したデータを、新規レコードとしてシートに保存する方法を教えて下さい。 例えば、住所録で10件のデータが入力されている。 新しい住所データをフォームを使って入力し、指定のボタンをクリックすれば、 11件目としてシートの最後尾(11番目)に保存される。 といった具合です。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

データはSheet1にあるとします。 ユーザーフォームのCommandButton1をクリックしたら、TextBox1、TextBox2、TextBox3の内容を既に入力してある最終行の次に書き込みます。 Excelで、データベースということですが、Accessとかが楽かもしれませんね。がんばって下さい。 Private Sub CommandButton1_Click()   Dim wrtRow As Long '書き込む行   With Worksheets("Sheet1")     wrtRow = .Cells.SpecialCells(xlCellTypeLastCell).Row + 1     '例えば、以下のようにデータを書き込む     .Cells(wrtRow, 1) = TextBox1     .Cells(wrtRow, 2) = TextBox2     .Cells(wrtRow, 3) = TextBox3   End With End Sub

p-leisure
質問者

お礼

成功しました。 ありがとうございました。 私もAccessがいいかなぁと思いましたが、Accessがよく分からないので、 Excelのほうがいいのかと思いました。 集計などをしたかったので・・。(Accessでも可能でしょうが) 追加で質問ですが、まっさらのシートに、 上記コード(?)を使って試し入力をしたのですが、 3行目(セル3A)に入力されました。 どういうことでしょう?

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

実際に1件目から使っていかれるなら   wrtRow = .UsedRange.Rows.Count + 1 の方がいいと思います。SpecialCellsだと何か修正したりすると最終行が記憶されているような気がします。 UsedRange.Rows.Count+1 の場合は、先頭行に各項目の表題があるものとしています。それと、そのシートはデータだけをセットするようにして、余分な入力はしないほうがいいと思います。 >集計などをしたかったので・・。(Accessでも可能でしょうが) 逆のような気もしますね。多量のデータを入力して、Excelでどうやって集計するのだろう・・・と。集計は単純な合計ではなく、種々の条件付で行うことが多いものですがExcelでもできなくは無いですが、Accessの方がはるかに楽でしょう。集計するためのソフトがAccessのような気がします。本もたくさんありますしそんなに困難なことではないと思います。がんばって下さい。

p-leisure
質問者

お礼

レスが遅くなりました。 ありがとうございました。 自分自身、Accessがよくわかってないせいもあって、 とりあえずExcelで・・と思いました。 入力はうまくいったのですが、 フォームで入力した数字は文字列になるようですね。 もう少し研究が必要です。(^_^;)

関連するQ&A