【问题标题】:How to copy a sheet and ensure it is at the end of all other sheets?如何复制工作表并确保它位于所有其他工作表的末尾?
【发布时间】:2020-10-23 12:56:37
【问题描述】:
sheetCopy.Copy After:=ThisWorkbook.Worksheets(Worksheets.Count)

我使用上面的代码在 Excel 中创建模板工作表的副本。

大多数时候它会在最后创建标签,这是我想要的,但有时它会在中间的某个地方创建新标签。

有没有办法确保它被复制到工作表的末尾?

【问题讨论】:

  • Worksheets.Count 没有参考,它将使用任何活动工作簿。
  • 你的意思是我应该使用 ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) ?
  • 是的,应该可以解决问题。

标签: excel vba worksheet


【解决方案1】:

(Thisworkbook.Worksheets.Count)

【讨论】:

    【解决方案2】:

    问题

    使用WorkbookWorksheetRange 或其他类似对象时,最好使用avoid implicit member calls

    其中大多数默认为处于活动状态的任何内容。例如,Worksheets.countActiveWorkbook.Worksheets.count 相同。

    在您的代码中,您在访问Worksheets 集合时正确使用了ThisWorkbook,几乎就在那里;但是,Worksheets.count 默认为 ActiveWorkbook

    解决方案

    为了解决这个问题,我喜欢使用 With 块来帮助缩短代码,并使我的引用更容易明确。

    With ThisWorkbook
        sheetCopy.Copy After:=.Worksheets(.Worksheets.Count)
    End With
    

    【讨论】:

      猜你喜欢
      • 2015-08-28
      • 2012-08-12
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多