Excel VBAを使用して計測器からデータラインを読み取りました。 私は、Excel Active Chart上でデータを読み込んだ後すぐに、そのデータを動的にプロットしたいと考えています。 私は5秒ごとにデータを待つ必要があり、その間にVBA Application.WaitコマンドかKernel32 Sleepコマンドを使ってスリープ状態にします。 どちらの場合でも、アクティブチャートは更新されません。完全なプロットは、最後の「スリープ」の後にのみ現れます。 ご意見をお待ちしております。ここで遅延付きExcelチャートの動的更新
は、画面が更新されないように簡略化されたコード
Sub New_Data(indx)
Dim x As Integer
While True
x = Read_Instrument(1)
y = Read_Instrument(2)
Cells(indx, 1) = x
Cells(indx, 2) = y
ActiveSheet.ChartObjects.Item(1).Activate
ActiveChart.FullSeriesCollection(1).XValues = "=Sheet1!$A$1:$A$" & indx
ActiveChart.FullSeriesCollection(1).Values = "=Sheet1!$B$1:$B$" & indx
indx = indx + 1
Sleep 5000 'Use the KERNEL32 Sleep function for 5000 milliseconds
Wend
End Sub
現在のアプローチで何が間違っているのかを「推測」するためのコードが必要です。このような情報があれば、 'Worksheet_Change'が道のりです。 –
解決しようとする前に、Chartオブジェクトに名前を付けて、アクティブチャートなどではなくハンドルを取得することをお勧めします。アクティブチャートは機能しますが、コードは扱いやすく、フォーカスの問題を回避します。また、 'Cells(indx、1)= x'は毎回最後に値を設定していますか?再度SheetCodeName.Cells(indx、1)= x'などのワークシートオブジェクトを持つCellへの呼び出しを修飾します。 – MacroMarc
VBAの新機能で、すべての高度な機能に精通していません。 (1)Chartオブジェクトのハンドルとハンドルの使い方、および(2)Cellsへの呼び出しをワークシートオブジェクトで修飾する方法について、いくつかの情報に感謝します。上記のコードを例として使用することができます。ありがとうございました! – DynamicChart