2013-05-13 44 views
1

我試圖用VB6替換Excel電子表格中的最後一個工作表。由於刪除最後一個工作表是不允許的,我一直在試圖增加一個臨時表,刪除一個,我不想,取代舊的,然後刪除臨時表,如下所示: -從Excel中刪除工作表似乎不工作

Set temporary_sheet = mwbkBook.Worksheets.Add 
temporary_sheet.Name = "NameThatIsUnlikelyToExist" ' Error Here. 

For Each lSheet In mwbkBook.Worksheets 
    Select Case lSheet.Name 
     Case "SheetToReplace" 
      Application.DisplayAlerts = False 
      lSheet.Delete 
    End Select 
Next lSheet 

Set mwshSheet = mwbkBook.Worksheets.Add 
mwshSheet.Name = "SheetToReplace" 
' Fill in mwshSheet 

For Each lSheet In mwbkBook.Worksheets 
    Select Case lSheet.Name 
     Case "Sheet1", "Sheet2", "Sheet3", "NameThatIsUnlikelyToExist" 
      Application.DisplayAlerts = False 
      lSheet.Delete 
    End Select 
Next lSheet 

這段代碼的第一次調用給我一個電子表格,其中包含一張工作表"SheetToReplace",正如我通過顯示電子表格進行驗證。

第二invokation給出在該行的錯誤指示: -

Cannot rename a sheet to the same name as another sheet, a referenced object library or a workbook referenced by Visual Basic. 

(編號1004)。

有誰知道我該如何擺脫這個看不見的工作表,或達到理想效果的更好方法?

+1

你的邏輯似乎是確定。如果你真的只需要在最後一次循環內的'條件語句'改變爲反向邏輯(而不是'Select Case'),那麼在上一次循環改變'最後一次循環之後只保留'SheetToReplace'' if if end if':If lSheet.Name <> 「SheetToReplace」then .... End if'。 – 2013-05-13 12:10:47

+0

你說這張表是隱藏的嗎?你需要首先將其顯示出來然後刪除它 – glh 2013-05-13 12:31:37

+0

@glh,這肯定有改進的地方,工作表現在被刪除了,但是隻有當你離開它一會兒,我想有一些異步的工作正在完成,如果你想寫這個答案,我會打勾。 – 2013-05-13 12:50:47

回答

1

你說的表是隱藏?您需要先將其設爲可見,然後將其刪除。

嘗試:

lSheet.Visible = TRUE 
lSheet.Delete 
1

由於刪除最後一個工作表是不允許的..

如果你只是想刪除最後一個表,你可以做

mwbkBook.Sheets(mwbkBook.Sheets.Count).Delete 
+0

感謝您的提示。 – 2013-05-13 13:02:03