HOME
エクセルの学校  エクセルの学校  エクセルの学校

Yahoo Google
初めての方へ
ダウンロード
エクセルマイスター
過去ログ
検索 遊び マック コン
ライブラリ
よくある質問
エクセル質問ボード
全文検索
ExcelPedia

[[20061102111225]] 『VBAでシート選択→印刷』(初心) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

|
| 全文検索 | 過去ログ | HOME ]

 

『VBAでシート選択→印刷』(初心)
 こんにちわ。
 VBAをいじりはじめて間もない者ですが、教えてください。
 氏名欄に入力される氏名が違うだけの同じフォームが各シートにあり、
 それをいちいちシートを表示させて印刷ボタン、シートを表示させて印刷ボタン‥と繰り返していました。
 それをボタンひとつでシート名が氏名になっているシートだけ選択し、印刷をできますでしょうか。

 Sheet1→Aさん
 Sheet2→Bさん
 Sheet3→Cさん
 Sheet4→sheet4(氏名が無い予備フォーム)
 Sheet5→Sheet5(氏名が無い予備フォーム)

 氏名は時に増えたり、減ったりと変動することがあります。

 Excel2000を使用しています。

 コードは適当に修正して下さい。氏名欄を A1セル と仮定してます。
(純丸)(o^-')b

 Sub inji()
   Dim mys As Worksheet
   For Each mys In Worksheets            'すべてのシートに対し
     With mys
     If .Range("A1").Value <> "" Then    'A1セルが空欄じゃなかったら
        .PrintOut                        '印字する
     End If
     End With
   Next mys
 End Sub

 早速の回答、ありがとうございます!
 いま試してみたところうまくできました!
 それで、ひとつ追加で質問です。
 印刷を実行するまえに“印刷して良いですか?”というメッセージを出して
 “OK”をクリックすると印刷開始させるのはどうすればよいですか?
 (初心)

 こちらは参考になりますでしょうか?
 
[[20061021142253]]『ハイパーリンクを使いたい』(カメ)
 
 (キリキ)(〃⌒o⌒)b


 お〜ぉ、キリキさん、フォローせんきゅ!

 キリキさん、ありがとうございます。
 早速試してみました。

 Dim mys As Worksheet
      For Each mys In Worksheets            'すべてのシートに対し
         With mys
             If .Range("E4").Value <> "" Then    'A1セルが空欄じゃなかったら
             If MsgBox("よろしいですか?", vbOKCancel, "印刷しますよ〜") = vbOK Then
             .PrintOut                        '印字する
             End If
         End With
    Next mys
 End Sub

 というようなコードにしたのですが、
 コンパイルエラー;End Withに対応するWithがありません
 と出てしまいました。
 3行目にあるWithには対応していないことになるんでしょうか?
 (初心)

 パッと見では、End If がひとつ足りないのに気が付きます。
 If MsgBox("よろしいですか?", vbOKCancel, "印刷しますよ〜") = vbOK Then .PrintOut     '印字する
 ↑のように1行にするか、
     If .Range("E4").Value <> "" Then    'A1セルが空欄じゃなかったら
         If MsgBox("よろしいですか?", vbOKCancel, "印刷しますよ〜") = vbOK Then
          .PrintOut                        '印字する
         End If
     End If
 ネストの End If を入れるようにします。これでどうですか?
(純丸)(o^-')b 

 おお!できました!
 2個目の分割させたコードを入力してみました。
 できました!できました!
 純丸さん、キリキさん、本当にありがとうございました!
 助かりましたぁ〜(≧∇≦)
 (初心)

 先日、みなさんに回答していただいた初心です。
 もうちょっと使いやすくしようと試みているのですが、いまいちわかりません;;。
 標準モジュールに下記コード入力し、シートにボタンを作成し、
 そのボタンをクリックすると標準モジュールにあることを実行させるというようにしました。
 -----------------------------
 Sub AAA()
 Dim mys As Worksheet
     For Each mys In Worksheets                  'すべてのシートに対し
         With mys
             If .Range("E4").Value <> "" Then    'E4セルが空欄じゃなかったら
                 If MsgBox("よろしいですか?", vbOKCancel, "印刷しますよ〜") = vbOK Then
                .PrintOut                        '印字する
                 End If
             End If
         End With
     Next mys
 End Sub
 -----------------------------
 この場合、例えば、E4セルが空欄じゃないシートが3枚あったとしたら、
 3回のメッセージが出てしまいます。
 そうではなくて、1回のメッセージで3枚いっぺんに印刷させたいのです。
 宜しくお願いします。
 (初心)

 こんなんでっか?(ROUGE)
'----
Sub AAA()
    Dim txt As String, ws As Worksheet, x
    For Each ws In Worksheets
        If ws.Range("E4").Value <> "" Then _
            txt = txt & "," & ws.Name
    Next
    If Len(txt) Then
        txt = Mid(txt, 2)
        x = Split(txt, ",")
        If MsgBox("よろしいですか?", vbOKCancel, _
            "印刷しますよ〜") = vbOK Then
            Sheets(x).PrintOut
        End If
    End If
End Sub


コメント:

[ 一覧(最新更新順) |

]



キーボードヒント:[Home]または[Fn+Home]キーで一番上へ戻ります

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