こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAで空白のセルを飛ばして差込印刷をするコード

 A   B  C  D  E
6 * 名前 名前 名前 名前
7 * 社名 社名 社名 社名
8 * 名前 名前 名前 名前
9 * 社名 社名 社名 社名




 上記のようなExcelの表があり、一人ずつ名前を網掛けにして印刷という作業を繰り返すため下記のようなコードをVBAで作成しました。
(一番左の数字は行数を表しています。A列は空白ではなく、データが入っています。)

Sub test()
Dim j As Long, i As Long, x As Long
x = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row - 5
For j = 1 To 4
For i = 1 To x Step 2
With Cells(5 + i, 1 + j).Interior
.ColorIndex = 0
.Pattern = xlGray25
.PatternColorIndex = xlAutomatic
End With
Application.ActivePrinter = "EPSON *** on LPT1:"  '***には機種名が入っています。
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="EPSON *** on LPT1:", Collate:=True
With Cells(5 + i, 1 + j).Interior
.ColorIndex = 0
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Next
Next

End Sub

「もしセルが空白ならばそのまま何もせず次のセルへ」
というコードを追加したいのですが、うまくいきません。

For i = 1 To x Step 2
If Cells(5 + i, 1 + j)="" Then
Exit For
Else
With Cells(5 + i, 1 + j).Interior



End With
End If

とすると空白セルのところで終了してしまいました。
Exit ForをNext i 等とするとエラーになってしまいます。

何処に、何と入れればよいのかご教授下さい。
Excel 97 使用です。不明な点があれば補足しますのでよろしくお願いします。

投稿日時 - 2006-06-07 11:01:51

QNo.2200577

暇なときに回答ください

質問者が選んだベストアンサー

Exit For だと、Forループ(i)を脱出してしまうので、
「空白以外なら」と言う条件にして、処理を行います。

For i = 1 To x Step 2
If Cells(5 + i, 1 + j) <> "" Then
'処理
End If

投稿日時 - 2006-06-07 11:20:05

お礼

出来ました!!
1ヶ月程いろいろ試してみて悩んでいたのですが、こんな単純な事だったとは・・・本当に有難うございました。

投稿日時 - 2006-06-07 11:33:11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問