
sb-yamatoと申します。よろしくお願いします。
ボランティア団体の登録者管理をしておりまして、エクセルVBAで人数分のシートを作成しながら差し込みができないかと悩んでいます。
イメージとしては、ワードの差し込み印刷をすると、人数分のページができると思います。それをエクセルシートでできないでしょうか?
自分なりに作ってはみたのですが、変数iの使い方が悪いのか、どうも上手くいきません。こんな感じです。
Sub シートの作成()
Dim touroku As Long ←登録番号です。(8桁)
Dim simei As String ←漢字氏名です。
Dim seinen As Date ←生年月日です。
Dim i As Byte ←150人までです。
i = 2 ←1行目はタイトル行です。
Worksheets("名簿").Activate
Do While Cells(i, "B").Value <> ""
touroku = Range(i, "B").Value
simei = Range(i, "C").Value
seinen = Range(i, "D").Value
Worksheets("登録台帳(原本)").Copy After:=Worksheets(i)
Range("AI2").Value = touroku
Range("AJ2").Value = simei
Range("AK2").Value = seinen
ActiveSheets.Name = Range("AJ2").Value
i = i + 1
Loop
End Sub
名簿sheetのB列[変数i]行目をコピーしたsheetのセルAI2に貼り付けているつもりなのですが、反応してくれません。
皆様のお力添え、よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
もう#1で解決したようだが、参考までに、VBA初心者用に
関数を出来るだけ使い、VBAは最小限と言う方法を紹介します。
ーー
Googleで「imogasi 請求書」でWEB照会してみてください。
http://oshiete1.goo.ne.jp/qa3538263.html
ほかたくさん出ます。
ーー
要点はデータのあるシートの空き列に連続番号を(手作業でよい)を
振る。
差込印刷をするシート側で、帳票見出し・項目見出し。罫線、書式の
設定は、合計の算出などはSheet2に対し、手作業でやる。そしてSheet2の空きセルに番号指定セル(Sheet1の現データの行を指定する)を設ける。
そして都度変わるデータは、INDIRECT関数で設定する。
例で説明すると
Sheet1で
A列 B列
氏名 住所 <-第1行目
大村 大田区 <-第2行目
戸塚 調布市 <-第3行目
・・・
Sheet2(印刷するシート)
A1に行番号指定セルを設ける(第1行目は印刷時には、印刷範囲には入れないようにする)
Sheet2の氏名を表示するセルには
=INDIRECT("sheet1!A"&A1)
を入れておく。
Sheet2のA1に2(Sheet1の2行目の人の意味)が入っていると
氏名は「大村」になります。A1に3と入れると氏名は「戸塚」に変わります。
この理屈を住所欄など他の印刷項目にも使います
ーー
その後VBAではSheet2のA1の値を2から最終行まで順次プログラムで自動で変化させ
For i=2 to 23
worksheets("heet2").range("A1")=i
'--Range指定と印刷のコードPrintOutを入れる。1行。
Next i
のたった4行で、質問者の20行程度のコード以上の威力を発揮します。
最終行を捉えるコードが必要だが、簡単。
メリットは
関数に詳しい方には、シートを見て、何をやっているか安心感が有ると思う
(上記で、質問者のコード「以上」といった意味は下記2点)
少しコードの工夫すれば、特定の1人、2人など指定して、臨時にSheet2を印刷できる
Sheet2のレイアウトの修正にもVBAコードは一切触らなくて良い。
No.1
- 回答日時:
SheetをCopyするとActiveSheetが移動するのでSheet名を明示する必要があります。
Worksheets("名簿")はActivateしなくても大丈夫です。
Range(i, "B").Value といった書き方は出来ないです。
やるなら、Range("B" & i).Value です。
Copyで追加されたSheetがActiveSheetになります。
ActiveSheetのNameは変数simeiを使えばよいですね。
Sub testシートの作成()
Dim touroku As Long '←登録番号です。(8桁)
Dim simei As String '←漢字氏名です。
Dim seinen As Date '←生年月日です。
Dim i As Byte '←150人までです。
i = 2 '←1行目はタイトル行です。
'Worksheets("名簿").Activate
With Worksheets("名簿")
Do While .Cells(i, "B").Value <> ""
touroku = .Cells(i, "B").Value
simei = .Cells(i, "C").Value
seinen = .Cells(i, "D").Value
Worksheets("登録台帳(原本)").Copy After:=Worksheets(i)
With ActiveSheet
.Range("AI2").Value = touroku
.Range("AJ2").Value = simei
.Range("AK2").Value = seinen
'.Name = Range("AJ2").Value
.Name = simei
End With
i = i + 1
Loop
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの下部のシートタブの...
-
エクセルで別シートの同じ位置...
-
ワークシートの行が途中から表...
-
エクセルで数式は残したまま他...
-
エクセルでセルの書式設定がで...
-
EXCELでコピーしたグラフのデー...
-
ロックしたセルのコピー&貼り付け
-
Excelで保護のかかったシートの...
-
編集時には画面表示していなが...
-
シート全体を他のブックのシー...
-
スプレッドシートが真っ白にな...
-
【エクセル】表から条件に合っ...
-
【OpenOffice】 改ページプレビ...
-
エクセルVBAでコピー先シートの...
-
エクセルの右クリックメニューで
-
エクセルでセルの結合
-
VBAで差し込みシート作成はでき...
-
Excelで行を挿入しても移動しな...
-
エクセルで多数のシートをまと...
-
excelで勝手にテキストボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの下部のシートタブの...
-
エクセルで別シートの同じ位置...
-
ワークシートの行が途中から表...
-
エクセルでセルの書式設定がで...
-
シート全体を他のブックのシー...
-
EXCELでコピーしたグラフのデー...
-
Excelで保護のかかったシートの...
-
エクセルで数式は残したまま他...
-
excelで勝手にテキストボックス...
-
ロックしたセルのコピー&貼り付け
-
VBA アクティブでないシートの...
-
シート保護してても並び替えを...
-
Excelで大量の2000個のリストを...
-
行の挿入ができなくなった
-
Excelでハイパーリンク先の表示...
-
【エクセル】数式のセル番地を...
-
シート保護したExcelへの画像貼...
-
フィルタされたものを切り取り...
-
スプレッドシートが真っ白にな...
-
worksheetクラスのcopyメソッド...
おすすめ情報