アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロもVBAも自分で設定したことのない初心者です。よろしくお願い致します。

タイムカードのファイルを作っています。
時間等を入力するシートで「残業理由のセル」に文字を入れたら、
別のシートである「残業申請書」が印刷される
というものを組みたいのですがどうしたらいいでしょう?

印刷されるだけでも十分ですが、
印刷前に「残業申請書印刷しますか?」と聞いてくれて「はい」「いいえ」と選択できればベストです。

A 回答 (4件)

こんばんは!


具体的に表の配置がどのようになっているのか判らないので、参考程度で・・・

入力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

この回答への補足

Target.Column = 5をTarget.Column = 27
を変えただけですが、うまくいきません。
どこが悪いのかわからりません。

うまくいけば、入力しただけでメッセージが出るんですか?

補足日時:2011/07/05 15:08
    • good
    • 0

No.1です。



>Target.Column = 5をTarget.Column = 27
>を変えただけですが、うまくいきません。

とありますが、
Target.Column = 27 → 27列ですので「AA列」となります。
「残業理由のセル」がAA列であればちゃんとマクロは動くはずです。

今一度「残業理由のセル」の列番号を確認してみてください。

それと一つ気になるのが、「残業理由のセル」がAA列で間違いないのであれば
「27」が全角になっていますが、半角(IMEは「OFF」)で入力してみてください。

今度はうまく動けばよいのですが・・・m(__)m
    • good
    • 0

 入力シートから、残業申請書フォームにデータを転記するのは、関数の、参照(=Sheet1!A1のような式)で可能でしょう。


しかし印刷指示は関数では出せません。
VBAプログラムをつくり、その実行が必要です。
マクロの記録というのがあるので、数日間はWEBでもその言葉で照会して、勉強してください。
質問は、それからの話です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/07/07 02:54

「残業理由のセル」じゃマクロは書けませんので,仮にこれが「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

ファイルメニューから終了してエクセルに戻る
タイムカードを記入する。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!