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

下はエクセルファイルの印刷ためのコントロールボタンに組んであるコードです。
----------------------
Sub ボタン6338_Click()

Dim k As Integer
For k = 1 To 3 'Sheet1から3までループ
Worksheets(k).Select 'シートを選択
Select Case k '何枚目のシートかによって処理を変える
Case 1 'Sheet1 の時
ActiveSheet.PrintOut '印刷
Case 2 'Sheet2の時
ActiveSheet.PrintOut from:=1, To:=2 '1頁から2頁を印刷
Case 3 'sheet3の時


  End Select
Next k

End Sub
---------------------

このコードの中に更に「シート3は、セルG10が日曜日になっている時は、印刷しない」、としたいのですが、どのようにすればよいでしょうか?

質問者からの補足コメント

  • どう思う?

    エンドセレクトの前、Thenの後にエンドイフを入れると成立しました。
    初歩的な事聞いてすみません。
    これであってますかね?
    ---------------------------------

    Case 3 'sheet3の時
    If Weekday(Range("G10").Value) <> vbSunday Then

    end If

    End Select
    Next k
    End Sub
    ------------------------------------------------

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/11/11 15:07

A 回答 (4件)

再びすみません。


G10が日曜なら印刷しない、ということだと、
それ以外なら印刷する、のでいいですよね?

だったら、そのIf節内で分岐させないとダメですね。

If Weekday(Range("G10").Value<>vbSunday Then
ActiveSheet.PrintOut
Else
End If

ですかね。
Elseのとこ、つまり、日曜の時は何もしない、
としてます。
まあElseは無くても回ると思いますが。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
なかなかうまくいきません。
今は、シート3が、日曜でも、そうでなくても印刷してしまいます。
なぜでしょうか?
---------------------------------------------
Sub ボタン_Click()

Dim k As Integer
For k = 1 To 3 'Sheet1から3までループ
Worksheets(k).Select 'シートを選択
Select Case k '何枚目のシートかによって処理を変える
Case 1 'Sheet1 の時
ActiveSheet.PrintOut '印刷
Case 2 'Sheet2の時
ActiveSheet.PrintOut from:=1, To:=2 '1頁から2頁を印刷
Case 3 'sheet3の時

If Weekday(Range("G10").Value) <> vbSunday Then
ActiveSheet.PrintOut
Else
End If


End Select
Next k

End Sub
--------------------------------------------------------

お礼日時:2015/11/12 16:11

#2です。


そうです、そうです、それで合ってます。
すみません、それ、前提として省略しました。
誤解させてすみませんm(_ _)m
    • good
    • 0

念のため。


G10が、「日曜日」という文字でなく、日付(シリアル値)になって
いるならば、If文は以下で試してください。

Case 3
If Weekday(Range("G10").Value)<>vbSunday Then
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おっしゃる通り、シリアル値です。
なんですが、
「セレクトケースに対するエンドセレクトがありません」とコンパイルエラーが出ます。

下記がコードです。
-------------------------------------------------
Sub ボタン_Click()

Dim k As Integer
For k = 1 To 3 'Sheet1から3までループ
Worksheets(k).Select 'シートを選択
Select Case k '何枚目のシートかによって処理を変える
Case 1 'Sheet1 の時
ActiveSheet.PrintOut '印刷
Case 2 'Sheet2の時
ActiveSheet.PrintOut from:=1, To:=2 '1頁から2頁を印刷
Case 3 'sheet3の時
If Weekday(Range("G10").Value) <> vbSunday Then

End Select
Next k

End Sub
------------------------------------------------

「If then」 の受けがないとかでしょうか?

お礼日時:2015/11/11 14:19

>「シート3は、セルG10が日曜日になっている時は、印刷しない」



セルG10が日曜日でないときに印刷する、と考えれば良いです。


Case 3 'sheet3の時
If Range("G10").Value <> "日曜" Then
ActiveSheet.PrintOut '印刷
End If
    • good
    • 0

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