2017-10-28 79 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