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