在同一代码中新建 sheet 个引用

New sheet created reference within same code

我正在尝试使用以下公式创建一个具有特定名称的新 sheet:

    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Range("B2") & "_MCT"
    End With

所以新的 sheet 将被命名为“X_MCT”,X 是单元格 B2 中的值。

在同一代码中,我添加了一个代码,该代码想要用原始 sheet 中的值填充这个新的 sheet。有没有办法做到这一点?下面是我的一个示例方程式,它将进入新创建的 sheet:

Sheets("MCT").Cells(i + 6, 2 * j + j - 2 + 1) = "*FORCES-DEFORMATION FUNCTION    ; Forces-Deformation Function"'''

我已经定义了 i 和 j,但是有没有办法将“MCT”更改为代码创建的新“X_MCT”?或者我应该用“活动 sheet 函数”替换它,因为当我创建新的 sheet 时,它会变成活动的 sheet。我的第一个想法是首选,因为它更干净。

下面是我想做的一个例子:

Sub newsheet()

With ThisWorkbook
        Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Range("B2") & "_MCT"
        
       
    End With
    
 Sheets(Range("B2") & "_MCT").Cells(1, 1) = "*FORCES-DEFORMATION FUNCTION    ; Forces-Deformation Function"

End Sub

但是我得到一个“超出范围错误”文本没有写入这个新 sheet。只有 运行 宏再次使用该文本创建新的 sheet,但为什么它不能在原始 sheet 上工作?

试试这个:

Sub NewSheet()
  With ThisWorkbook.Sheets
    Dim Reference as Worksheet
    Set Reference = .Item("A worksheet with B2")
    With .Add(After:=.Item(.Count))
      .Name = Reference.Range("B2") & "_MCT"
      .Cells(1, 1) = "*FORCES-DEFORMATION FUNCTION    ; Forces-Deformation Function"       
    End with
  End With
End Sub

由于代码最后一行的 Sheets(Range("B2") & "_MCT"),您遇到了 超出范围 错误。 Range("B2") 在这种情况下指的是新创建的 sheet 并且是空的。因此,此代码试图访问“_MCT”sheet,我猜它不存在。这就是 下标超出范围 发生的地方。