下記の構文を次の様に変えたいのですが、どこを直せばよいですか?
From が R3C6
TO が R3C9
両方が入っている場合はその間
FROMのみが入っている場合はそれ以降
TOのみが入ってる場合はその数字まで
を印刷するように変える。
Sub 一括出力()
'一括出力 Macro
Dim PrintSheet As Worksheet
Dim DataSheet As Worksheet
Dim r As Long
Set PrintSheet = Worksheets("A")
Set PrintSheet = Worksheets("B")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
r = 9
Do While DataSheet.Cells(r, 2).Value <>""
If DtaSheet.Cells(r, 1).Value >= 1 And DataSheet.Cells(r, 1).Value <>""Then
PrintSheet. Cells(6, 47).Value = DataSheet.Cells(r, 1). Value
PrintSheet. Calculate
PrintSheet. PrintOut
Debug.Print r, DataSheet.Cells(r, 1).Vlue
r = r + 1
Else
r = r + 1
End If
Loop
.
End Sub
最初のシートの設定が間違っているように見えますが、
どちらかは DataSheet でしょうか。
FROM がないときは、9行目から
TOがないときは B列が空白行になるまでの例です。
Sub 一括出力() '一括出力 Macro Dim PrintSheet As Worksheet Dim DataSheet As Worksheet Set DataSheet = Worksheets("A") '★★★ どっちかはデータシート?:とりあえずAを変更 Set PrintSheet = Worksheets("B") Dim startRow As Long Dim endRow As Long If IsEmpty(DataSheet.Cells(3, 6).Value) Then startRow = 9 Else startRow = DataSheet.Cells(3, 6).Value End If If IsEmpty(DataSheet.Cells(3, 9).Value) Then endRow = DataSheet.Range("B9").End(xlDown).Row Else endRow = DataSheet.Cells(3, 9).Value End If Dim r As Long For r = startRow To endRow If DataSheet.Cells(r, 2).Value <> "" Then Exit For If DtaSheet.Cells(r, 1).Value >= 1 And DataSheet.Cells(r, 1).Value <> "" Then PrintSheet.Cells(6, 47).Value = DataSheet.Cells(r, 1).Value PrintSheet.Calculate PrintSheet.PrintOut Debug.Print r, DataSheet.Cells(r, 1).Vlue End If Next End Sub
早速ありがとうございます。