2017-10-28 51 views
-1

我有一些问题得到这个代码来设置工作表我可以想象它,因为我不dim它,但我已经尝试与dim as workbook不起作用。如何在VBA中设置图纸名称?

我试着走一步一步,“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 
+1

哪行代码会产生错误?作为一种好的做法,你应该总是声明你的变量。在这种情况下,您将使用'Dim tsheet作为工作表' – Calico

+0

对不起,它的: '设置thfs = ThisWorkbook.Sheets(thf)' 它不是设置“设置”工作表“thfs”,而是“thf “它有正确的值 – Anker

+2

你已经在下面的语句中声明'thfs'作为工作簿Dim THfs As Workbook',但是然后尝试'SET'它是一个工作表。尝试将其改为'Dim thfs As Worksheet' – Calico

回答

0

转贴为答案。您已在以下声明Dim thfs As Workbook中声明thfs作为工作簿,但它们正在尝试将其作为工作表使用SET。尝试将其更改为Dim thfs As Worksheet

+0

谢谢:)我会把它作为答案,然后时间用完 – Anker

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 
+0

感谢关于31个字符的输入,但我甚至没有那么接近。 – Anker