[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『差込印刷風』(koooo)
雛形がsheet「用紙」に、データはsheet「リスト」の4行目からあります
自動で連続印刷しているのですが
プレビューで見てから印刷するように変更するにはどうしたらいいでしょうか
それと、sheet「用紙」のフォントのサイズをsheet「リスト」に入力して替えるようにしたいです
教えていただけますでしょうか。
よろしくお願いします
●sheetの関係性
sheet「用紙」A1 = sheet「リスト」J列
A2 = K列
A3 = L列
A4 = M列
A5 = I列
●sheet「リスト」
フォント20、行数150の場合
I列、J列以外は空白の場合があります
B C 3 1行目 20 4 2行目 20 5 3行目 20 6 4行目 20 7 5行目 20 8 9 行数 150
I J K L M 3 ?? 1行目 2行目 3行目 4行目 4 1-1 あああ いい う 5 2-3 いいい え
Private Sub CommandButton2_Click()
msg = MsgBox("印刷しますか?", Buttons:=vbYesNo + vbExclamation)
If msg = vbYes Then For i = 3 To 13 'For i = 12 To Sheets("データ").Range("B8").Value Sheets("用紙").Range("A1").Value = Sheets("リスト").Cells(i, 9).Value Sheets("用紙").Range("A2").Value = Sheets("リスト").Cells(i, 10).Value Sheets("用紙").Range("A3").Value = Sheets("リスト").Cells(i, 11).Value Sheets("用紙").Range("A4").Value = Sheets("リスト").Cells(i, 12).Value Sheets("用紙").Range("A5").Value = Sheets("リスト").Cells(i, 13).Value
Worksheets("用紙").PrintOut FROM:=1, To:=1, COPIES:=1, COLLATE _ :=True Next i End If
End Sub
< 使用 Excel:Excel2019、使用 OS:Windows10 >
プレビューするには Worksheets("用紙").PrintOut FROM:=1, To:=1, COPIES:=1, COLLATE _ :=True
の部分を、 Sheets("用紙").PrintPreview または Sheets("用紙").PrintOut Preview:=True のようにします。
フォントの変更は可能ですが、質問の内容からどこをどう変えるのか理解できませんでした。 一般的には、
Sheets("用紙").Range(変更する範囲).Font.Size = Sheets("リスト").Cells(サイズが入力されているセル).Value
のようにすればできると思います。
(tora) 2020/06/23(火) 16:05
それと、プレビューが終わった後に印刷開始をしたいのですが
どうしたらよいのか教えていただけないでしょうか。
Private Sub CommandButton2_Click()
msg = MsgBox("印刷プレビューを表示しますか?", Buttons:=vbYesNo + vbExclamation)
If msg = vbYes Then
Sheets("用紙").Range("A1").Font.Size = Sheets("リスト").Cells(3, 3).Value Sheets("用紙").Range("A2").Font.Size = Sheets("リスト").Cells(3, 4).Value Sheets("用紙").Range("A3").Font.Size = Sheets("リスト").Cells(3, 5).Value Sheets("用紙").Range("A4").Font.Size = Sheets("リスト").Cells(3, 6).Value Sheets("用紙").Range("A5").Font.Size = Sheets("リスト").Cells(3, 7).Value
For i = 4 To Sheets("リスト").Range("C9").Value Sheets("用紙?A").Range("A1").Value = Sheets("リスト").Cells(i, 10).Value Sheets("用紙?A").Range("A2").Value = Sheets("リスト").Cells(i, 11).Value Sheets("用紙?A").Range("A3").Value = Sheets("リスト").Cells(i, 12).Value Sheets("用紙?A").Range("A4").Value = Sheets("リスト").Cells(i, 13).Value Sheets("用紙?A").Range("A5").Value = Sheets("リスト").Cells(i, 9).Value
Sheets("用紙?A").PrintOut Preview:=True
'Worksheets("用紙?A").PrintOut FROM:=1, To:=1, COPIES:=1, COLLATE _ :=True Next i End If
End Sub
(koooo) 2020/06/24(水) 13:07
そうですね、連続してプレビューを見るにはその都度プレビュー画面を消す必要がありますし、 途中でプレビューをやめるには Escキーを押しながらプレビューを消す、 これはコードの実行を中断することになりますし、 プレビューしたシートは印刷できますが、元に戻って印刷ということはできないです。
なにか方法があるかもしれませんが、残念ながら私にはわかりません。
私が通常使う方法は、一番最初にMsgBoxで印刷かプレビューかを選択するボタンを表示することです。 プレビューの件数が多くなる場合は、例えば5件ごととか10件ごとにMsgBoxを表示して、 プレビューを続けるか中断するかを選択できるようにする。 また、その際にコード自体を中断してもいいし、印刷を継続することもできます。
いずれにしても使い勝手がよくないかもしれませんが、ケースバイケースで自分の好みで仕様を考えたらどうでしょうか。
また、ほかの方でいい案がありましたら私自身も教えてほしいです。
(tora) 2020/06/24(水) 14:09
toraさん MsgBoxで印刷orプレビュー選択できるようにしてみます
件数の制限もいいですね
少し検討してみます
(koooo) 2020/06/24(水) 15:21
フォントのサイズを指定しているセルに数値で入力されていますか? 12ポイントにしたい場合はただ「12」と入力してください。 「12pt」などとなっているとそのようなエラーとなります。
Sheets("用紙").Cells(i, "A").Font.Size = Sheets("リスト").Cells(i, "Z").Value
のようにすると、リストのi行目に入力した数値により、用紙のA列i行目のフォントが変更されます。 こちらで試してみてもエラーは出ていないのですが。 (tora) 2020/06/24(水) 16:23
プレビューをIf文で全部と一部だけに変更しました
If文が間違っているのか全部プレビューができません
どうしたらよいのか教えていただけないでしょうか。
If メッセージボックスがYESなら
全部プレビューする
Elese
メッセージボックスがNoなら
4〜C10までプレビューする
End If
Private Sub CommandButton2_Click()
Unload UserForm1
msg1 = MsgBox("全部プレビューしますか?", Buttons:=vbYesNo + vbExclamation)
Sheets("用紙").Range("A1").Font.Size = Sheets("リスト").Cells(3, 3).Value Sheets("用紙").Range("A2").Font.Size = Sheets("リスト").Cells(4, 3).Value Sheets("用紙").Range("A3").Font.Size = Sheets("リスト").Cells(5, 3).Value Sheets("用紙").Range("A4").Font.Size = Sheets("リスト").Cells(6, 3).Value Sheets("用紙").Range("A5").Font.Size = Sheets("リスト").Cells(7, 3).Value
If msg = vbYes Then
For i = 4 To Sheets("リスト").Range("C9").Value Sheets("用紙").Range("A1").Value = Sheets("リスト").Cells(i, 10).Value Sheets("用紙").Range("A2").Value = Sheets("リスト").Cells(i, 11).Value Sheets("用紙").Range("A3").Value = Sheets("リスト").Cells(i, 12).Value Sheets("用紙").Range("A4").Value = Sheets("リスト").Cells(i, 13).Value Sheets("用紙").Range("A5").Value = Sheets("リスト").Cells(i, 9).Value
Sheets("用紙").PrintOut Preview:=True Next i
Else
For i = 4 To Sheets("リスト").Range("C10").Value Sheets("用紙").Range("A1").Value = Sheets("リスト").Cells(i, 10).Value Sheets("用紙").Range("A2").Value = Sheets("リスト").Cells(i, 11).Value Sheets("用紙").Range("A3").Value = Sheets("リスト").Cells(i, 12).Value Sheets("用紙").Range("A4").Value = Sheets("リスト").Cells(i, 13).Value Sheets("用紙").Range("A5").Value = Sheets("リスト").Cells(i, 9).Value
Sheets("用紙").PrintOut Preview:=True Next i End If
End Sub
(koooo) 2020/06/25(木) 12:53
一見ですが、
If msg = vbYes Then のmsg は msg1 の間違いじゃないですか。
ちなみに エクセルのVBAには Option Explicit というオプションがあります。 変数を使う場合に必ず Dim で宣言をしなければいけないというオプションです。
これを適用すれば間違った変数名を使ったときにエクセルが教えてくれるので便利です。 例えば
http://officetanaka.net/excel/vba/beginner/11.htm
なんかを参考にされるといいと思います。
(tora) 2020/06/25(木) 13:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.