- ベストアンサー
VBAで他のブックのシートにボタン一つで書込みたい
現在申し込み票のExcelがあるのですが、マクロをボタンに登録してボタン一つ押すと申し込み票の名前と生年月日、住所が他のExcelのブック(例えば申込者名簿.xls)のシートに、名前→A1、生年月日→B1、住所→C1に入力されて保存されるようにしたいです。 更に次にもう一度ボタンを押した時には、名前→A2、生年月日→B2、住所→C2・・と言うようにどんどん書き足したいです。 書き足した後は元のExcelブックも申込者名簿.xlsも閉じるようにしたいです。 どのようにVBAを書けばよいのでしょうか? まだVBA初心者のためいまひとつわかりません。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ど~もぉ。 情報が少なかったのですが、想像で作ってみました。質問とは違うかもしれませんが参考にしてください。 まず、 <申し込み票.xls>シートの設定 セルA1 を「名前」 セルB1 を「生年月日」 セルC1 を「住所」 上記のようにデータを入力する場所とします。 <申込者名簿.xls>シートの設定 セルE1 に数式[=COUNTA(A:A)]を入力 次に、申し込み票.xlsに下記のコードをコピペする (シート名が違う場合は、変更してください) [Test1]は申込者名簿.xlsにデータをコピーするコード [Test2]は両方のブックを保存後閉じるコード ------------------------------------------------------------------ Sub Test1() Dim TargetSheet As Worksheet, TargetRow As Long Dim DName As String, DBirth As Date, DAddress As String With Worksheets("Sheet1") DName = .Range("A1").Value DBirth = .Range("B1").Value DAddress = .Range("C1").Value End With Set TargetSheet = Workbooks("申込者名簿.xls").Worksheets("Sheet1") With TargetSheet TargetRow = .Range("E1").Value + 1 .Cells(TargetRow, 1).Value = DName .Cells(TargetRow, 2).Value = DBirth .Cells(TargetRow, 3).Value = DAddress End With Set TargetSheet = Nothing End Sub Sub Test2() Workbooks("申込者名簿.xls").Close SaveChanges:=True ThisWorkbook.Close SaveChanges:=True End Sub ------------------------------------------------------------------ Excel2003 どうでしょ~
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
要点は (1)他ブックの決まったシートをつかまえるコード(そしてセルに値を代入する)コピー・貼り付けは使わないほうがたやすい。 Xのブックのセルの値=Yのブックのセルの値、の形になるが、XもYもブック+シートを指定して、セルを指定する必要がある。 セルはブック名+シート名+Cells(i,j)で、捉える。iは行、jは列番号。 (2)お互い最下行を問題にすれば、よいと思うが最下行は ブック名+シート名+Range("A65536").End(xlUP).Rowで捉えられるので、書き込みは+1下行を指して行う あるいは代入を受ける側は、行ポインタで値代入行を管理し、一回ごとに+1して行く。 (3)ボタンのClickイベント関係の勉強。 ーー VBAの初心者には少し難しい課題。 課題の丸投げの質問になっている。
- n-jun
- ベストアンサー率33% (959/2873)
どのブックのどのシートのどのセルにあるデータを、どうしたいのか。 レイアウトなどを提示した方が回答がつくかも知れないですよ。