Excel VBA:根据变量名创建新工作表,然后根据主副本设置其格式

hyrbngr7  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(115)

我正在尝试编写一段代码,创建一个名称由变量设置的工作表,然后通过将主控形状中的所有单元格复制/粘贴到这个新工作表来设置这个新工作表的格式。我遇到的问题是,当标题存储在变量中时,一旦创建了这个新工作表,就引用它。
目前,我的代码如下所示,除了最后一行之外,所有代码都正常工作,在最后一行中,我试图通过引用变量名称来选择新创建的工作表。

Sub Create_New_Sheet()

    Dim title As String
    
    title = Sheets("config").range("A3 ").Value & "_" & Sheets("config").range("B3 ").Value & "_" & "Calculations"

    Sheets.Add(Before:=Sheets("Results")).Name = title

    Sheets("Calc_master").UsedRange.Copy
    Sheets("title").range("A1").Paste

End Sub

有没有一种方法可以使用变量来选择工作表?我还没有找到任何建议。

qf9go6mv

qf9go6mv1#

添加或复制工作表后,新工作表将成为活动表。
但是考虑 * 复制 * calc_master-sheet -不需要复制/粘贴使用的范围:

Function get_New_Sheet() as Worksheet

    Dim title As String
    Dim wsConfig As Worksheet, wsMaster as Worksheet
    
    With ThisWorkbook
        Set wsConfig = .Worksheets("Config")
        With wsConfig
            title = .Range("A3") & "_" & .Range("B3") & "_Calculations"
        End With
           
        Set wsMaster = .Worksheets("Calc_master")
        wsMaster.Copy before:=.Worksheets("Results")
    End With
    
    ActiveSheet.Name = title
    Set get_New_Sheet = ActiveSheet
End Function

在你的更大范围内:

Public Sub doSomething

Dim wsNew as worksheet
Set wsNew = get_New_Sheet

wsNew.Range("A1") = "xxx"

End Sub

相关问题