- ベストアンサー
EXELでセルに入力した年月日時刻を記録する方法
- EXELでセルに入力した年月日時刻を記録する方法について教えてください。
- Q&Aを参考にすると、B列に会社名、C列に部署名、D列に担当者名、E列に電話番号、F列にFAX番号を入力する形式の表を作成し、同じ行のG列からK列に変更年月日時刻を表示できます。
- 表の内容は項目欄から始まり、行数が増えるにつれて本文が追加されます。B列からF列の内容が変更された場合に、対応する行のG列からK列に変更年月日時刻が自動的に表示されます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range) dim h as range on error resume next for each h in application.intersect(target, range("B:F")) h.offset(0, 5) = now next end sub ファイルメニューから終了してエクセルに戻る B:F列に記入する。 G:K列は事前に適切にセルの表示形式を設定しておく #簡単のため「3行目以下に」の部分は省略しています #通常,ご相談の用途では「データを削除した」場合は処理をスキップするような手当をしておく事が多いですが,今回はデータ消去も変更として記録します。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
はて? 捕捉のご質問を頂きましたが, >F列にA列への入力年月日時刻が表示され, >もともと入力されていたF列のファックス番号が消えてしまいます。 回答したマクロではそのようなことは起こりません。 >B列からF列にする(A列の入力年月日時刻は表示しないようにする)には, >どのようなコードにしたら宜しいでしょうか。 最初からそのように回答していますが,いったいどういう事でしょうか?ご回答をお願いします。 キチンと回答を試してみて,上手くいかない所があれば具体的に状況を添えて追加ご質問ください。 >C列からG列にするには, コードを見れば一目瞭然ですが。 変更前: for each h in application.intersect(target, range("B:F")) 変更後: for each h in application.intersect(target, range("C:G")) とするだけです。 >B列と(C列を飛ばして)D列からG列にするには 変更後: for each h in application.intersect(target, range("B:B,D:G")) とします。
お礼
ありがとうございます。一点目の補足質問は,自分で色々いじっているうちに混同してしまったようです。教えていただいたコマンドをあらためて入力したところ,補足質問に記載したような現象はおこりませんでした。失礼しました。ほかの2点の補足質問にもご回答いただきありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
参考としているマクロのコードを次のようにすればよいでしょう。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column = 1 And Target.Column > 6 Then Exit Sub If Target.Value = "" Then Exit Sub Application.EnableEvents = False Target.Offset(, 5) = Now Application.EnableEvents = True End Sub なおG列からJ列には#####のような表示になりますが十分に列幅を広げればよいでしょう。
お礼
削除の場合はスキップされるところまで対応したものをご教示いただきありがとうございました。うまくいきました。また関連したご質問をさせていただくこともあるかも知れませんが,今後ともよろしくお願いします。
補足
すみません。 B列の会社名の前のA列に通し番号を入力することになりそうなのですが,現状でそれをしますと,F列にA列への入力年月日時刻が表示され,もともと入力されていたF列のファックス番号が消えてしまいます。セルに入力した年月日時刻を記録する対象を,B列からF列にする(A列の入力年月日時刻は表示しないようにする)には,どのようなコードにしたら宜しいでしょうか。 また,A列の通し番号の前に更にもう一列設ける必要が出てきた場合,A列の左に列を挿入すると,現状のA列がB列に,現状のB列がC列に・・・,現状のF列がG列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,C列からG列にするには,どのようなコードにしたら宜しいでしょうか。 最後に,B列とC列の間に,入力年月日時刻を記録・表示する必要のない「会社のひらがな読み」を入力する列を設けることになった場合,B列とC列の間に一列挿入して,現状のB列はB列のまま,現状のC列はD列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,B列と(C列を飛ばして)D列からG列にするには,どのようなコードにしたら宜しいでしょうか。
お礼
早々にありがとうございます。うまくいきました。ありがとうございます。また関連したご質問をさせていただくこともあるかも知れませんが,今後ともよろしくお願いします。
補足
すみません。 B列の会社名の前のA列に通し番号を入力することになりそうなのですが,現状でそれをしますと,F列にA列への入力年月日時刻が表示され,もともと入力されていたF列のファックス番号が消えてしまいます。セルに入力した年月日時刻を記録する対象を,B列からF列にする(A列の入力年月日時刻は表示しないようにする)には,どのようなコードにしたら宜しいでしょうか。 また,A列の通し番号の前に更にもう一列設ける必要が出てきた場合,A列の左に列を挿入すると,現状のA列がB列に,現状のB列がC列に・・・,現状のF列がG列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,C列からG列にするには,どのようなコードにしたら宜しいでしょうか。 最後に,B列とC列の間に,入力年月日時刻を記録・表示する必要のない「会社のひらがな読み」を入力する列を設けることになった場合,B列とC列の間に一列挿入して,現状のB列はB列のまま,現状のC列はD列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,B列と(C列を飛ばして)D列からG列にするには,どのようなコードにしたら宜しいでしょうか。