如何在VBA中设置工作表名称? [关闭]

问题描述 投票:-1回答:2

我有一些问题得到这个代码来设置我可以想象它的表,因为我没有dim它但我尝试使用dim as workbook不起作用。

我试着一步一步走,“thf”里面有正确的字符串。

Sub CreateSheet()
    Set tsheet = ThisWorkbook.Sheets("For Save")
    Dim th As String
    Dim thf As String
    Dim thfs As Workbook
    th = Replace(tsheet.Range("A11").Value, "/", "-")
    thf = "SAVE" & " " & th & " " & tsheet.Range("A3").Value
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = thf
        Set thfs = ThisWorkbook.Sheets(thf)
                tsheet.Ranges("A1:R201").Copy

    qsheet.Columns("A").PasteSpecial xlPasteValues
    End With
End Sub
excel vba excel-vba
2个回答
0
投票

转贴为答案。您已在以下语句thfs中将Dim thfs As Workbook声明为工作簿,但随后尝试将SET作为工作表。尝试将其更改为Dim thfs As Worksheet


0
投票
  1. 使用Worksheet变量用于thfs,或者将其包含在With中,就像我在下面所做的那样
  2. 工作表名称只能是31个字符,因此最好检查一下

试试这个:

Sub CreateSheet()
    Dim tsheet As Worksheet
    Dim th As String, thf As String

    Set tsheet = ThisWorkbook.Sheets("For Save")
    th = Replace(tsheet.Range("A11").Value, "/", "-")
    thf = "SAVE" & " " & th & " " & tsheet.Range("A3").Value

    With ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        .Name = Left(thf, 31) 'remove if you're sure the length won't be over 31 characters
        tsheet.Ranges("A1:R201").Copy
        .Range("A1").PasteSpecial xlPasteValues
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.