
No.5ベストアンサー
- 回答日時:
こんばんわ a04sa026 さん
締め切っていないということはまだ何か解決していないのでしょうか?
解決したなら閉めておいてくださいね。
hallo-2007さんが20分も後に全く同じ回答とするとは思いませんでしたがまぁそれはおいて置いて。
実は前回の処理には致命的バグがあります。きっともう少し使えば分かることですが、複数行の処理に対応していません。二行以上のドラッグ(オートフィル)や二行以上選択した状態での"完了"などのペーストもしくは削除のたびにエラーします(使い物になりません)。
暇だったので対応版を作っておきました。どうぞお使いください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
If Cells(Target.Row, 4).Value = "完了" Then Status = Date Else Status = ""
If TypeName(Target.Value) <> "Variant()" Then Cells(Target.Row, 5).Value = Status Else _
For i = 0 To UBound(Target.Value) - 1: Cells(Target.Row + i, 5).Value = Status: Next
End If
End Sub
最初の記述とはもう別物に成ってしまいましたがよりベストな処理になっています。
追加処理・処理違い・補足等あればいってください。
お礼が遅くなってしまい申し訳ありません。
改良版まで教えていただいてありがとうございます。
まだまだ初心者で、argumentさんのソースを読むことが難しいですが、一歩ずつ勉強していきたいと思っておりますので今後ともよろしくお願いいたします。
本当にありがとうございました。
No.4
- 回答日時:
完了から・・・ではありませんが
完了なら日付、以外の場合は空白 です
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
If Target.Value = "完了" Then
Cells(Target.Row, 5).Value = Date
Else
Cells(Target.Row, 5).Value = ""
End If
End If
End Sub
お礼が遅くなってしまい申し訳ありません。
hallo-2007のおかげでタスク管理が速くなり、仕事の効率を上げることができました。
お二方ともに20ptとしたかったのですが、できないようでしたのでお許しください。
本当にありがとうございました。
今後ともよろしくお願いいたします。
No.3
- 回答日時:
こんばんわ a04sa026 さん
補足へ回答となります。
データを以下に書き換えてください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
If Target.Value = "完了" Then
Cells(Target.Row, 5).Value = Date
Else
Cells(Target.Row, 5).Value = ""
End If
End If
End Sub
どうでしょうか?貴方のお望みの結果になったはずです。
完了後日付が入り別な言葉にすれば削除されます。
今後のメンテナンスを考えるあなた自身がこの処理をもう少し理解しようとする必要があります。
この最初の宣言はワークブックの変更を監視します
Private Sub Worksheet_Change(ByVal Target As Range)
もしも変更位置(セル)がColumnが左から4(つまりD列)ならば処理する
If Target.Column = 4 Then
もしもその値が「完了」ならばColumn 5(つまりE列)
にdate(つまり今の日付)をいれる
If Target.Value = "完了" Then
Cells(Target.Row, 5).Value = Date
もしもそうでないならば現在の行のColumn 5(つまりE列)
の値を削除する。(Target.Rowには変更されたセルの行が格納されている)
Else
Cells(Target.Row, 5).Value = ""
End If
End If
End Sub
という処理です。これはかなり初歩的な構文です。
きっと検索したほうが早かったかも知れません。
No.2
- 回答日時:
D列に 完了 と言う文字が入力されたら E列に 日付を入れる。
VBAの力を借りるしか方法はないと思います。
シートの名前のタブを右クリックして コードの表示をクリック
VBエディターが起動しますので
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
If Target.Value = "完了" Then
Cells(Target.Row, 5).Value = Date
End If
End If
End Sub
をコピィして閉じる。試してみてください。
この回答への補足
ありがとうございます。
無事実行できました!!
VBAすごいですね。
これから、勉強していきたいと思います。
あと一点お願いがあるのですが、完了から、違う言葉に変更されると日付が消去されることは可能でしょうか?
お手数をおかけし申し訳ありませんがよろしくお願いいたします。
No.1
- 回答日時:
関数では、常時またはいずれ再計算のようなことをするので、そのブックを開いた日がいつも出てくるという理屈で、質問者の二ーズにあわない。
もうひとつTODAY()関数が常時当日日付をシステムから採るということがある。
ーー
だから質問者にはなじみが無いかもしれないが、エクセルVBAのD2セルの変更時を捉えて、(E列のセルに日付をセットする)処理を実行する
イベントという仕組みを勉強してください。その中のイワークシートのChangeのベントです。
WEBで「Change イベント VBA」照会すれば、記事が沢山出る。
http://oshiete.nikkeibp.co.jp/qa2932094.html
ご指摘ありがとうございます。
imogasiのご指摘で勉強不足を痛感しました。
これから勉強をしていきたいと思います。
ありがとうございました。
今後ともよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) Excelシフト表 固定シフトの自動変換化 1 2022/04/14 16:10
- その他(Microsoft Office) wordの差し込み印刷での日付表示 2 2023/08/15 16:51
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
- PDF I LOVE PDF利用 pdfからWordに変換について 回答お願いいたします。 無料のI LOV 1 2022/05/13 13:24
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) Excel ある複数列に数値を入力した際に、別の列に本日の日付を入力したいです 7 2023/03/01 23:31
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルで、日付を入力すると、別のセルに文字を自動的に表示させるようにするには。
Excel(エクセル)
-
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
-
4
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
5
☆Excelエクセルで入力した日の日付を表示したいです☆
Excel(エクセル)
-
6
Excel関数 「日付を入力したら値を返す」
Windows Vista・XP
-
7
◆ EXCEL自動入力日付を自動で変わらないようにする方法
Excel(エクセル)
-
8
データが入力されている隣のセルに当日日付と時刻を入力するExcel VBAプログラム
Visual Basic(VBA)
-
9
ExcelでTODAY関数を更新させない方法
Excel(エクセル)
-
10
エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります
Excel(エクセル)
-
11
A列に文字列または数字を入力したら隣接するD列に今日の日付が入るようにしたいです
Excel(エクセル)
-
12
エクセル セルに文字を入力したら別のセルに入力した時間が表示されるようにしたい
Excel(エクセル)
-
13
エクセル 特定の文字を入れると他のセルの色が変わる
Excel(エクセル)
-
14
リンク元の日付が空白の時リンク先セルも空白にしたい
Excel(エクセル)
-
15
対象セル内(複数)が埋まったら文字を表示させたい
Excel(エクセル)
-
16
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
17
E列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつく
その他(Microsoft Office)
-
18
【Excel】特定のデータが入っているセルの対応する日付を抽出する方法
Excel(エクセル)
-
19
本日の日付とマッチした列の値を抽出
Excel(エクセル)
-
20
日付を入力しカレンダーの該当する日に印をつけたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFS関数の場合で、セルが空白の...
-
未、済、完了の英訳は?
-
古典文法の完了「たり」「り」...
-
started か have started か?
-
日本語「のち」の使い方につい...
-
英語で短く表現するには・・(...
-
EXCEL:特定の文字が入力された...
-
has begunは継続?完了?
-
帰りにけりってどういうに訳す...
-
DMMの年齢確認のはいを押されて...
-
has had to..
-
He seems to~ ⇔It seems~の書...
-
【英語】It has been canceled
-
duringと現在完了形
-
「完了しています」使えますか
-
as soon as SVの時制について
-
had beenとwasの違いについて
-
日本語説明「~した方がいい」...
-
as soon as I've finished this...
-
come to doについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IFS関数の場合で、セルが空白の...
-
未、済、完了の英訳は?
-
has had to..
-
古典文法の完了「たり」「り」...
-
英語で短く表現するには・・(...
-
日本語「のち」の使い方につい...
-
started か have started か?
-
DMMの年齢確認のはいを押されて...
-
EXCEL:特定の文字が入力された...
-
has begunは継続?完了?
-
He has been dead for five yea...
-
as soon as SVの時制について
-
DISM.exeとSFC.exeをそれぞれ5...
-
「完了しています」使えますか
-
2回払いの2回目?
-
only economy seatsなぜ複数?
-
She has gone to Korea She had...
-
report~ingの用法を教えてくだ...
-
had beenとwasの違いについて
-
帰りにけりってどういうに訳す...
おすすめ情報