【问题标题】:How to select several specific tabs in a code rather than tab names如何在代码中选择多个特定选项卡而不是选项卡名称
【发布时间】:2023-12-30 07:11:01
【问题描述】:

我正在创建一个 VBA 代码来选择 3 个特定选项卡以转换为 PDF。我希望能够从“Microsoft Excel 对象”中的工作表列表中选择 3 个特定工作表,这样即使工作表的顺序发生更改或工作表被重命名,也会选择相同的选项卡并将其转换为 PDF。

目前,我有这段代码可以选择前 3 个选项卡。 (效果很好)

 Sheets(Array(1, 2, 3)).Select

我已经尝试了以下(不起作用)

Sheets(Array(Sheet1, Sheet2, Sheet3)).Select

预期结果是能够从“Microsoft Excel 对象”中的工作表列表中选择 3 个特定工作表,这样即使工作表的顺序发生更改或重命名,也会选择相同的选项卡并将其转换为 PDF .

【问题讨论】:

  • 在第二个示例中的每张纸周围放置“”;例如“Sheet1”如果您有特定的工作表名称,请使用“”中的名称;例如。 “汤姆拇指”

标签: excel vba selection


【解决方案1】:

您需要使用名称进行多选。但可以参考代号获取名称:Sheet1.Name

Sheets(Array(Sheet1.Name, Sheet2.Name, Sheet3.Name)).Select

您可以将 Sheet1 和其他名称更改为您要选择的工作表的 CodeName。

【讨论】:

  • @Louis 这是一个仅限英语的网站,这意味着问题和答案中应使用语言。
  • 如果我想扩展此代码,以便在此代码已经执行的操作之外,它会再次提取 sheet3,但这次是单独提取,并将其保存到与其他 PDF 文档相同的位置,前提是 A1 单元格不是空白的。我需要一起提交一个新问题吗?
  • @Abigal 新问题获得新帖子。请提出新问题,以便整个社区都能提供帮助。
【解决方案2】:

一种方法是为您要导出的每个工作表分配一个唯一的CustomProperty

Sub qwerty()
    ActiveSheet.CustomProperties.Add Name:="PDF", Value:="pdf1"
End Sub

其他两张纸也类似。

然后,当您要导出时,循环遍历所有工作表以查找正确的 CustomProperty。工作表名称是否已更改、代码名称是否已更改或工作表的顺序是否已更改都无关紧要。

【讨论】:

    最近更新 更多