[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで印刷』(ぷ〜)
応用ができないんです・・・
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の使い方を解説します。 https://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.