『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
[ 一覧(最新更新順) |
]YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.