うちンち

パソコンと家族と、ときどき爆弾。

セルの更新日(時)を記録する

2009-04-19 | エクセルおぼえがき
この間このカテゴリが役立った。
そのとき思いついた、セルの更新日(時)を別のセル(隣の列、など)に記載するテクニックをアップしておく。
たとえばデータ入力で、同じ行でも更新にタイムラグのある場合に有効。何しろ確認のとき、更新日の記載された列にフィルタをかければ、その日に更新されたセルのみを抽出できるので。

VBAを起動させ、対象シートに以下Privateからend subまでをコピーし、必要な部分は入力しなおす

---------------------

Private Sub Worksheet_Change(ByVal Target As Range)

'特定列(ここでは仮にA列)のセルの内容変更があった場合に、隣の列に更新日時を記載する

Dim crow As Integer  '内容変更セルの列番号を格納する変数
Dim ccolumn As Integer  '内容変更セルの行番号を格納する変数

'変更したセルではなく、変更を確定したときのセルがActiveCellとして認識されるので、カーソルの移動方向にあわせて変更セルを特定する
 Select Case Application.MoveAfterReturnDirection

  Case xlToRight '右移動の場合
   crow = ActiveCell.Row
   ccolumn = ActiveCell.Column - 1

  Case xlDown '下移動の場合
   crow = ActiveCell.Row - 1
   ccolumn = ActiveCell.Column

  Case Else 'それ以外の場合→たぶん上・左は日本人は使わないだろうので対象外とする
   MsgBox "リターンキー押下時のカーソルの移動方向は、" & Chr(13) & "右か下のみにしてください", vbOKOnly + vbExclamation
   Exit Sub

 End Select

 'ここから、時刻と日付を入れる処理

 If crow > 1 And ccolumn = 1 Then 'crow > 1 は、最初の1行(おそらく項目名となる)を無視するため
 ccolumn = 1 は、変更を記録する対象列としてA列を指定するため。列番号はコレ以降、B=2、C=3と続くので、判定したい列に応じた必要な数字を入れる


  Cells(crow, ccolumn + 1) = Date & " " & Time '更新日を入れるセルに日時を代入
 例として対象列の1列右隣を指定。必要に応じて「+1」の部分の数字を変える


 End If

End Sub

---------------------

日時「Date & " " & Time」の部分は、日付だけなら「Date」のみ、時刻だけなら「Time」だけでよい。

最新の画像もっと見る