人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルマクロに詳しい方、教えて下さい。宜しくお願いします。

下記の構文を次の様に変えたいのですが、どこを直せばよいですか?

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


●質問者: mokachan
●カテゴリ:コンピュータ 学習・教育
✍キーワード:application as LOOP print SET
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●60ポイント

最初のシートの設定が間違っているように見えますが、

どちらかは 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
◎質問者からの返答

早速ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ