以下のコードでは、「chrono」という名前のセルの範囲でダブルクリックイベントをキャッチしています。ターゲットセルに値が含まれている場合は、右側の次のセルに適用される数式にすでに含まれている値と連結します。のようなものを取得したいのです=0,1+0,1
が、セルは空のままです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
Dim rng As Range
Set rng = Range("chrono")
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, rng) Is Nothing Then
Application.EnableEvents = False
Cancel = True 'stop the edit mode
With Target
If .Value = "" Then
.Value = Time
Else:
Dim nextCell As Range
Set nextCell = ActiveCell.Offset(0, 1)
If nextCell.Formula = "" Then
nextCell.Formula = "=" & ((Time - .Value) * 24 * 60 * 60)
Else:
nextCell.Formula = nextCell.Formula & "+" & ((Time - .Value) * 24 * 60 * 60)
End If
.Value = ""
End If
End With
End If
Application.EnableEvents = True
End Sub
編集
不明で申し訳ありませんが、私の英語はあまり上手ではありません。2回のダブルクリック間の経過時間を計算したい(したがって、既存のデータはありません)。私はこれを行うことでこのタスクを達成することができます:
nextCell.Value = Time - .Value
さらに、これを行うことで複数の入力を合計することができます。
If nextCell.Value = "" Then
nextCell.Value = Time - .Value
Else:
nextCell.Value = nextCell.Value + Time - .Value
nextCell.Value
問題は、すべての入力を追跡したいのに、すべての新しい入力が上書きされることです。最初のコードサンプルで公開されている式()を使用しようとし=t1+t2
ましたが、ダブルクリックしても結果が得られません。
編集
ストップウォッチを作ろうとしています。私の目標は、タスクに費やされた時間を計算することです。物事をさらに明確にするために、これが私がやろうとしていることです。
- 2つのセル:A1とB1
- A1をダブルクリックします
- A1値:現在時刻
- A1をダブルクリックします
- B1式: "="&(現在の時刻-A1値)
- A1値:空
- 2、3、4を繰り返す
- B1式:B1式& "+"&(現在の時刻-A1値)
- 2、3、4を繰り返す
- 等々...