- 締切済み
エクセルVBAで作業進捗表を作成したいと考えてます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nattocurry
- ベストアンサー率31% (587/1853)
シートモジュールの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イベント」の意味や使い方が解らなかったら、ネットで調べてください。
- durarara
- ベストアンサー率47% (21/44)
細かいことを気にしないのならVBAを使わず、 関数だけでいいのではないでしょうか。 Aの列には =IF(ISBLANK(C3),"",NOW()) のような式と、あとは時間の書式。 Bの列は同様に =IF(ISBLANK(D3),"",NOW()) のような式と、時間の書式。 Dの列は入力規則のリストを使えばいいでしょう。 あとはこれを100行目までコピペするだけ。 たとえば、A3のセルを選択した状態で、 その枠の端を持って100行目までひっぱればOKです。 もしくはA3をコピーしたままの状態で、 Shiftを押しながらA100をクリックしてペースト。 このあたりは大丈夫でしょうか。 もちろんVBAを使ってマクロを書けばもっと細かい制御ができます。
お礼
迅速なご回答ありがとうございます。 まさか関数で出来るとは思っていませんでした! 現在の表ではこの関数で十分ですが、今後関連した項目数の追加や細かい制御が必要になる時の事を考えVBAでのプログラミングを知りたいと思ってました。 しかし当面はこの関数で対応させて頂きます。
お礼
迅速なご回答ありがとうございます。 VBAの知識はありませんので、モジュールやイベントの意味を調べつつ試してみます。 取り急ぎお礼申し上げます。