Я был бы глубоко признателен за помощь в динамическом обновлении значения оси X в виде гистограммы Excel с помощью формул EITHER или в VBA-коде.
Я безуспешно пробовал следующее :
--- Создал именованный диапазон в 3 ячейках в листе (Q2, R2 и S2), которые всегда будут содержать случайно обновленные значения для:
Минимум по оси X,
Максимум по оси X и
Единицы основной оси X.
Затем введите следующееформула для каждого из соответствующих полей данных интерфейса интерфейса /Format.Axis/Axis.Options для всех этих 3 переменных ...:
= MAIN! XMIN
= MAIN! XMAX
= MAIN! XUNITS
... соответственно, где "MAIN" - это имя, которое я присвоил Sheet1.
Однако поля данных интерфейса диалога не сохраняют формулы, а просто возвращаются к тем данным, которые были там ранее.
АльтернативаВ частности, я попытался решить эту проблему с помощью VBA, используя следующие варианты алгоритма, привязанные к кнопке ActiveX-Control с именем «ReCalibrateButton».
Пожалуйста, помогите мне определить, какая из следующих итераций алгоритма наиболее эффективнаи ближе всего к точному;а также то, что отсутствует или неправильно, и препятствует его успешной работе:
(алгоритм # 1)
Private Sub ReCalibrateButton_Click()
Dim wsChart As Chart
Dim wsInput As Worksheet
Set wsChart = EAMPVPMSChart
Set wsInput = ThisWorkbook.Sheets("MAIN")
With wsChart
With .Axes(xlCategory)
.MinimumScale = wsInput.Range("Q2").Value
.MaximumScale = wsInput.Range("R2").Value
.MajorUnit = wsInput.Range("S2").Value
End With
End With
End Sub
При запуске этот алгоритм, к сожалению, выдает следующую ошибку = "CompileОшибка: переменная не определена "
Что я пропустил или сделал неправильно в этом алгоритме?
(Алгоритм # 2)
Private Sub ReCalibrateButton_Click()
Dim objCht As ChartObject
For Each objCht In ActiveSheet.ChartObjects
With objCht.Chart
' Value (X) Axis
With .Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("Q2").Value
.MaximumScale = ActiveSheet.Range("R2").Value
.MajorUnit = ActiveSheet.Range("S2").Value
End With
End With
Next objCht
End Sub
При запуске этоАлгоритм, к сожалению, выдает следующую ошибку = «Ошибка во время выполнения» -2147467259 (80004005) «Метод« MinimumScale »объекта« Ось »не выполнен»
Что я пропустил или сделал неправильно вэтот алгоритм?
(алгоритм # 3)
Private Sub ReCalibrateButton_Click()
Dim wsChart As Chart
Dim wsInput As Worksheet
Set wsChart = ThisWorksheet.Charts("EAMPVPMSChart")
Set wsInput = ThisWorkbook.Sheets("MAIN")
With wsChart
With .Axes(xlCategory)
.MinimumScale = wsInput.Range("Q2").Value
.MaximumScale = wsInput.Range("R2").Value
.MajorUnit = wsInput.Range("S2").Value
End With
End With
End Sub
При запуске этот алгоритм, к сожалению, выдает следующую ошибку = «Ошибка компиляции: переменная не определена»
Что я пропустил или сделал неправильно в этом алгоритме?
(Алгоритм # 4)
Private Sub ReCalibrateButton_Click()
Dim wksCharts As Worksheet
Dim oChrtObj As ChartObject
Set wksCharts = Worksheets("MAIN")
With wksCharts.ChartObjects("EAMPVPMSChart").Chart
oChrtObj.Chart.Axes(xlCategory).MinimumScale = ActiveSheet.Range("Q2").Value
oChrtObj.Chart.Axes(xlCategory).MaximumScale = ActiveSheet.Range("R2").Value
oChrtObj.Chart.Axes(xlCategory).MaximumScale = ActiveSheet.Range("S2").Value
End With
End Sub
При запуске этот алгоритм, к сожалению, выдает следующую ошибку = "Ошибка времени выполнения «91»: переменная объекта или переменная блокаle not set "
Что я пропустил или сделал неправильно в этом алгоритме?
(Алгоритм # 5)
Private Sub ReCalibrateButton_Click()
ActiveSheet.ChartObjects("EAMPVPMSChart").Activate
With Application.ActiveChart.Axes(xlCategory, xlPrimary)
.MinimumScale = wsInput.Range("Q2").Value
.MaximumScale = wsInput.Range("R2").Value
.MajorUnit = wsInput.Range("S2").Value
End With
End Sub
При запуске этот алгоритм, к сожалению,выдает следующую ошибку = «Ошибка компиляции: переменная не определена»
Что я пропустил или сделал неправильно в этом алгоритме?