[[20151204195540]] 『InputBoxのキャンセルについての続き』(sada) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『InputBoxのキャンセルについての続き』(sada)

[[20151201082551]]にて半平太さんに面倒を見て頂き
一度解決はしたのですが
用紙A4サイズのときに印刷が、出来ません。
どこか修正で対応出来ますか?
よろしくお願いします。
Sub insatu()

    Dim vntCop As Variant, vntTo As Variant, vntFrom As Variant
    Dim msg As String
    Dim intNum As Integer
    Dim Target As Worksheet
    Dim vntNum As Variant
    Set Target = ActiveSheet

    With Target
        Do
            vntCop = Application.InputBox(msg, "印刷部数", 1, Type:=1)

            If VarType(vntCop) = vbBoolean Then
               Exit Sub
            End If
            If vntCop < 1 Or 10 < vntCop Then
                MsgBox "印刷部数は 1 〜 10 の数値で指定して下さい"
            Else
                MsgBox "印刷部数は " & vntCop & " 部です" & _
                    String(2, vbCr) & _
                    "印刷プレビュー確認後、OKなら印刷をクリックして下さい"
                Exit Do
            End If
        Loop
        If .PageSetup.PaperSize = xlPaperA3 Then
            msg = "ページサイズを「数値」で入力して下さい" & String(2, vbCr) & _
                "  「A3ヨコ」は 1 を入力[標準印刷]" & String(1, vbCr) & _
                "  「A4ヨコ」は 2 を入力[縮小印刷]" & String(2, vbCr) & _
            "で指定して下さい。 規定値は「2」縮小印刷です。"
            Do
                vntNum = Application.InputBox(msg, "ページサイズ設定", 2, Type:=1)
                If VarType(vntNum) = vbBoolean Then vntNum = 0: Exit Do ' ※
                If vntNum = 1 Or vntNum = 2 Then
                    vntNum = vntNum + 7
                    Exit Do
                Else
                    MsgBox "無効な数値です" & vbCr & "やり直して下さい"
                End If
            Loop
        End If

sLine:

        If vntCop > 0 And vntNum <> 0 Then
            If vntNum = xlPaperA4 Then
                .PageSetup.PaperSize = vntNum
                .PageSetup.Zoom = 68
            End If
            Application.EnableEvents = False
            .PrintOut
            Application.EnableEvents = True
            If vntNum = xlPaperA4 Then
                .PageSetup.PaperSize = xlPaperA3
                .PageSetup.Zoom = 100
            .PrintOut
            End If
        End If
    End With
    Set Target = Nothing
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 済みませーん m(__)m 
 仕様がよく分かっていないのですが、

 これで試してください。「Exit Do ※」 の部分と「If vntCop > 0 And vntNum <> 0 Then」の部分を変更しました。
  ↓

 Sub insatu()

     Dim vntCop As Variant, vntTo As Variant, vntFrom As Variant
     Dim msg As String
     Dim intNum As Integer
     Dim Target As Worksheet
     Dim vntNum As Variant
     Set Target = ActiveSheet

     With Target
         Do
             vntCop = Application.InputBox(msg, "印刷部数", 1, Type:=1)

             If VarType(vntCop) = vbBoolean Then
                Exit Sub
             End If
             If vntCop < 1 Or 10 < vntCop Then
                 MsgBox "印刷部数は 1 〜 10 の数値で指定して下さい"
             Else
                 MsgBox "印刷部数は " & vntCop & " 部です" & _
                     String(2, vbCr) & _
                     "印刷プレビュー確認後、OKなら印刷をクリックして下さい"
                 Exit Do
             End If
         Loop
         If .PageSetup.PaperSize = xlPaperA3 Then
             msg = "ページサイズを「数値」で入力して下さい" & String(2, vbCr) & _
                 "  「A3ヨコ」は 1 を入力[標準印刷]" & String(1, vbCr) & _
                 "  「A4ヨコ」は 2 を入力[縮小印刷]" & String(2, vbCr) & _
             "で指定して下さい。 規定値は「2」縮小印刷です。"
             Do
                 vntNum = Application.InputBox(msg, "ページサイズ設定", 2, Type:=1)

                 If VarType(vntNum) = vbBoolean Then
                     Exit Sub ' ※
                 End If

                 If vntNum = 1 Or vntNum = 2 Then
                     vntNum = vntNum + 7
                     Exit Do
                 Else
                     MsgBox "無効な数値です" & vbCr & "やり直して下さい"
                 End If
             Loop
         End If

 sLine:
         If vntCop > 0 Then
             If vntNum = xlPaperA4 Then
                 .PageSetup.PaperSize = vntNum
                 .PageSetup.Zoom = 68
             End If
             Application.EnableEvents = False
             .PrintOut
             Application.EnableEvents = True
             If vntNum = xlPaperA4 Then
                 .PageSetup.PaperSize = xlPaperA3
                 .PageSetup.Zoom = 100
             .PrintOut
             End If
         End If
     End With
     Set Target = Nothing
 End Sub

(半平太) 2015/12/04(金) 20:48


半平太さん
また質問してしまいました
ありがとうございました。
完璧に希望通りの動作になりました。
Exit Doが問題なのですか?
このくらいの手直しは気づけるよに
なりたいな〜ガンバロウ(^_^)v
(sada) 2015/12/05(土) 10:48

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.