私は、大量のマクロを構築して、Excelに書き込むライブデータフィードを解析しました。マクロ自体はWorksheet_Change
イベントからアクティブ化されます。計画は、変化するデータをオフィスの壁のテレビに表示することで、リアルタイムで発生していることを認識しています。自動スクロールExcelデータ
私が苦労している問題は、このマクロが毎秒数回、数分に1回という速さで実行できることです。誰かがExcelシートをスクロールしなくても見えるようにこのデータを表示するにはどうすればいいですか?すべてのT(x)を落とす。もしそれがもっとT(15m)だったらそれはそれほど問題にはならないだろうが、それがT(1)である可能性があり、それはあまり実行可能ではない。私はGoogleだけでなくスタックのコミュニティを検索し、これに似た問題は見つけられません。何かご意見は?
**データは行単位でフィードされるので、Excelはスクロールダウンする必要があります。シートに
ワークシートの変更イベント
Option Explicit
Private Sub Worksheet_Change(ByVal target As Range)
If target.Rows(1).Cells.Count = 18 Then
On Error GoTo bm_Safe_Exit
'Turn off event handling so if anything is changed, sub procedure will not be triggered
Application.EnableEvents = False
Dim initialTradeStructure As String, finalTradeStructure As String, rawStructure As String
Dim nonLiveBlock As Boolean
Select Case LCase(target.Cells(1, 3).Value2)
'RFQs
Case "requestforquote"
'Do Nothing....no analysis of RFQs is necessary....will be filtered later
'Screen Trades
Case "globextrades"
rawStructure = target.Item(1, 2)
initialTradeStructure = Right(rawStructure, Len(rawStructure) - 4)
'Bulk of analaysis conducted in analsyis engine to keep worksheet code clean/short
finalTradeStructure = OptionStructureAnalysisEngine(initialTradeStructure, target)
'Block screen represented as Multileg in datafeed structure
Case "block"
If UCase(target.Item(1, 17).Text) = "TRUE" Then
nonLiveBlock = True
rawStructure = target.Item(1, 2)
initialTradeStructure = Right(rawStructure, Len(rawStructure) - 4)
'Bulk of analysis conducted in analysis engine to keep worksheet code clean/short
finalTradeStructure = OptionStructureAnalysisEngine(initialTradeStructure, target)
ElseIf UCase(target.Item(1, 17).Text) = "FALSE" And UCase(target.Item(1, 16).Text) = "FALSE" Then
'Live block trade
rawStructure = target.Item(1, 2)
initialTradeStructure = Right(rawStructure, Len(rawStructure) - 4)
finalTradeStructure = OptionStructureAnalysisEngine(initialTradeStructure, target)
Else
'Do Nothing....No analysis of single block legs is necessary
End If
End Select
If Not finalTradeStructure = "Nothing" And Not finalTradeStructure = "" Then
finalTradeStructure = finalTradeStructure & " | Trades " & target.Item(1, 9).Value2 & " " & "| " & target.Item(1, 10).Value2 & "x"
WTIAmericanOptionData.Cells(target.Row, 1) = finalTradeStructure
End If
End If
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
Private Sub ToggleEventHandler()
Application.EnableEvents = True
End Sub
さて、新しいデータ行を一番上に挿入して、スクロールするのを避けることができます。 – CyberClaw