Fat*_*man 3 excel select vba google-sheets
我在删除不必要的纸张时遇到了问题。我查看了不同的论坛并将不同的解决方案混合在一起。
该宏删除工作表(第一张工作表除外)。
Sub wrong()
Dim sht As Object
Application.DisplayAlerts = False
For Each sht In ActiveWorkbook.Sheets
If sht.Index <> 1 Then
sht.Delete
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
这个解决方案可以吗?或者可以改进吗?我还尝试直接对对象(工作簿、工作表)执行操作,但每次都失败
你的代码没有任何问题。该代码将从 ActiveWorkbook 中删除除第一个工作表之外的所有工作表。
您应该将 sht 声明为 Worksheet,因为您知道该变量引用 Worksheet 对象。
另一点是您正在循环遍历 ActiveWorkbook.Sheets 的所有工作表,这意味着如果运行代码,它将从当前活动的工作簿中删除工作表。
如果循环遍历 ThisWorkbook.Sheets,它将仅从包含此代码的工作簿中删除工作表。
Sub DeleteAllSheetsButFirst()
Dim sht As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each sht In ActiveWorkbook.Sheets
If sht.Index <> 1 Then
sht.Delete
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
上面的代码将根据工作表的索引号(即它们在工作簿中的位置)而不是工作表名称来删除工作表。