首页 > 解决方案 > VBA 中的公式并在 VBA 中使用

问题描述

我正在尝试执行我的 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 代码中?

谢谢

标签: vba

解决方案


用这个。您的公式中可能需要一个额外的括号。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

推荐阅读