Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 在VBA中如何保留两张工作表和删除其他工作表_Excel_Vba - Fatal编程技术网

Excel 在VBA中如何保留两张工作表和删除其他工作表

Excel 在VBA中如何保留两张工作表和删除其他工作表,excel,vba,Excel,Vba,大家好!我正在尝试用VBA编写一个方法来保存两个工作表,同时删除其他工作表。 我已经做了一个保留一个工作表并删除其他工作表的操作,如下所示: Sub delete_all_pages_except_main() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets Application.DisplayAlerts = False If ws.Name <> "Home

大家好!我正在尝试用VBA编写一个方法来保存两个工作表,同时删除其他工作表。 我已经做了一个保留一个工作表并删除其他工作表的操作,如下所示:

Sub delete_all_pages_except_main()
    Dim ws As Worksheet
    
    For Each ws In ThisWorkbook.Worksheets
    Application.DisplayAlerts = False
    If ws.Name <> "Home Page" Then
    ws.Delete
    End If
    
    Next ws
    
    End Sub
Sub-delete_除_main()之外的所有_页面
将ws设置为工作表
对于此工作簿中的每个ws。工作表
Application.DisplayAlerts=False
如果ws.Name是“主页”,那么
ws.Delete
如果结束
下一个ws
端接头
我试着这样写

If (ws.Name <> "Home Page" Or ws.Name <> "Data") 
If(ws.Name“主页”或ws.Name“数据”)
但VBA会接受的

你们能帮忙吗?谢谢。

这样就可以了

    Sub delete_all_pages_except_main()
    Dim ws As Worksheet
    Dim arr As Variant
    Dim boo As Boolean
    
    Application.DisplayAlerts = False

    arr = Array("Home Page", "Data")
    
    For Each ws In ThisWorkbook.Worksheets
        boo = NoDel(ws.Name, arr)
        If boo <> True Then ws.Delete
    Next ws
    Application.DisplayAlerts = True
End Sub

    Function NoDel(ws As String, warr As Variant) As Boolean
        NoDel = False
        For i = LBound(warr, 1) To UBound(warr, 1)
            If warr(i) = ws Then NoDel = True
        Next i
    End Function
Sub-delete_除_main()之外的所有_页面
将ws设置为工作表
作为变体的Dim-arr
Dim boo作为布尔值
Application.DisplayAlerts=False
arr=数组(“主页”、“数据”)
对于此工作簿中的每个ws。工作表
boo=NoDel(ws.Name,arr)
如果boo为True,则ws.Delete
下一个ws
Application.DisplayAlerts=True
端接头
函数NoDel(ws作为字符串,warr作为变量)作为布尔值
NoDel=False
对于i=LBound(warr,1)到UBound(warr,1)
如果warr(i)=ws,则NoDel=True
接下来我
端函数
这应该可以

    Sub delete_all_pages_except_main()
    Dim ws As Worksheet
    Dim arr As Variant
    Dim boo As Boolean
    
    Application.DisplayAlerts = False

    arr = Array("Home Page", "Data")
    
    For Each ws In ThisWorkbook.Worksheets
        boo = NoDel(ws.Name, arr)
        If boo <> True Then ws.Delete
    Next ws
    Application.DisplayAlerts = True
End Sub

    Function NoDel(ws As String, warr As Variant) As Boolean
        NoDel = False
        For i = LBound(warr, 1) To UBound(warr, 1)
            If warr(i) = ws Then NoDel = True
        Next i
    End Function
Sub-delete_除_main()之外的所有_页面
将ws设置为工作表
作为变体的Dim-arr
Dim boo作为布尔值
Application.DisplayAlerts=False
arr=数组(“主页”、“数据”)
对于此工作簿中的每个ws。工作表
boo=NoDel(ws.Name,arr)
如果boo为True,则ws.Delete
下一个ws
Application.DisplayAlerts=True
端接头
函数NoDel(ws作为字符串,warr作为变量)作为布尔值
NoDel=False
对于i=LBound(warr,1)到UBound(warr,1)
如果warr(i)=ws,则NoDel=True
接下来我
端函数
删除有例外的工作表
选项显式
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'目的:在指定工作簿中写入所有工作表名称'
'未在结果数组的异常数组中指定,并且'
'使用结果数组一次删除所有工作表。'
“备注:此解决方案适用于工作表和图表。”
'由于没有图纸对象,因此下一个循环的
'和对象类型已'
“待使用。”
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
子删除工作表(书本作为工作簿,例外作为变体)
"方案",
变暗图纸长度:图纸长度=Book.Sheets.Count
变光结果:变光结果(SheetsCount)
暗sh为对象,i为长,j为长
j=-1
对于i=1到SheetScont:GoSub checkName:Next i
如果j=-1,则转到NothingToDelete
如果j=SheetsCount-1,则转到无异常
高松集团
MsgBox“已删除”&j+1&“工作表”,vbInformation,“成功”
出口接头
'子程序
支票名称:
Set sh=书本页(一)
如果IsError(Application.Match(sh.Name,Exceptions,0))那么
j=j+1
结果(j)=sh.名称
如果结束
返回
删除SinoNego:
ReDim保存结果(j)
Application.DisplayAlerts=False
书本。工作表(结果)。删除
Application.DisplayAlerts=True
返回
“标签
无需删除:
MsgBox“工作表已删除”,vbCritical,“无需删除”
出口接头
无例外:
MsgBox“无法删除所有工作表”,vbCritical,“无例外”
出口接头
端接头
'用法示例
子runDeleteSheets()
Dim SheetNames作为变量:SheetNames=数组(“主页”、“数据”)
删除此工作簿中的工作表,工作表名称
端接头
删除有例外的工作表
选项显式
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'目的:在指定工作簿中写入所有工作表名称'
'未在结果数组的异常数组中指定,并且'
'使用结果数组一次删除所有工作表。'
“备注:此解决方案适用于工作表和图表。”
'由于没有图纸对象,因此下一个循环的
'和对象类型已'
“待使用。”
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
子删除工作表(书本作为工作簿,例外作为变体)
"方案",
变暗图纸长度:图纸长度=Book.Sheets.Count
变光结果:变光结果(SheetsCount)
暗sh为对象,i为长,j为长
j=-1
对于i=1到SheetScont:GoSub checkName:Next i
如果j=-1,则转到NothingToDelete
如果j=SheetsCount-1,则转到无异常
高松集团
MsgBox“已删除”&j+1&“工作表”,vbInformation,“成功”
出口接头
'子程序
支票名称:
Set sh=书本页(一)
如果IsError(Application.Match(sh.Name,Exceptions,0))那么
j=j+1
结果(j)=sh.名称
如果结束
返回
删除SinoNego:
ReDim保存结果(j)
Application.DisplayAlerts=False
书本。工作表(结果)。删除
Application.DisplayAlerts=True
返回
“标签
无需删除:
MsgBox“工作表已删除”,vbCritical,“无需删除”
出口接头
无例外:
MsgBox“无法删除所有工作表”,vbCritical,“无例外”
出口接头
端接头
'用法示例
子runDeleteSheets()
Dim SheetNames作为变量:SheetNames=数组(“主页”、“数据”)
删除此工作簿中的工作表,工作表名称
端接头
和中的