私の問題は次のとおりです。
900 から 0 までのカウントダウンでリアルタイム データ サーバーを実行しています。カウントダウンが 5 になったら、範囲 (B2 から B61) をシート (RTD_NEWS) にコピーし、値として新しいワークシートに貼り付けます。
問題は、残り時間が 5 になったときにマクロがこれを自動的に実行しないことです。セルが 5 のときに実行を押すと、正しく実行されます。
私は 2 つのマクロを作成しました。最初のマクロは必要に応じて実行する必要があり、2 番目のマクロはセルを手動で変更した場合に機能しますが、RTD リンクを使用しない場合に機能します。
最初のマクロは次のとおりです。
Function Test()
Dim TimeRemaining As Long
TimeRemaining = ActiveWorkbook.Sheets("RTD_NEWS").Range("D2")
If TimeRemaining = 5 Then
Application.Goto ActiveWorkbook.Sheets("RTD_NEWS").Range("B2", "B61")
Selection.Copy
Worksheets.Add
Application.Goto ActiveSheet.Range("B21")
ActiveCell.PasteSpecial (xlPasteValues)
Application.Wait Now + TimeValue("00:00:06")
End If
End Function
2 番目のマクロは次のとおりです。
Sub auto_open()
' Run the macro DidCellsChange any time a entry is made in a
' cell in Sheet1.
ThisWorkbook.Worksheets("RTD_NEWS").OnEntry = "DidCellsChange"
End Sub
Sub DidCellsChange()
Dim KeyCells As String
' Define which cells should trigger the KeyCellsChanged macro.
KeyCells = "D2"
' If the Activecell is one of the key cells, call the
' KeyCellsChanged macro.
If Not Application.Intersect(ActiveCell, Range(KeyCells)) _
Is Nothing Then KeyCellsChanged
End Sub
Sub KeyCellsChanged()
Dim Cell As Object
For Each Cell In ActiveWorkbook.Sheets("RTD_NEWS").Range("D2")
If Cell = "200" Then
Application.Goto ActiveWorkbook.Sheets("RTD_NEWS").Range("B2", "B61")
Selection.Copy
Worksheets.Add
Application.Goto ActiveSheet.Range("B21")
ActiveCell.PasteSpecial (xlPasteValues)
Application.Wait Now + TimeValue("00:00:06")
End If
Next Cell
End Sub