• 締切済み

エクセルVBAで作業進捗表を作成したいと考えてます。

エクセルVBAで作業進捗表を作成したいと考えてます。 C3の作業NO欄に任意の作業NO(桁数指定無)を入力するとA3にその時刻(開始時間)が自動入力されD3の状態欄に状態(プルダウンで終了が選択できる)を入力するとB3にその時刻(終了時間)が自動入力される。 この作業開始時間と終了時間の自動入力を3行目から100行目までを対象とするプログラムをりたいのですが、分かりません。 参考までに時間の表示形式は"h:mm"です。 またPCの使用環境はOSはXPでエクセル2003使用です。 ご存知の方がいましたらよろしくお願いします。

みんなの回答

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

シートモジュールのWorksheet_Changeイベントを利用しましょう。 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Columns(3)) Is Nothing Then If Target.Value <> "" Then Target.Offset(, -2).Value = Time() Else Target.Offset(, -2).ClearContents End If ElseIf Not Intersect(Target, Me.Columns(4)) Is Nothing Then If Target.Value = "終了" Then Target.Offset(, -2).Value = Time() Else Target.Offset(, -2).ClearContents End If End If End Sub 「ワークシートモジュール」や「Worksheet_Changeイベント」の意味や使い方が解らなかったら、ネットで調べてください。

pink-amigo
質問者

お礼

迅速なご回答ありがとうございます。 VBAの知識はありませんので、モジュールやイベントの意味を調べつつ試してみます。 取り急ぎお礼申し上げます。

  • durarara
  • ベストアンサー率47% (21/44)
回答No.1

細かいことを気にしないのならVBAを使わず、 関数だけでいいのではないでしょうか。 Aの列には =IF(ISBLANK(C3),"",NOW()) のような式と、あとは時間の書式。 Bの列は同様に =IF(ISBLANK(D3),"",NOW()) のような式と、時間の書式。 Dの列は入力規則のリストを使えばいいでしょう。 あとはこれを100行目までコピペするだけ。 たとえば、A3のセルを選択した状態で、 その枠の端を持って100行目までひっぱればOKです。 もしくはA3をコピーしたままの状態で、 Shiftを押しながらA100をクリックしてペースト。 このあたりは大丈夫でしょうか。 もちろんVBAを使ってマクロを書けばもっと細かい制御ができます。

pink-amigo
質問者

お礼

迅速なご回答ありがとうございます。 まさか関数で出来るとは思っていませんでした! 現在の表ではこの関数で十分ですが、今後関連した項目数の追加や細かい制御が必要になる時の事を考えVBAでのプログラミングを知りたいと思ってました。 しかし当面はこの関数で対応させて頂きます。

関連するQ&A

  • Excel で作業時間を自動計算

    過去の投稿を検索したのですが見つからなかったので質問します。Excel 2000で作業時間を自動計算させるという単純な処理です。 B1に開始時刻(8:15など)、C1に終了時刻(16:45など)を入力すると、D1にその時間が自動で入力されるようにするには、どういう関数をどう使えばよいのでしょうか。ただし、休憩時間は考える必要はありません。

  • Excelで勤務時間の管理表を作成したい

    Excel初心者です。 Excelに詳しい方、どうかご教示いただきたく思います。 現在、タイムカードを元に、Excelで勤務時間の管理をしようとしていますが、 思うように出来ず、大変困っております。 作成したい勤務管理表としては、添付の画像のような形式になるのですが、 出社時刻も退社時刻も、昼休憩の開始時間や昼休憩の時間の長さも 人によってまちまちで特殊な働き方のため、管理が難しいです。 そのため、添付画像のように、 タイムカードの出社時刻と退社時刻を記入するだけではなく、 実際に業務を行った時間の内訳がわかるよう、 午前と午後の開始時間と終了時間の枠を設け(E列~J列)、 それを元に勤務時間合計(K列)を出すようにしています。 そこで、勤務が午前~午後にまたがり昼休憩を挟む場合は、 午前の終了時間(G列)と午後の開始時間(H列)は手入力をするようにし、 それ以外は、タイムカードの出社時刻(C列)と退社時刻(D列)が、 午前の開始(E列)および午後の終了(J列)の欄に反映されるようにしたいです。 なおその際に、以下の4点を考慮して作成したいと考えています。 (1)出社時刻(業務開始時間)は30分単位で切り上げる。 (2)退社時刻(業務終了時間)は30分単位で切り下げる。 (3)タイムカードの出社時刻欄(C列)や退社時刻欄(D列)に何も入力されていない場合は、  午前・午後の開始欄・終了欄(E列~J列)は空欄にさせる。  同様に、午前だけの勤務時は、午後の開始欄・終了欄(H列~J列)を空欄、  午後だけの勤務時は、午前の開始欄・終了欄(E列~G列)を空欄にさせる。 (4)タイムカードの出社時刻(C列)に合せて、その時刻が午前ならば午前の開始欄(E列)に、  午後ならば午後の開始欄(H列)に、(1)で丸めた時間を表示させる。  同様に、退社時刻(D列)に合わせて、その時刻が午前ならば午前の終了欄(G列)に、  午後ならば午後の終了欄(J列)に、(2)で丸めた時間を表示させる。 (※但し、添付画像の6行目の例の様に、午前だけの勤務の際に、終了時間が12時を過ぎていた場合は、午前の終了欄(G列)に表示させる。) 現在は勤務時間合計(K列)だけ計算式を入れており、それ以外は全て手入力のため、 手間がかかるだけでなく、入力ミス等にも繋がるため、 出来るだけミスの少ない管理表を作成したいと思っています。 条件の多い質問で大変恐縮ではありますが、 なるべく簡単な方法を教えていただけると大変助かります。 どうぞ宜しくお願い致します。

  • エクセルにて作業時間(分で表示)を出すには?

    エクセルにて「開始時刻」と「終了時刻」から作業時間の値を出したいのですが、 「開始時刻」と「終了時刻」のセルにはTIME関数(例 =TIME(18,0,0))が入力されており、さらにそのセルの表示形式は[時刻]の[13時30分]と表示されています。 これらのセルから作業時間を算出して分で表示(例 30分)したいのですが、どうやったらいいのでしょうか?

  • 進捗状況の時間

    進捗状況をExcelにて計算したいんですが教えてください 例)作業開始 AM11:00、33時間20分後に作業が終了した場合、作業終了時間を計算で表す計算式と 例)作業開始 PM23:00、33時間20分後に作業が終了した場合、作業終了時間を計算で表す計算式知りたいのでよろしくお願いします。

  • エクセルでの表作成について(関数)

    添付した画像において、Dの「作業開始時刻」とEの「作業完了時刻」の数値を関数で表示したいです。 ・詳細 ある商品を作業者2人で製作します。 Bの発注番号に数字がある時に発注が来て、その次の時間に作業を開始します。 時間Cだけかかって作業が完了します。作業が完了した時点で次の発注が来ていれば、次の商品にすぐに取りかかります。 条件として、1つの商品に対しては1人しか作業できません。なので発注が1つの場合には2人目の作業者は待っている状態です。 また、2人とも作業をしていて発注がある場合は、どちらか早く終わったほうが作業につきます。 (Aの作業時間のところのA9:A10のように数字がダブっているのは同じ時間に2つ発注があった場合です) こんな感じなのですが・・・ わかりにくいかもしれませんが、よろしくお願いします。 図の具体的な解説をしますと、 時刻2に発注があり時刻3に1人目が作業開始し、10時間かかって時刻13に完了します。 時刻4の発注は1人目がまだ作業中なので、2人目が時刻5に開始して、7時間かかり時刻12に完了します。 発注番号3は2人とも作業中なので、早く作業が完了する2人目が、完了した時刻12に作業開始して、11時間かかり時刻23に完了します。 発注番号4は1人目が時刻13に完了するので、そこから開始して6時間かかり時刻19で完了します。

  • エクセルで日にちを入力すると矢印が自動的に引かれるとか。

    こんにちは。 エクセルで作業の進捗表を作成しています。 作業開始日と終了日を入力すると、 開始日~終了日が自動的に矢印として カレンダーに引かれる関数のような ものはありますか? ご存知の方、よろしくお願いします!

  • Excelでスケジュール表を作りたい。

    Excel2013で、セルに時刻を入力すると、横にある時刻の下に自動的に色付けがされるワークシートを作りたいのですが、どのようにしてよいか全くわかりません・・。 仕様としては、たとえば面談で一コマ単位15分刻みで行われるとします。 開始時刻と終了時刻を入力するだけで、時刻表示の下の区間に色が現れるようにしたいのです。エクセルの基本機能だけで実現したいです。 どなたか詳しい方、教えて頂きませんでしょうか?

  • ヤフオク出品:終了時間(作業開始時間・作業終了時間)

    ヤフオクの新画面の終了時間に関して。 作業(入力)開始時刻(分単位)を●:30に始めるとします。 作業(入力)終了時刻(分単位)が●:50に終わり、出品するのボタンをクリック。 終了時刻設定の欄の注意書きに ※実際の開始時間は出品が完了した時間となります と記載がありますが、 実際の終了時刻は出品画面を確認すると●:30(作業開始時刻)になることに気付きました。(10回ほど出品をしてすべてが作業開始時刻でした) 皆さんも同じでしょうか? (IE6とFirefoxと両方で確認しました) ※実際の開始時間は出品が完了した時間となります と注意書きがしてありますし・・・。 完了時刻(出品終了時刻)になっている方はいらっしゃいますか? 実際、皆さんがどうなのか知りたくて質問をしました。 ほかにはIE6で出品すると画像アップの段階で作業不能になることを確認しています。 (画像アップはすでにしている再出品の場合は難なく出来る) Firefoxでは作業不能になることなく出品可能でした。 ヤフオク側ではなく、当方のPC設定などに原因があるのでしょうか?

  • エクセル(Excel)で貸し出し管理表を作りたいのですが・・・

    エクセル(Excel)で貸し出し管理表を作りたいのですが・・・ 以下のようなことをしたいのですが、どのようにしたら良いでしょうか?教えてくださいませ。 1つのシート内の上部に、以下のような表があるとします。 ┌──────────┐ │貸出品 │ NO1 │ │──────────│ │貸出時刻│15:00│ │──────────│ │返却時刻│16:00│ └──────────┘ 下部には以下のような入力用の表があるとします。 ┌────────────────┐ │貸出NO│貸出時刻 │返却時刻 │ │────────────────│ │  1 │15:00│16:00│ │────────────────│ │  1 │16:30│17:30│←(A) │────────────────│ 貸し出し管理用のファイルを作りたいのですが、上記のように最初にNO1を貸し出した際に、 貸し出しNO欄には「1」を入力して、貸し出し時刻を入力します。 その後、返却された際には返却時刻を入力します。 次に、返却されてから30分後(16:30)に再度NO1を貸し出し・返却があったとします。 その際には(A)欄のように入力するわけですが、 入力された際に、上部の表が以下のようにかわるようにしたいのです。 ┌──────────┐ │貸  出│ NO1 │ │──────────│ │貸出時刻│16:30│ │──────────│ │返却時刻│17:30│ └──────────┘ つまり、貸し出し品NOが同じ品の場合、貸し出し、返却の動きがあった場合、 上部表には常に最新の状態が入ってくるようにしたいのです。 このようにしたいのですが、どのようにしたら良いでしょうか? 教えてくださいますようお願いいたします。

  • excelで出勤簿を作成しようと思っています。

    excelで出勤簿を作成しようと思っています。 自動で残業とかを計算できるようにしたいのですが教えてください。 excelの知識は関数をちょっと使えるようになってきた程度なので 詳しく教えていただけると助かります。 条件 ・通常勤務時間帯 8:30~17:30 昼休み 12:00~13:00 8時間勤務 ・休日勤務時間帯 土・日・祝日 8:30~17:30 昼休み 12:00~13:00 ・夜間勤務時間帯 22:00~5:00 休憩1時間 最大6時間 ・作業上8:30~14:00 昼休み 12:00~13:00等、変則の場合あり ・平日 開始時間 8:30 終了時間 19:30と入力すると 通常勤務 8時間 残業 2時間 計 10時間 平日 開始時間 8:30 終了時間 15:30と入力すると 通常勤務 6時間 計 6時間 休日 開始時間 8:30 終了時間 19:30と入力すると 休日勤務 8時間 休日残業 2時間 計 10時間 平日 開始時間 8:30 終了時間 23:30と入力すると 通常勤務 8時間 残業 4.5時間 深夜勤務 1.5時間 計 14時間 条件が足りなかったので補足させていただきます。 基本的に8:30~17:30の間に勤務していれば 通常勤務欄に何時間働いたかでるようにしたいです。 単位は30分単位でお願いします。 昼休みの1時間は8:30~13:00まではなしです。 なので8:30~17:30勤務すれば 通常勤務欄に8時間 8:30~17:00勤務すれば 通常勤務欄に7.5時間 という形でお願いします。 夜間1時間休憩は22:00~5:00までフルに働いた場合に 発生します。 など時間を入力すると自動で計算されるようにしたいのですが教えてください。

専門家に質問してみよう