シート2から1行単位でシート1の指定セルに代入し印刷データがある行まで
シート2から1行単位でシート1の指定セルに代入し印刷データがある行まで繰返すマクロ
(QNo.6233212の仕様追加質問です。)
シート1に印刷用の雛形、シート2にデーターシートがあります。
(データーがある行数は都度変更)
シート2のデータから指定したセルの値を
シート1の指定したセルに順次代入したいです。
シート2の2行目の指定したセルの値を
シート1の指定したセルに代入してシート1を1枚印刷。
その後シート2の3行目の指定したセルの値を
シート1の指定したセルに代入してシート1を1枚印刷。
これをシート2のデータがある分繰返。
シート2のデータがなくなったら
「印刷終了」と出て印刷停止。
というのをシート1に作成したボタン一つで行いたく
QNo.6233212で教えていただいた記述で成功しました。
この後仕様変更で、
シート1に代入し印刷前にシート2から代入された値を
Left関数等で編集を行いそれをシート1の別指定セルに代入
シート2→シート1
A2→B4
J2→D21
G2→G18
C2→C2
↓追加
シート1のB4に代入された値の左から4文字目以降をセルA1へ
シート1のG18に代入された値の左から2文字から6文字目までをセルA2へ
以下の用にしましたができません。
↓
Worksheets("Sheet1").Range("A1").Value = Left(D21,4)
Worksheets("Sheet1").Range("A2).Value = Mid(G18,2,5)
ここはマクロでなくシート1のA1,A2に式を入れる方がいいのでしょうか?
(代入された値をSelect Caseでさらに変更も予想有)
Sub 印刷02()
'シート2の1行目の指定したセルのデータをシート1の
'指定したセルに転記を行いシート1が印刷される。
'印刷後はシート2の2行目の指定したセルのデータを
'シート1の指定したセルに転記してシート1が印刷される。
'シート2にデータが無くなったら停止する。
'↓【データ変更時変更場所】
'データ数に合わせてToの右の数字を変える事
Dim myRng(1 To 4) '変数宣言
Dim cpRng '貼付位置をcpRngとする
Dim i As Integer
With Sheets("Sheet2")
'↓【データ変更時変更場所】
'データの位置の変化や増減はここを変更する
Set myRng(1) = .Range("A2") 'データ位置設定
Set myRng(2) = .Range("J2") 'データ位置設定
Set myRng(3) = .Range("G2") 'データ位置設定
Set myRng(4) = .Range("C2") 'データ位置設定
End With
'↓【データ変更時変更場所】データ数の増減でここを変更
'↓【転記位置変更時変更場所】
'データの転記先だけが変更時もここを変更
cpRng = Split("B4,D21,G18,B15", ",")
'転記先セル番地を配列に格納
With Sheets("Sheet1")
Do While myRng(1) <> "" 'A列のデータ位置が空白でなければ
'↓【データ変更時変更場所】
'データ数に合わせてToの右の数字を変える事
For i = 1 To 4 'データの数だけ繰り返す
.Range(cpRng(i - 1)).Value = myRng(i).Value 'セルデータ転記
'【追加した記述】代入された値をさらに編集して別セルへ
Worksheets("Sheet1").Range("A1").Value = Left(D21,4)
Worksheets("Sheet1").Range("A2").Value = Mid(G18,2,5)
Next
.PrintOut '印刷
'↓【データ変更時変更場所】
'データ数に合わせてToの右の数字を変える事
For i = 1 To 4
Set myRng(i) = myRng(i).Offset(1) 'データ位置を1行下に設定
Next i
Loop '繰り返し
'↓【データ変更時変更場所】データ数の増減でここを変更
'↓【転記位置変更時変更場所】
'データの転記先だけが変更時もここを変更
.Range("B4,D21,G18,B15").ClearContents 'クリア
End With
'↓【データ変更時変更場所】
'データ数に合わせてToの右の数字を変える事
For i = 1 To 4
Set myRng(i) = Nothing '後処理
Next
MsgBox "印刷終了"
End Sub