私はいくつかのシンプルなVBAコードを書いて、Excelドキュメントの多くの時系列チャートのx軸を更新しました。ループの最初の繰り返し後に入力ボックスの変数がnullに切り替わるのはなぜですか?
私が抱えている問題は、ループの最初の反復の後で、start_dateとend_date変数が ""になることです。なぜ変数が消えているのか分かりません。マクロは最初のグラフでは機能しますが、可変の問題のためにそれ以降はクラッシュします。
Sub xaxis_reset()
Dim start_date As Variant
Dim end_date As Variant
Dim ws As Integer
Dim obj As Integer
start_date = InputBox("Start Date")
end_date = InputBox("End Date")
ws = ActiveWorkbook.Worksheets.Count - 2
For w = 1 To ws
obj = Worksheets(w).ChartObjects.Count
For Z = 1 To obj
Worksheets(w).ChartObjects(Z).Activate
With ActiveChart
.Axes(xlCategory).MinimumScale = start_date
.Axes(xlCategory).MaximumScale = end_date
End With
Next Z
Next w
End Sub
が
どのようにマクロを呼び出しますか? wとZは定義されていません。この問題は、チャートのアクティブ化によって発生する可能性があります。 –
@VincentG私はチャートのアクティブ化を取り除こうとしましたが、私はまだ同じ問題を抱えています。私の結論は、これは優れたバグです。私が実行しているとき、コードは無作為に終了します。私はコードをステップ実行している間は閉じていますが、コードがクラッシュしたときに閉じ、「デバッグ」または「終了」をクリックします。何らかの理由で、Excelは本当に上記のコードを嫌う。 – Jarom
なぜチャートをアクティブにしてから軸を設定するのですか?あなたは単に "With Worksheets(w).ChartObjects(Z)"と言うことができます。あなたの変数をリセットする必要があるものは何も見ていません。あなたは彼らがループ内でリセットされていると確信していますか? –