Формула в VBA и будет использоваться в VBA - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь актуализировать свою таблицу exel, я использую следующий код:

ActiveChart.Axes(xlValue, xlPrimary).MinimumScale = Sheets("Data").Range("K5").Value

Я хочу использовать значение K5 в коде (не хранить в ячейке)

поэтому я сделал следующее:

Dim MaxY As Integer

MaxY = ("=MAX(K3+50,ROUNDUP(IF(OR(ISBLANK('Station info'!C12),ISBLANK('Station info'!C8)),MAX(ABS(MIN(Data!B3:B10000)),ABS(MAX(Data!B3:B10000))),IF(('Station info'!C8-MAX(ABS(MIN(Data!B3:B10000)),ABS(MAX(Data!B3:B10000)))-MAX(Data!B3:B10000)+MIN(Data!B3:B10000))<'Station info'!C12,'Station info'!C8-'Station info'!C12+1,MAX(ABS(MIN(Data!B3:B10000)),ABS(MAX(Data!B3:B10000))))),0))") 


 ActiveChart.Axes(xlValue, xlPrimary).MinimumScale = Sheets("Data").MaxY.Value

end sub 

Это не работает, но формула работает, если я вставлю K5 и обращусь к K5.

Как я могу решить эту проблему, определить формулу и сохранить ее в коде VBA ??

Спасибо

1 Ответ

0 голосов
/ 23 января 2019

Используйте это. Вам может понадобиться дополнительная скобка в вашей формуле. MaxY - переменная, поэтому вы хотите получить доступ к ее значению напрямую; он не «принадлежит» к рабочему листу.

Sub x()

Dim MaxY As Integer

With Range("A1")
    .Formula = "=MAX(K3+50,ROUNDUP(IF(OR(ISBLANK('Station info'!C12),ISBLANK('Station info'!C8)),MAX(ABS(MIN(Data!B3:B10000)),ABS(MAX(Data!B3:B10000))),IF(('Station info'!C8-MAX(ABS(MIN(Data!B3:B10000)),ABS(MAX(Data!B3:B10000)))-MAX(Data!B3:B10000)+MIN(Data!B3:B10000))<'Station info'!C12,'Station info'!C8-'Station info'!C12+1,MAX(ABS(MIN(Data!B3:B10000)),ABS(MAX(Data!B3:B10000))))),0))"
    MaxY = .Value
    .Clear
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...