【问题标题】:Excel VBA: Resetting spreadsheet countExcel VBA:重置电子表格计数
【发布时间】:2014-08-14 20:02:27
【问题描述】:

我有一个 Excel VBA 宏,它可以根据用户输入动态生成和删除电子表格。但是,当我打开 VBA IDE 时,似乎虽然我在创建/删除它们的子程序中命名我的电子表格,但总数仍在增加。

例如,根据我的程序执行的程度,在我当前项目的“Microsoft Excel 对象”文件夹下,当前工作簿中的电子表格可能类似于

Sheet101(Sheet3)
Sheet103(Sheet2)
Sheet104(Sheet1)

或者

Sheet81(Inputs)
Sheet83(Date Adjustment Interpolation)
Sheet84(Pricing)
Sheet85(Comparison)

无论我删除其余的并添加一个,它仍然会从最后一个最高的位置停止。

我不知道这个宏会运行多少次,如果我可以重置这个烦人的已生成电子表格数量的计数,我会觉得把它放在那里会好很多,因为我不知道'不知道excel会在哪里切断我。另外,这很烦人。

我的问题:

我想知道如何更改该电子表格编号,或者至少知道这样做的相关对象是什么。

谢谢!

【问题讨论】:

  • 如果您想知道,您看到的带有递增数字的工作表名称是工作表的“代码名称”。
  • 代号是唯一的,我认为是按创建顺序索引的。

标签: vba excel


【解决方案1】:

感谢@dijkay 对代号的建议,我找到了一些代码来完成这项工作。

ThisWorkbook.VBProject.VBComponents("Sheet1").name = "test"

将Sheet1的代号改成test,所以在Excel Objects文件夹中会出现例如test(Sheet1)。

但是,此选项需要在运行宏的每个单独的 excel 客户端中弄乱一些信任/安全设置,不幸的是,这不适合我的目的。您也可以通过属性窗口直接在 IDE 中更改 (Name) 属性来手动更改值。

【讨论】:

    【解决方案2】:

    这里有一些你可以尝试的想法...

    Sheets(x).Name = "Sheet" & x
    

    或(假设在此示例中,'Sheet3' 尚不存在:

    Set Sheet3 = sheets.Add
    Sheet3.name = "Sheet3"
    

    这比重新设置更干净

    干杯, 胶粘剂

    【讨论】:

    • 您提供的底部代码仅更改了工作簿底部电子表格选项卡中电子表格的名称。就像@djikay 提到的那样,我想更改电子表格“代号”,即IDE 中microsoft excel objects 文件夹下括号外的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2011-11-09
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多