[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで印刷』(ぷ〜)
応用ができないんです・・・
Private Sub 印刷_Click()
Dim ws As Worksheet
Dim MyName As String, myNo As String
Dim i As Long
MyName = ActiveSheet.Name i = InStrRev(MyName, "!")
conf = MsgBox("印刷する(〃⌒o⌒)?", vbOKCancel, "印刷") If conf = vbOK Then
conf = MsgBox("確認する(*^▽^*)o♪ ", vbOKCancel, "確認") If conf = vbCancel Then conf = MsgBox("印刷します!", vbOKCancel, "確認") If conf = vbOK Then
myNo = Mid(MyName, i)
If InStr(ws.Name, myNo) > 0 Then ws.PrintOut
ElseIf conf = vbOK Then
myNo = Mid(MyName, i)
For Each ws In Worksheets If InStr(ws.Name, myNo) > 0 Then ws.PrintPreview
End If
Next ws
conf = MsgBox("いいかなv(=∩_∩=)v", vbOKCancel, "印刷") If conf = vbOK Then
myNo = Mid(MyName, i)
For Each ws In Worksheets If InStr(ws.Name, myNo) > 0 Then ws.PrintOut
ElseIf conf = vbCancel Then
End If
Next ws 上記の様なマクロを作成して見ましたが上手くいきません! 印刷する?でOKなら確認する?と表示されてCancelを選択したら, そのまま印刷する所までは,上手くいくのですが・・・ 確認をするでOKを選択したら,印刷プレビューが表示されて,いいかなとMsgが 表示され、印刷としたいのですが,どうしたら良いですか????
頭をそろえると、何処と何処が対応しているのかが分かりやすくなります。
MyName = ActiveSheet.Name i = InStrRev(MyName, "!") conf = MsgBox("印刷する(〃⌒o⌒)?", vbOKCancel, "印刷") If conf = vbOK Then conf = MsgBox("確認する(*^▽^*)o♪ ", vbOKCancel, "確認") If conf = vbCancel Then conf = MsgBox("印刷します!", vbOKCancel, "確認") If conf = vbOK Then myNo = Mid(MyName, i) If InStr(ws.Name, myNo) > 0 Then ws.PrintOut ElseIf conf = vbOK Then myNo = Mid(MyName, i) For Each ws In Worksheets If InStr(ws.Name, myNo) > 0 Then ws.PrintPreview End If Next ws conf = MsgBox("いいかなv(=∩_∩=)v", vbOKCancel, "印刷") If conf = vbOK Then myNo = Mid(MyName, i) For Each ws In Worksheets If InStr(ws.Name, myNo) > 0 Then ws.PrintOut ElseIf conf = vbCancel Then
End If Next ws
今現在はこんな感じです。 途中までしか書いてませんか?
追記:ライブラリより (e1pw)VBA字下げとIF文Win VBAを読みやすくする記述法と基本的なIFの使い方を解説します。 http://www.excel.studio-kazu.jp/lib/e1pw/e1pw.html (ご近所PG)
今は,確認するで If conf = vbCancel Then conf = MsgBox("印刷します!", vbOKCancel, "確認") If conf = vbOK Then myNo = Mid(MyName, i) If InStr(ws.Name, myNo) > 0 Then ws.PrintOut までは作動しますが,その下からの ElseIf conf = vbOK Then myNo = Mid(MyName, i) For Each ws In Worksheets If InStr(ws.Name, myNo) > 0 Then ws.PrintPreview End If Next ws
conf = MsgBox("いいかなv(=∩_∩=)v", vbOKCancel, "印刷") If conf = vbOK Then myNo = Mid(MyName, i) For Each ws In Worksheets If InStr(ws.Name, myNo) > 0 Then ws.PrintOut
ElseIf conf = vbCancel Then
End If Next ws
が,反応しないのです。
頭を揃えれば動作するのではなくて、 記述内容を分かりやすくするために頭を揃えるのです。 ここの理解は問題ありませんか?
いくら If A Then 処理A If B1 Then 処理B1 ElseIf B2 Then 処理B2
と書こうが、 ElseIf B2 Then が If A Then に対応するわけではありません。 そういう勘違いをなくす為に「頭を揃えましょう」と一般に推奨されているのです。
私が先に上げた文は、ぷ〜さんの記述で今、どのIfがどのElseと対になっているかを示した物です。 ぷ〜さんが期待する位置とは違っているのではないでしょうか。 期待通りに揃えるなら、適切にEnd Ifを入れていく必要があります。 If A Then 処理A If B1 Then 処理B1 End If ElseIf B2 Then 処理B2 End If (ご近所PG)
出来ました!!有難う御座いました!!
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.