アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在申し込み票のExcelがあるのですが、マクロをボタンに登録してボタン一つ押すと申し込み票の名前と生年月日、住所が他のExcelのブック(例えば申込者名簿.xls)のシートに、名前→A1、生年月日→B1、住所→C1に入力されて保存されるようにしたいです。
更に次にもう一度ボタンを押した時には、名前→A2、生年月日→B2、住所→C2・・と言うようにどんどん書き足したいです。

書き足した後は元のExcelブックも申込者名簿.xlsも閉じるようにしたいです。
どのようにVBAを書けばよいのでしょうか?
まだVBA初心者のためいまひとつわかりません。
よろしくお願いいたします。

A 回答 (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
どうでしょ~
    • good
    • 1

要点は


(1)他ブックの決まったシートをつかまえるコード(そしてセルに値を代入する)コピー・貼り付けは使わないほうがたやすい。
Xのブックのセルの値=Yのブックのセルの値、の形になるが、XもYもブック+シートを指定して、セルを指定する必要がある。
セルはブック名+シート名+Cells(i,j)で、捉える。iは行、jは列番号。
(2)お互い最下行を問題にすれば、よいと思うが最下行は
ブック名+シート名+Range("A65536").End(xlUP).Rowで捉えられるので、書き込みは+1下行を指して行う
あるいは代入を受ける側は、行ポインタで値代入行を管理し、一回ごとに+1して行く。
(3)ボタンのClickイベント関係の勉強。
ーー
VBAの初心者には少し難しい課題。
課題の丸投げの質問になっている。
    • good
    • 2

どのブックのどのシートのどのセルにあるデータを、どうしたいのか。


レイアウトなどを提示した方が回答がつくかも知れないですよ。
    • good
    • 2

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A