• ベストアンサー

EXCELで自動印刷するマクロ?VBA?

マクロもVBAも自分で設定したことのない初心者です。よろしくお願い致します。 タイムカードのファイルを作っています。 時間等を入力するシートで「残業理由のセル」に文字を入れたら、 別のシートである「残業申請書」が印刷される というものを組みたいのですがどうしたらいいでしょう? 印刷されるだけでも十分ですが、 印刷前に「残業申請書印刷しますか?」と聞いてくれて「はい」「いいえ」と選択できればベストです。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 具体的に表の配置がどのようになっているのか判らないので、参考程度で・・・ 入力SheetのE列が「残業理由のセル」だとします。 そして印刷するSheet名は「残業申請書」となっているとしての一例です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Target.Column = 5 And Selection.Count = 1 Then Dim ws As Worksheet Set ws = Worksheets("残業申請書") '←Sheet名は適宜変更 If MsgBox("残業申請書を印刷しますか?", vbYesNo) = vbYes Then ws.PrintOut Else Exit Sub End If End If End Sub 'この行まで コード内の >If Target.Column = 5 部分がE列になりますので、実際の配置に基づいて適宜列番号は調整してみてください。 以上、参考になれば良いのですが・・・m(_ _)m

taxolinjection
質問者

補足

Target.Column = 5をTarget.Column = 27 を変えただけですが、うまくいきません。 どこが悪いのかわからりません。 うまくいけば、入力しただけでメッセージが出るんですか?

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.1です。 >Target.Column = 5をTarget.Column = 27 >を変えただけですが、うまくいきません。 とありますが、 Target.Column = 27 → 27列ですので「AA列」となります。 「残業理由のセル」がAA列であればちゃんとマクロは動くはずです。 今一度「残業理由のセル」の列番号を確認してみてください。 それと一つ気になるのが、「残業理由のセル」がAA列で間違いないのであれば 「27」が全角になっていますが、半角(IMEは「OFF」)で入力してみてください。 今度はうまく動けばよいのですが・・・m(__)m

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

 入力シートから、残業申請書フォームにデータを転記するのは、関数の、参照(=Sheet1!A1のような式)で可能でしょう。 しかし印刷指示は関数では出せません。 VBAプログラムをつくり、その実行が必要です。 マクロの記録というのがあるので、数日間はWEBでもその言葉で照会して、勉強してください。 質問は、それからの話です。

taxolinjection
質問者

お礼

できました!! セキュリティでマクロ無効になってました。 ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

「残業理由のセル」じゃマクロは書けませんので,仮にこれが「G2:G32」だとすると。 手順: 時間等を入力するシートでシート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim h as range  set h = application.intersect(target, range("G2:G32"))  if h is nothing then exit sub  if h.cells(1) = "" then exit sub  if msgbox("残業申請書印刷しますか?", vbokcancel) <> vbok then exit sub  worksheets("残業申請書").printout end sub ファイルメニューから終了してエクセルに戻る タイムカードを記入する。

関連するQ&A

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

  • エクセルのマクロで、印刷設定をしたいのですが可能でしょうか?

    エクセルのマクロで、印刷設定をしたいのですが可能でしょうか? お世話になっています。 会社での作業を少しでも効率よく出来ないものかと、以下のようなことを考えています。 エクセル2003を使用していますが、下記のような動作をするマクロを組むことは可能でしょうか? よろしくご教授ください。 Sheet1は、入力用のシートとして使っています。 Sheet2は、Sheet1に入力された商品データなどから、必要な箇所のみ反映されるように設定しています。 このシートは、罫線などが存在し表形式になっており、全てを印刷するとA4用紙6枚分になります。 そこで、Sheet1(入力用のシート)のJ18セルに文字が入力された場合は、Sheet2(印刷用のシート)の1ページだけを印刷したく、Sheet1のj27セルに文字が入力された場合は、Sheet2の2ページまで・・・ Sheet1のJ36に文字が入力された場合は、Sheet2の3ページまでという風に印刷範囲を設定しなくても印刷出来るようにしたいのです。 よろしくお願いします。

  • エクセルVBA チェックボックスについて

    VBA初心者です。 あるシート(セル)に作った入力用チェックボックスにチェック(TRUE)を入れたときに、別シートの特定の位置に楕円を引きたいのですが、どのようなやり方があるでしょうか。 使い方は入力用シートと印刷用シートを分けて、入力用シートのチェックボックスの状態で印刷用シートの特定のセルに選択したことがわかるように楕円をつけたいというものです。 よろしくお願いします。

  • エクセル【マクロ】について

    初心者です。 エクセルでシート1のA1からA10まで決めた文字(abc)という文字を検索して、検索文字があるセルの1行をコピーしてシート2のA1から下へ貼り付けるというマクロ(VBA)を作成したいと考えています。 詳しい方、よろしくお願いします。

  • エクセルのマクロについて

    エクセルのマクロ初心者です。 マクロを使用して印刷プレビューが見れるようにしたいです。 vlookup関数を使いsheet1に入力し、sheet2,sheet3,sheet4、sheet5へデータを反映させています。 sheet1に入力画面を作成してあり、セルA2~A13に入力すればsheet2へ、セルA17~A28はsheet3へ、セルF2~F13はsheet4へ、セルF17~F28はsheet5へデータを反映する作りです。 sheet2~sheet5はフォーマットを作成してあり、印刷するとA4で2枚印刷されるようになっています。 入力画面で入力した内容によってはA4用紙1枚ですむこともあります。(A1~M15でA4用紙一枚、A1~M31でA4用紙2枚) 教えて頂きたいことは。 ・入力画面にマクロのボタンを設置し、ボタンをクリックすると印刷プレビューが表示されるようにしたいです。 ・sheet2用、sheet3用、sheet4用、sheet5用、とボタンを設置したい。 ・印刷プレビュー後に、(実際には印刷後)に入力画面を表示したい。 ・印刷プレビューが見たいのはsheet2,sheet3,sheet4,sheet5です。 以上です。 説明が下手ですみません><

  • エクセルマクロ 印刷「105~110」などの自動連続印刷の仕方

    エクセルです。今、Vlookup関数で別のシートから呼び出して表示しています。例えば、シート1のA4に「101」と入力するとシート2を参照してデータをもってくるようになってます。 そして、102、103~と打つことによって変化していきます。 また、 101~131まで、一気に自動印刷するマクロはできました。 同様に、 201~231まで、一気に印刷するマクロはできました。 そこで、教えて欲しいのです。 105~110など途中のところを連続印刷するためのマクロはどのようになりますか。 もちろん、105~110などと打つセルをつくる必要はあると思いますが・・・。お願いしますm(_)m

  • Excelのマクロ初心者です

    Excelのマクロ初心者です 同じBookでセルA1に”1”が入力されているSheetのみ全て印刷する マクロを教えてください!

  • エクセルマクロ超初心者で、悩んでます。

    エクセルマクロ超初心者で、悩んでます。 どなたか助けてください。 悩みはこうです↓ データ用のワークシートのセルに数字、文字が入力してあります。 セルの数値同士の引き算で算出した数値を列数として、別の印刷用のワークシートのセル番地(列、行)に、「文字」を表示したいのです。 日本語で書いちゃうと ワークシート「印刷用」の、あるセル番地(ワークシート「データ用」から、列数はJ1‐A1、行数はのB1の数値)に ワークシート「データ表」のC1の文字 を出力せよ です。 Worksheets選択がうまくいきません CellsかRangeを使うのかと思いますが、引き算する表現がわかりません・・ 文例があれば、稚拙ながら活用できるかなと思います。 よろしくお願いします!

  • マクロVBAで印刷

    マクロはまったくの初心者です。 エクセルで入力シートにて明細書を作成したものを、出力シートに反映させ、 マクロで作成した印刷ボタンをクリックすると、1枚目には「お客様控え」・2枚目には「支店控え」・ 3枚目には「当社控え」となる様なマクロが出来てます。 これを「当社控え」だけを印刷するように変更したいんです。 出力シートには「お客様控え」としかなってないのに、印刷するとその3枚が印刷されます。 他の人が作ったもので、私は分からないためにマクロの変更・修正が出来ません。説明も分かりずらくて申し訳ございません。 どなたか分かる方教えてください。

  • excelでマクロを使用した連続印刷について

    A2セルから通し番号、氏名、住所等のデータが入力されている「データ」シートがあり、 VLOOKUPを使用してB3セルに「データ」シートのA列にある「通し番号」を 入力すると氏名・住所等が反映される「印刷」シートがあります。 例えば「データ」シートのC列(住所)に「東京都」という文字列が 含まれている宛名のみを連続で印刷したい場合、 どのようなマクロになりますでしょうか? (マクロ内に「東京都」と指定する方法と、 シート内の特定セルに入力した文字列で指定する方法が ありますでしょうか?) wordでの差し込み印刷や、宛名ソフト等の使用は考えておりません。 よろしくお願いいたします。

専門家に質問してみよう