Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 删除工作表错误_Excel_Vba - Fatal编程技术网

Excel 删除工作表错误

Excel 删除工作表错误,excel,vba,Excel,Vba,我正在尝试删除除工作表1之外的所有工作表。除第1页外,我不知道工作表的名称。因此,我使用了for循环,但它总是在行工作表上给出一个超出范围的下标错误。删除感谢您的帮助 Sub clear() Dim z, y As Integer Dim s As String Dim sheet As Worksheet z = ActiveWorkbook.Sheets.Count For y = 2 To z Step 1 s = ActiveWorkbook.Sheets(y).Name Workshe

我正在尝试删除除工作表1之外的所有工作表。除第1页外,我不知道工作表的名称。因此,我使用了for循环,但它总是在行工作表上给出一个超出范围的下标错误。删除感谢您的帮助

Sub clear()
Dim z, y As Integer
Dim s As String
Dim sheet As Worksheet
z = ActiveWorkbook.Sheets.Count
For y = 2 To z Step 1
s = ActiveWorkbook.Sheets(y).Name
Worksheets(s).Delete
Next y
Sheet1.Cells.clear
End Sub

我没有测试这一点,但试着按相反的顺序逐步检查这些表。您可能正在删除其中一个工作表,然后尝试在for循环中引用它

Sub clear()

    Dim z, y As Integer
    z = ActiveWorkbook.Sheets.Count
    For y = z To 2 Step -1
        ActiveWorkbook.Sheets(y).Delete
    Next y
    Sheet1.Cells.clear
End Sub

我没有测试这一点,但试着按相反的顺序逐步检查这些表。您可能正在删除其中一个工作表,然后尝试在for循环中引用它

Sub clear()

    Dim z, y As Integer
    z = ActiveWorkbook.Sheets.Count
    For y = z To 2 Step -1
        ActiveWorkbook.Sheets(y).Delete
    Next y
    Sheet1.Cells.clear
End Sub

有点不清楚你到底想保留哪张床单,但这是怎么回事?我假设您希望保留,然后清除,
工作表(“Sheet1”)
。如果没有,只需将其编辑到您希望保留/清除的图纸

Sub clear()
Dim sheet As Worksheet
For Each sheet In ActiveWorkbook.Sheets
    If sheet.Name <> "Sheet1" Then sheet.Delete
Next sheet
Sheets("Sheet1").Cells.clear
End Sub

有点不清楚你到底想保留哪张床单,但这是怎么回事?我假设您希望保留,然后清除,
工作表(“Sheet1”)
。如果没有,只需将其编辑到您希望保留/清除的图纸

Sub clear()
Dim sheet As Worksheet
For Each sheet In ActiveWorkbook.Sheets
    If sheet.Name <> "Sheet1" Then sheet.Delete
Next sheet
Sheets("Sheet1").Cells.clear
End Sub

我建议您更改
工作表。删除
工作表。删除
(与计数器和
名称一致),但您可以合并
s=ActiveWorkbook.Sheets(y)。名称
/
工作表。将
作为
工作表(y)删除。无论如何,删除
。何必麻烦
s
,为什么不干脆
ActiveWorkbook.Sheets(y).删除
z
也是多余的,未使用的变量在此上下文中不起任何作用,您可以放心地忽略它。@YowE3K很公平。我复制了原始帖子,只更新了For循环的顺序。我将根据您的建议编辑我的答案。@DavidZemens-我希望您的意思是可以使用
For y=ActiveWorkbook.Sheets.Count To 2 Step-1将y=z的
替换为2 Step-1
。目前仍然需要
z
。@DavidZemens-是的,这更令人担忧-我讨厌看起来太像对象名称的变量名称。我建议您更改
工作表。删除
工作表。删除
(与计数器和
名称一致),但是你可以合并
s=ActiveWorkbook.Sheets(y)。命名
/
工作表。删除
工作表(y)。无论如何删除
。为什么要麻烦
s
,为什么不简单地
ActiveWorkbook.Sheets(y)。删除
z
也是多余的,未使用的变量在此上下文中不起任何作用,您可以放心地忽略它。@YowE3K很公平。我复制了原始帖子,只更新了For循环的顺序。我将根据您的建议编辑我的答案。@DavidZemens-我希望您的意思是可以使用
For y=ActiveWorkbook.Sheets.Count To 2 Step-1将y=z的
替换为2 Step-1
。目前仍然需要
z
。@DavidZemens-是的,这更令人担忧-我讨厌看起来太像对象名的变量名。仅供参考:
Dim z,y作为整数
只将
y
设置为
整数
z
是默认值(
变量
)。这对我来说有点不直观,但如果要将z和y都设置为
整数,则需要将z设置为整数,y设置为整数。另外,是否要保留
工作表(1)
工作表(“工作表1”)
?它们不一定是同一件事。仅供参考:
Dim z,y为整数
仅将
y
设置为
整数
z
是默认值(
变量
)。这对我来说有点不直观,但如果要将z和y都设置为
整数,则需要将z设置为整数,y设置为整数。另外,是否要保留
工作表(1)
工作表(“工作表1”)
?他们不一定是同一件事。