【问题标题】:How to save axis bounds in excel after running a macro?运行宏后如何在excel中保存轴边界?
【发布时间】:2019-07-10 00:23:54
【问题描述】:

我正在做一个 excel 项目,其中我有一个具有 y 轴和 x 轴的图表。 我可以在 excel 上看到我可以修改轴的格式并选择最小比例和最大比例,如下面的屏幕截图所示:

我的程序如下:

第 1 步:运行宏 test1() 填充图表 1 中的数据 第 2 步:查看图表 1 并决定是否应更改最小和最大比例。 如果是,请使用上图中 excel 的“格式轴”更改值。 第三步:再次运行相同的宏 test1() (这一步是强制性的)

但是,根据需要设置轴值后,当我运行 test1() 时,这些值似乎被重置为其原始值(丢弃了我为两个轴手动输入的值)

谁能告诉我如何确保即使在我运行宏时,excel 也会将我输入的值保持为最小值和最大值?

谢谢你:)

【问题讨论】:

  • 如果您提前知道所需的值是什么,请将它们包含在宏 myChart.Axes(xlValue).MinimumScale = MINmyChart.Axes(xlValue).MaximumScale = MAX 中(其中 MINMAX 是所需的值)
  • 我不知道我要设置的值是什么@cybernetic.nomad
  • ???如果您不知道要设置的值是什么,那么在运行宏之前如何设置它们?要么某处缺少信息,要么我们面临XY problem
  • 请检查@cybernetic.nomad 上面的更新我希望这会让它更清楚:)
  • 听起来您需要userforminputbox 来捕获您的界限(最小值和最大值),因此它们可以转换为您的test1,您将在代码中拥有@ cybernetic.nomad 在他的第一条评论中列出。如果您将MINMAX 设置为全局变量,您将能够继续保持这些变量,您需要检查是否会使用MIN 和MAX。

标签: excel vba


【解决方案1】:

扩展评论以解释在哪里检查最小值/最大值。

Option Explicit
Public MIN as Long, MAX as Long
'
Public Sub CallUF()
    UserForm1.Show
End Sub

'Call test1 from the COmmandbutton in the UF
Private Sub test1()
    'run your other code then use this to format after the fact
    MIN = UserForm1.Textbox1.Value
    MAX = UserForm1.Textbox2.Value
    If MIN > 0 And MAX > 0 then
        myChart.Axes(xlValue).MinimumScale = MIN 'copied from cybernetic's comment
        myChart.Axes(xlValue).MaximumScale = MAX 'copied from cybernetic's comment
    End If
End Sub

MINMAX 将被维护并用于使用 test1 创建的其他图表。

您可以使用用户表单或输入框来获取 MIN/MAX 值,并可以在代码开头运行加载用户表单/输入框,以便您可以列出 0 使其默认努力,或使用值(将作为已知输入)。

您可能想要构建一些关于何时拉取用户表单/输入框的逻辑,这样您以后就不会覆盖它们(或者您可以在启动时使用 MINMAX 填充它们用户表单)。

【讨论】: