エクセルで日付と時間を自動入力する
- エクセルでF13~P13に何か入力したら、その下のセルのF14~P14に日付と時間が自動入力される。
- 日付を削除するかどうかのメッセージボックスを出さずに、入力するセルのデータを削除した時に日付も削除する方法を知りたい。
- Worksheet_Changeイベントを使用して、条件に応じて日付と時間を自動入力するか削除することができる。
- ベストアンサー
エクセルで日付と時間を自動入力する
エクセルでF13~P13に何か入力したら、その下のセルの F14~P14に日付と時間が自動入力される という質問、回答を見つけました。 これで日付を削除するかどうかのメッセージボックスを出さずに 入力するセルのデータを削除した時に日付も削除するには どの部分を削除すれば良いですか? Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim mRng As Range Application.EnableEvents = False For Each mRng In Target If Not Intersect(mRng, Range("F13:P13")) Is Nothing Then If mRng.Value = "" Then If MsgBox("日付も削除しますか?", vbYesNo + vbDefaultButton2) = vbYes Then mRng.Offset(1, 0).Value = "" End If Else mRng.Offset(1, 0).Value = Format(Now, "yyyy/mm/dd"" ""hh:mm:ss") End If End If Next mRng Application.EnableEvents = True End Sub
- mikurai
- お礼率100% (1/1)
- Excel(エクセル)
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
If MsgBox("日付も削除しますか?", vbYesNo + vbDefaultButton2) = vbYes Then mRng.Offset(1, 0).Value = "" End If を mRng.Offset(1, 0).Value = "" だけにしてください。
関連するQ&A
- エクセルでデータ入力された日付と時間を自動入力する
前回ご質問にて 1行目に何か入力したら2行目に日付と時間を自動入力する というVBAを教えて頂きました。 ------------------------ Private Sub Worksheet_Change(ByVal Target As Excel.Range) Application.EnableEvents = False If Target.Row = 1 Then Target.Offset(1, 0).Value = Format(Now, "yyyy/mm/dd"" ""hh:mm:ss") End If Application.EnableEvents = True End Sub ------------------------ これを1行目に何か入力したら2行目に日付と時間ではなく セル指定を行いたいのです。 例)F13~P13に何か入力したら、その下のセルの F14~P14に日付と時間が自動入力される という作りです。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルでデータ入力された日付と時間を自動入力する
A1をA2に、B1をB2に、C1をC2に・・・ A1に入力したらA2に更新日付が入るという様に行いたいのですが、 ---------------- Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim r As Range For Each r In Target If r.Column = 1 Then r.Offset(0, 1).Value = Format(Now, “yyyy/mm/dd”“ ”“hh:mm:ss”) End If Next r End Sub ---------------- これをどのように改編したらいいのでしょうか?
- ベストアンサー
- Excel(エクセル)
- VBA/エクセルの日付入力でYYYYMMDD
エクセル2013です。 特定のセルに日付を入力してもらうのですが、人によりさまざまな入力をされてしまいます。 どんな入力でも日付であれば、シリアル値なのであとからなんとかなるのですが、困るのはYYYYMMDDの連続数字、例えば今日なら20140712と入力されてしまうことです。 入力規則で排除したいのですが、それは許されず、20140712も日付として扱わなければならなくなりそうです。 そこでマクロで対処しようと以下のコードを書きました。 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address(0, 0) Case "D2", "F2", "C4" If Target.Value = "" Then Exit Sub If IsDate(Target.Value) Then Target.NumberFormatLocal = "yyyy/m/d" Else Application.EnableEvents = False Target.Value = CDate(Format(Target.Value, "@@@@/@@/@@")) Application.EnableEvents = True End If Case Else Exit Sub End Select End Sub これで最初はうまくいき、20140712と入力されても、ちゃんと2014/7/12になります。 ところが、同じセルに再度YYYYMMDD数字形式で入力すると、実行時エラー「オーバーフローしました」になってしまいます。多分セルが、YYYYMMDDの数字をシリアル値として見てありえない日付と判断したのだと思います。 どのようにコードを修正したらよろしいでしょうか? もう1点、日付をYYYYMMDDの連続数字で入力することは普通、エクセルではあまり見たことないですが、これって一般的な方法なのでしょうか?
- ベストアンサー
- Excel(エクセル)
- エクセル 数値結果の値によって日付を入れたい
シート2の2列目にOKが入ると、シート1のC列にOKが入り、更新された日がB列に表示されるようにしたいです。 C列に手入力でOKと入力すればB列に日付が表示されるのですが、C列をVLOOKで呼ぶようにしたら表示されなくなってしまいました。 どのように修正していいのか分かりません。 お教えいただければと思います。よろしくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Dim TgRng As Range Set TgRng = Intersect(Range("C1:C2000"), Target) If Not TgRng Is Nothing Then Application.EnableEvents = False For Each Rng In TgRng If Rng.Value = "OK" Then Rng.Offset(, -1).Value = Date End If Next Application.EnableEvents = True End If Set TgRng = Nothing End Sub
- ベストアンサー
- Excel(エクセル)
- 日付を入力すると何故か今日の日付に
いつもお世話になります。 WINDOWS7 EXCELL2010 です。 参照図で言うと、 B2 に例えば 1/4 と入力すると 今日の日付になります。 何故なんでしょうか。 影響しているのかどうかわかりませんが参考に下記のようなコードを使用しています。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row >= 2 And Target.Address = Cells(Rows.Count, "C").End(xlUp).Address Then Target.Offset(0, -1).Value = Date End If Dim c As Integer If Target.Column <> 2 Then Exit Sub If Target.Value = "" Then c = 0 Else On Error GoTo line Select Case Month(Target.Value) Case 1: c = 46 Case 2: c = 4 Case 3: c = 39 Case 4: c = 6 Case 5: c = 7 Case 6: c = 8 Case 7: c = 43 Case 8: c = 3 Case 9: c = 44 Case 10: c = 24 Case 11: c = 40 Case 12: c = 17 End Select End If Target.Offset(0, -1).Interior.ColorIndex = c Target.Offset(0, -1).Font.ColorIndex = IIf(c = 1, 2, 0) Exit Sub line: Target.Offset(0, -1).Interior.ColorIndex = 0 Target.Offset(0, -1).Font.ColorIndex = 0 End Sub
- 締切済み
- その他MS Office製品
- 入力した日付の表示
このコーナーを閲覧して勉強をさせていただいています。 A1に文字を入力すると、その日付を表示させるにはという質問に対して、次のような回答がありました。 早速利用させて貰おうかと思っているのですが、これで、任意の場所(H1)に表示させるにはどうしたらいいのでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub Target.Offset(1).Value = Date End Sub 横から口を出すような格好になってすみません。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロコードについて
お世話になります。 下記コードで、セルごとにクリアをすると、エラーなくうごくのですが、セルをまとめてセルを消すと実行時エラー13型が一致しません。とでてIf Target.Value = "" Thenがだめだよとでてしまいます。 どなたか、回避の方法をご教授ください。 宜しくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B2:E2,G2:J2")) Is Nothing Then Exit Sub If Target.Value = "" Then Exit Sub x = Target.Value With Application .ScreenUpdating = False .EnableEvents = False .Undo 'Range("B2").Value = x + Z Z = Target.Offset(1, 0).Value y = Target.Value Target.Value = x + y .EnableEvents = True .ScreenUpdating = True End With Target.Offset(1, 0).Value = x + Z End Sub
- ベストアンサー
- Excel(エクセル)
- このマクロあっていますでしょうか?よろしくお願いいたします。
★sheetA Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$14" And Target.Address <> "$C$19" _ And Target.Address <> "$F$19" Then Exit Sub If Target.Address <> "$R$14" And Target.Address <> "$S$14" _ And Target.Address <> "$T$19" Then Exit Sub Application.EnableEvents = False With Sheets("B") .Range("F14").Value = Range("C14").Value .Range("F17").Value = Range("C19").Value .Range("F20").Value = Range("F14").Value .Range("F23").Value = Range("F19").Value End With With Sheets("C") .Range("F13").Value = Range("R14").Value .Range("F14").Value = Range("S14").Value .Range("F18").Value = Range("T19").Value End With Application.EnableEvents = True End Sub ★sheetB Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$14" And Target.Address <> "$F$17" _ And Target.Address <> "$F$23" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("C14").Value = Range("F14").Value .Range("C19").Value = Range("F17").Value .Range("F19").Value = Range("F23").Value End With Application.EnableEvents = True End Sub ★sheetC Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$13" And Target.Address <> "$F$14" _ And Target.Address <> "$F$18" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("R14").Value = Range("F13").Value .Range("S14").Value = Range("F14").Value .Range("T19").Value = Range("F18").Value End With Application.EnableEvents = True End Sub
- ベストアンサー
- オフィス系ソフト
- Excel VBAでの日付の表示形式指定について
以下のサイトを参考に、B列に入力するとC列に自動で日付が挿入されるようなVBAを作成し、日付を「07/19」という表示形式にしたかったので、Format関数で指定しました。 http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=34979&rev=&no=0&P=R&KLOG=226 -----VBA------------ 'B列入力で日付自動挿入 Private Sub Worksheet_Change(ByVal Target As Range) Dim RR As Range Dim R As Range Set RR = Intersect(Target, Range("B:B")) If RR Is Nothing Then Exit Sub Application.EnableEvents = False For Each R In RR If R.Value <> "" Then R.Offset(, 1).Value = Format(Date,"mm/dd") Else R.Offset(, 1).ClearContents End If Next Application.EnableEvents = True End Sub --------------------- うまく日付が挿入されるのですが、なぜか表示形式が 「7月19日」と日本語表記になってしまいます。 「セルの書式設定」で「mm/dd」と設定すればいいのかもしれませんが、VBAで設定する方法はないのでしょうか?
- ベストアンサー
- Visual Basic
- エクセル ダブルクリックで処理日の入力
お世話になります。 先般、お教え頂きました別のダブルクリックイベントプロシージャと 下記の当日の日付を入力するという処理を同じシート上で行いたいのですが、VBエディターにどのように記述したら良いかわかりません。 当方、かなりの初心者です。 よろしくご教授くださいませ。 【新しく加えたい処理】 Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("b4:C999")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Date Cancel = True End If End Sub 【もともと使っている処理】 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("h1:h999")) Is Nothing Then With Target If .Value = "" Then .Value = "有" ElseIf .Value = "有" Then .Value = "無" ElseIf .Value = "無" Then .Value = "" End If End With ElseIf Not Intersect(Target, Range("i1:i999")) Is Nothing Then With Target If .Value = "" Then .Value = "要" ElseIf .Value = "要" Then .Value = "不要" ElseIf .Value = "不要" Then .Value = "" End If End With End If End Sub よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
できました。ありがとうございました。