2013-05-16 39 views
1

我試圖創建從sheet1細胞攝取名工作表設置名稱,但在執行Worksheets(Worksheets.Count).name = companyName1004錯誤時,試圖對XLS工作

時,我總是得到一個1004 error我嘗試設置表由PrefferedName命名和工作......我也有MsgBoxcompanyName變量檢查有最後一張紙的名稱...

Sub Find2() 
    Dim i, k As Integer 
    Dim j, l As Integer 
    Dim Counter As Integer 
    Dim dateAnnounced As Date 
    Dim fromDate As Date 
    Dim currentCellDate As Date 
    Dim daysBefore As Integer 
    Dim kk As Integer 
    Dim from1 As Integer 
    Dim companyName As Variant 

    Set originsheet = ThisWorkbook.Worksheets("Sheet1") 

    daysBefore = 30 

    i = 3 
    j = 4 
    Counter = 0 
    k = 5 
    l = 4179 
    dateAnnounced = Cells(i, j).Value 

    For Each cel In Range(Cells(1, k), Cells(1, 4179)) 
     currentCellDate = cel.Value 

     If currentCellDate = dateAnnounced Then 
      MsgBox k 
      Exit For 
     End If 

     k = k + 1 
    Next cel 

    kk = k 
    from1 = k - daysBefore 

    ThisWorkbook.Sheets.Add after:=Sheets(Worksheets.Count) 
    companyName = Worksheets("Sheet1").Cells(i, j - 1).Value 
    Worksheets(Worksheets.Count).name = companyName 

    MsgBox name 

    For Each cel In Range(Cells(1, from1), Cells(1, kk)) 
     If from1 = kk Then 
      MsgBox cel.Value 
      Exit For 
     Else 
      Counter = Counter + 1 
     End If 

     from1 = from1 - 1 
    Next cel 

    MsgBox Counter 

End Sub 
+1

我不知道是什麼問題,但有一件事你應該做的是看跌期權在這個模塊的頂部明確。這迫使你在使用它們之前聲明所有的變量。您將看到「名稱」未被聲明爲變量,這將影響您的MsgBox語句之一。此外,雖然它不會影響您的代碼,但請注意,「Dim i,k As Integer」表示「Dim i As Variant,k As Integer」 –

+0

您可以給我們公司名稱的值嗎?不超過31個字符,其中沒有「[]?* \ /」? – KekuSemau

+0

Associated Group Inc是公司名稱,它沒有奇怪的字符.. – agagelis

回答

0

如果你運行這段代碼不止一次,你會得到,因爲它1004年運行時錯誤將嘗試添加具有相同名稱的工作表。所有表必須有一個唯一的名稱。您可能需要添加支票以確保在創建新工作表之前,具有該名稱的工作表尚未存在。例如:

companyName = Worksheets("Sheet1").Cells(i, j - 1).Value 
WorksheetExists = False 
For Each Sht In ThisWorkbook.Worksheets 
    If UCase(Sht.Name) = UCase(companyName) Then 
     WorksheetExists = True 
     Exit For 
    End If 
Next Sht 
If WorksheetExists Then Exit Sub 

ThisWorkbook.Sheets.Add after:=Sheets(Worksheets.Count) 
Worksheets(Worksheets.Count).Name = companyName 
0

除了不唯一的工作表名稱外,如果工作表名稱長度超過31個字符,還可能會收到錯誤1004。
嘗試做:
Worksheets(Worksheets.Count).name = Left(companyName, 31)