プロが教える店舗&オフィスのセキュリティ対策術

vba初心者です。ネットを見ながら作成していますがどうしてもわかりません教えてください。
エクセルのバージョンは2010です。
条件として
Sheet1のセルA1からA3にワークシート名(Sheet2~Sheet4)を入れます。
Sheet1のセルB1からB3に印刷枚数をいれます。
例えば、A1「Sheet2」B1「「2」と入力すると、Sheet2を2枚印刷するようにしたいです。
但し、セルA1もB1も空白の場合は印刷を行わず、セルA2とB2、セルA3とB3を実行するようにしたいです。セルA2とB2、セルA3とB3が空白のときもそれぞれ印刷しなく、空白でないものだけを印刷したです。

ネットを見て下記のところまでたどり着いたのですが、空白の場合は止まってしまいます。
If  <>””Then を入れればいいとかいてあるのですが、入れるとピクリとも動かなくなります。

よろしくお願いします。

Sub 印刷()

Dim a As String

a = Sheets("Sheet1").Range("A1").Value
Sheets(a).PrintOut Copies:=Range("B1").Value

a = Sheets("Sheet1").Range("A2").Value
Sheets(a).PrintOut Copies:=Range("B2").Value

a = Sheets("Sheet1").Range("A3").Value
Sheets(a).PrintOut Copies:=Range("B3").Value



End Sub

A 回答 (3件)

こんな感じでしょうか?


--------------------------------------------------------------------------------
Sub 印刷()

Dim a As String
Dim b As Long

With Sheets("Sheet1")
For b = 1 To 3
If .Cells(b, 1).Value <> "" Then
If .Cells(b, 2).Value <> "" Then
a = .Cells(b, 1).Value
Sheets(a).PrintOut Copies:=.Cells(b, 2).Value
End If
End If
Next
End With

End Sub
--------------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

本当にありがとうございます。
朝から4時間かけてできなかったのですが・・・
コピーして貼り付けて実行したら一瞬でできました。

難しいので今から解読していきたいと思います。

お礼日時:2017/06/10 18:51

No.2 のさらに補足



どっちでも出来るようにいっそ以下のようにしちゃった方が良いかも
--------------------------------------------------------------------------------
Sub 印刷()

Dim b As Long

With Sheets("Sheet1")
For b = 1 To 3
If .Cells(b, 1).Value <> "" Then
If .Cells(b, 2).Value <> "" Then
Sheets(.Cells(b, 1).Value).PrintOut Copies:=.Cells(b, 2).Value
End If
End If
Next
End With

End Sub
--------------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

解読できました。
Cells(b,1)の辺りさすがです。こんなやり方あるのかと感心させられました。繰り返し同じプログラムを入力せず「b」で置き換えることができるんですね。
For~Nextもすごく便利ですね。勉強になりました。
本当にありがとうございました。

お礼日時:2017/06/11 09:20

No.1 の補足



シートの指定ですがシート名の指定だと記入するのが面倒ではありませんか?
左から〇枚目という数字のみの指定する方法もあります。
その場合は「Dim a As String」を「Dim a As Long」にしてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!