1

VB6 を使用して、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

このコードを最初に呼び出すと、1 つのワークシートを含むスプレッドシートが"SheetToReplace"表示されます。スプレッドシートを表示して確認します。

2 回目の呼び出しでは、次の行でエラーが発生します。

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

(番号1004)。

この目に見えないワークシートを取り除く方法、または目的の結果を達成するためのより良い方法を知っている人はいますか?

4

2 に答える 2

1

シートが隠されていると言いますか?最初に表示してから削除する必要があります。 

試す:

lSheet.Visible = TRUE
lSheet.Delete
于 2013-05-13T12:55:17.160 に答える
1

最後のワークシートを削除することは許可されていないため..

最後のシートだけを削除したい場合は、次のことができます

mwbkBook.Sheets(mwbkBook.Sheets.Count).Delete
于 2013-05-13T12:50:17.743 に答える