【问题标题】:Copy a hidden template and put after template sheet复制隐藏的模板并放在模板表之后
【发布时间】:2021-12-08 08:48:46
【问题描述】:

我使用模板表创建了我的工作表。我还创建了一个按钮来复制模板表并将任何新创建的表放在模板表之后。

如果“模板”可见,一切正常。当我隐藏“模板”时,只有最新创建的工作表可见,其他工作表自动隐藏。

能否请您看一下我的脚本并建议我如何解决这个问题?我希望任何新创建的工作表都可见并放在隐藏的模板工作表之后。

这是我的脚本

Sub NewSheet()
    Dim newWS As Worksheet
    Dim TemplateWS As Worksheet
    Dim newWSName As String
      
Retry:
    newWSName = InputBox("Enter Activity name.", "New Sheet Name")
    If newWSName = "" Then Exit Sub

    For Each ws In Worksheets
        If ws.Name = newWSName Then
            MsgBox newWSName & " exist already. Pick another name.", vbExclamation, "Sheet Name Exists"
            GoTo Retry
        End If

    Next ws
    
    Set TemplateWS = Sheet7
    TemplateWS.Activate
    TemplateWS.Copy After:=ActiveWorkbook.Sheets("template 1")
    ActiveSheet.Name = newWSName
    Range("A1").Select
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'Summary'!A1", TextToDisplay:="Click to Summary"
    ActiveSheet.Tab.ColorIndex = 19
    
End Sub

一如既往地感谢你。

【问题讨论】:

  • ActiveSheet.Visible = True放在ActiveSheet.Name = newWSName之后
  • 您好@CDP1802,我已尝试使用您的脚本,但没有成功。只有最新创建的工作表可见,其他工作表会自动隐藏。还有其他方法吗?
  • 有人帮帮我吗?

标签: excel vba copy


【解决方案1】:

通常复制的工作表会成为活动工作表,但如果复制的工作表被隐藏,则不会发生这种情况。解决方案是让模板可见,复制然后隐藏。

Option Explicit

Sub NewSheet()

    Dim wsTemplate As Worksheet, ws As Worksheet
    Dim newWSName As String
      
Retry:
    newWSName = InputBox("Enter Activity name.", "New Sheet Name")
    If newWSName = "" Then Exit Sub

    For Each ws In ThisWorkbook.Sheets
        If ws.Name = newWSName Then
            MsgBox newWSName & " exist already. Pick another name.", vbExclamation, "Sheet Name Exists"
            GoTo Retry
        End If
    Next ws
    
    Set wsTemplate = Sheets("Template 1")
    wsTemplate.Visible = True
    wsTemplate.Copy After:=wsTemplate
    With ActiveSheet
        .Name = newWSName
        .Range("A1").Hyperlinks.Add Anchor:=.Range("A1"), Address:="", _
         SubAddress:="'Summary'!A1", _
         TextToDisplay:="Click to Summary"
        .Tab.ColorIndex = 19
    End With
    wsTemplate.Visible = False
    
End Sub

【讨论】:

  • 非常感谢@CDP1802。这正是我要寻找的。你是最棒的。
猜你喜欢
  • 1970-01-01
  • 2017-07-04
  • 2017-05-09
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多