ここアマチュア - これはシンプルで、入手できません。変更があると、Excelは新しい行(最初の行のデータを含む)を作成します。
私のワークブックには、A2の3分ごとに更新されるタイマーがあります。 B2、C2、D2などでは、非常に高速なリフレッシュレートを持つプラグインから値が変動します。
A2の値が変更されるたびに(そこからの時間とともに)、B2、C2などの値を新しい行として「記録」するマクロが必要です。ここで(それは素晴らしい作品、タイマーマクロを除く)、私がこれまでにしたものである:
Private Sub Worksheet_Calculate()
Worksheet_Change Range("A2")
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
Application.EnableEvents = False
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("A2").Value
Application.EnableEvents = True
Application.EnableEvents = False
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("B2").Value
Application.EnableEvents = True
Application.EnableEvents = False
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("C2").Value
Application.EnableEvents = True
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("D2").Value
Application.EnableEvents = True
Range("E" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("E2").Value
Application.EnableEvents = True
Range("F" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("F2").Value
Application.EnableEvents = True
Range("G" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("G2").Value
Application.EnableEvents = True
Range("H" & Rows.Count).End(xlUp).Offset(1, 0).Value = Range("H2").Value
Application.EnableEvents = True
End If
End Sub
このコードの問題は、私はB2、C2などの値に置くことでプラグインを使用する場合、すべてが行くということですワイルドで新しい行の作成を開始します(これを自分自身で試してみたい場合は、=RANDBETWEEN(40,80)
を値の1つとして入力します。これは、私が直面する問題を完全にエミュレートします)。
私の質問に戻って、A2に変更が加えられたときにマクロが新しい行を作成するにはどうすればよいですか?
ご協力いただきありがとうございます。
注: 'Application.EnableEvents = True'または' False'が何をしているか、必要な数、場所と理由を調べる必要があります。 –
再計算イベントが発生するたびにchangeイベントを呼び出し、ターゲットを強制的にA2にします。したがって、セルが変わるたびにコードが実行されます。なぜあなたはこのコードを持っているのですか? Private Sub Worksheet_Calculate() Worksheet_Change Range( "A2") End Sub –
このコードを削除すると、何も記録されません。私はターゲットA2に強制しなければならないと思いますか?あなたは私が代わりに使ってみたいことは何ですか? @HarassedDad –