- ベストアンサー
エクセルでお神輿の祝儀用短冊を作成し、印刷枚数を設定する方法
- エクセルを使ってお神輿の祝儀用短冊を作成し、印刷枚数を設定する方法について教えてください。
- シート1に氏名と金額を入力し、関数を使って人数と必要な印刷枚数を計算します。
- 印刷の設定をする際に、関数を使って必要な枚数の印刷を行いたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#01、02です。 >教えられたとおりの場所にコピーしました。 本当ですか? 標準モジュールシートにペーストしてませんか? ALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名配下のThisWorkBook右クリック」→「コードの表示」で表示される画面にペーストして下さい のとうりに貼り付けたのであれば、シートに戻って印刷すれば起動します。ThisWorkBookのモジュールシートと標準モジュールシートは別物ですよ。 >「コンパイルエラー」「End Sub」必要です はMacro2に対するEnd Subがないからでしょう。Workbook_BeforePrintというマクロ名は印刷前に実行するというお約束の名前ですから、勝手にマクロ名を変えたら動きません。ご自身で改変するなら、UPしたものの動作を確認してからにしてください
その他の回答 (2)
- zap35
- ベストアンサー率44% (1383/3079)
#01です。「枠は600人分あるが、実際に入力しているのが少ない人数の時、1ページ目からD10のページ数までを印刷したい」ということですか? 印刷ウィザードで印刷ページ範囲は指定可能なのですが、「毎回指定する煩雑さを省きたい」という要望でしょうか。 以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名配下のThisWorkBook右クリック」→「コードの表示」で表示される画面にペーストして下さい。貼り付けた後、シート1(集計)、シート2(短冊)のシート名を実際のものに書き換えてください。 短冊シートに戻り印刷すると、集計シートのD10セルの値までのページ数を印刷します。ただし集計シートのD10に「1以上の数字」以外の値が入っているときは短冊シートは印刷されませんのでご注意ください。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Const sh1 As String = "集計" '集計シート名をここに書く Const sh2 As String = "短冊" '短冊シート名をここに書く Dim P On Error GoTo end0 If ActiveSheet.Name = sh2 Then P = Worksheets(sh1).Range("D10").Value If IsNumeric(P) And P >= 1 Then Application.EnableEvents = False ActiveSheet.PrintOut from:=1, to:=Int(P) End If Cancel = True End If end0: Application.EnableEvents = True End Sub
補足
ありがとうございます。教えられたとおりの場所にコピーしました。 ところがどこをどうすれば実行されるのかがわかりません。 「集計」シートに、「金額を降順に並べ替える」というVBAがあります。それは、「Ctrl」+「n」キーで実行されるものです。 そこで、その後にコピーしてみました。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/4/16 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+n ' Sheets("集計").Select Range("B10:C610").Select Selection.Sort Key1:=Range("C11"), Order1:=xlDescending, Header:=xlGuess _ , OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub ーーーーーーーーーーーーーーーー Sub Macro2() ' ' Macro1 Macro ' マクロ記録日 : 2007/4/16 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+i 'ここから上は「並べ替え」の部分をコピーして、「Ctrl+i 」としました。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Const sh1 As String = "集計" Const sh2 As String = "短冊" Dim P On Error GoTo end0 If ActiveSheet.Name = sh2 Then P = Worksheets(sh1).Range("D10").Value If IsNumeric(P) And P >= 1 Then Application.EnableEvents = False ActiveSheet.PrintOut from:=1, to:=Int(P) End If Cancel = True End If end0: Application.EnableEvents = True End Sub Ctrl+iを押したところが「コンパイルエラー」「End Sub」必要です。と表示されます。 すみませんが、再度教えていただけないでしょうか。
- zap35
- ベストアンサー率44% (1383/3079)
補足要求です 「シート2(短冊)」は1ページに5枚の短冊が配置されているのでしょうか。600人ですから全部で120枚になりますね。 >120枚の紙が流れてしまいます が希望する結果でないなら、何がお望みなのでしょうか? 「必要枚数だけ印刷」の意味がわかりません。
補足
そうです。 A4紙縦にして、一枚に「一、金**円 ++++殿」と5人分並べます。 私たちの集落は600軒ほどありますが、全軒の方からご祝儀をいただけるとは限りません。毎年、7~80軒分は空白になってしまいます。 そこで、「何ページまで印刷してください」と設定したいのです。 =ROUNDUP(E1/5,0) までは出したのですが、それから先がわかりません。 「ファイル」-「印刷」で、枚数を設定すればいいことですが・・・!?
お礼
ありがとうございました。思い通りに成功しました。 私の集落は昔から、みこしの祝儀は習字用紙を縦に短冊に切って筆で「一、金 **万円 +++殿」と書いて神社の境内の張り出しています。 8年前に私が神社委員になったとき、その役目が回ってきました。筆が立たないので、PCですることでOKを貰いました。 8年経って、お役ごめんを願い出たところが、後継者を立てることが前提となりました。 神社委員は各地区の世帯主から選ばれます。当然?年金生活者ばかりの上、百姓、職人、商店主ばかりで「昔ワープロはやっていた」なんてのはいいほうで、現在特訓中です。 そこで、少しでも作業の軽減というところから、皆さんにしてみれば「あほらしい」ような質問になりました。
補足
ありがとうございました。 >シートに戻って印刷すれば起動します。 ここがわからなかったのです。 マクロとは、「何かのボタンをクリックするもの」だとばかり思っていました。そこで新たなボタンを作ったり、「ctrl」+何かを押してやっていたのです。まさか「通常の印刷ボタン」とは思いもよりませんでした。 「えい!ままよ」と、「プレビュー」の隣のボタンを押してみたところが、きちんと印刷枚数だけ印刷してくれました。成功しました。