• ベストアンサー

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/17070)
回答No.3

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

taxolinjection
質問者

お礼

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

  • keithin
  • ベストアンサー率66% (5278/7941)
回答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