〔現在〕 データシートと印刷用シートがあります。
印刷用シートのA1に入力した番号を検索値としてデータシートA列にある“NO”からVLOOKUP関数で
値が返るような構成になっています。
印刷用シートのA1に印刷したい番号を入れて印刷、番号を入れて印刷という事を繰り返しています。
(100件以上ある)
〔やりたい事〕 データシートのB列に“印刷したいデータ”という項目を増やして、そこに例えば“1”と入力した
データのみ印刷用シートのA1に“NO”を入れて印刷を実行する。
フラグがついた番号をデータシートから持ってきて、印刷用シートへ入れて印刷すればいいと解釈しました。
下のような感じでどうでしょう? なお、フラグは"1"だけでなく何でもOKにしてあります。
Option Explicit Const sDataSheet As String = "データ" Const sPrintSheet As String = "印刷用" Const First As Integer = 2 'フラグの開始行 Sub PrintAutomatic() Dim vNo() As Variant Dim Last As Integer, I As Integer, N As Integer Dim rCur As Range Sheets(sDataSheet).Select Last = Range("B65536").End(xlUp).Row '配列に実行する分のNoを入れる N = 0 For I = First To Last If Cells(I, 2) <> "" Then N = N + 1 ReDim Preserve vNo(N) vNo(N) = Cells(I, 1) End If Next '印刷する Sheets(sPrintSheet).Select For I = 1 To N Range("A1") = vNo(I) ActiveWindow.SelectedSheets.PrintOut 'お試し用 ActiveWindow.SelectedSheets.PrintPreview Next End Sub
サンプルです。
おおむねあっていると思いますが、質問で意図されている内容が完全には理解できなかったので、必要に応じて手直ししてください。
Option Explicit Option Base 0 Sub test() Dim PrintSheet As Worksheet Dim DataSheet As Worksheet Dim r As Long Set PrintSheet = Worksheets("印刷用シート") Set DataSheet = Worksheets("データシート") ' B1には"印刷したいデータ"という文字が入っていると仮定し、 ' B2から始める r = 2 ' A列にデータがなくなるまでループ Do While DataSheet.Cells(r, 1).Value <> "" If DataSheet.Cells(r, 2).Value = 1 Then ' データシートのA列から印刷用シートのA1に転記する PrintSheet.Cells(1, 1).Value = DataSheet.Cells(r, 1).Value ' 印刷用シートの再計算 PrintSheet.Calculate ' 印刷 PrintSheet.PrintOut End If r = r + 1 Loop End Sub
ありがとうございます。
後ほどゆっくり読ませていただきます。
文章だけで伝えるって難しいですね。。
国語からべんきょしなきゃいけないかしら^_^;
早速ありがとうございました。
今帰宅したばかりで脳みそが拒否しちゃいそうなので、
後ほどじっくり読ませて頂きます。