VBA删除不工作的图纸
我具有以下功能,可以同时使用多个工作簿:VBA删除不工作的图纸,vba,excel,Vba,Excel,我具有以下功能,可以同时使用多个工作簿: Public Property Get SPATH() As String SPATH = ThisWorkbook.Path & "\" Function GETIMPORTFILE(Index As Long) As String Select Case Index Case 1: GETIMPORTFILE = "New Leave.xlsx" Case 2: GETIMPORTFILE
Public Property Get SPATH() As String
SPATH = ThisWorkbook.Path & "\"
Function GETIMPORTFILE(Index As Long) As String
Select Case Index
Case 1: GETIMPORTFILE = "New Leave.xlsx"
Case 2: GETIMPORTFILE = "Return To Work.xlsx"
End Select
End Function
然后我在这个循环中删除了那些不必要的工作表名称
Sub delete_extra_Sheets()
Dim n As Long
Dim strImportFile As String
For n = 1 To 2 Step -1
strImportFile = SPATH & GETIMPORTFILE(n)
With Workbooks.Open(strImportFile)
If n = "Segments" Or n = "Summary" Then
Application.DisplayAlerts = False
Sheets(n).Delete
Application.DisplayAlerts = True
End If
End With
Next n
End Sub
但是,我的代码不起作用。我没有得到一个错误,或任何地方调试。它就是不点火。我做错了什么?删除循环的
步骤-1
添加新的ws
声明,因为我们正在您的循环中创建另一个循环——这个循环将在工作簿中的工作表中循环
Sub delete_extra_Sheets()
Dim n As Long, ws As Worksheet '<-- New declaration
Dim strImportFile As String
For n = 1 To 2
strImportFile = SPATH & GETIMPORTFILE(n)
With Workbooks.Open(strImportFile)
For Each ws In .Worksheets
Application.DisplayAlerts = False
Select Case ws.Name
Case "Segments", "Summary"
ws.Delete
End Select
Application.DisplayAlerts = True
End If
End With
Next n
End Sub
子删除额外工作表()
Dim n As Long,ws As Worksheet'如果我正确理解了您试图执行的操作,以下代码可能适合您:
Sub delete_extra_Sheets()
Dim n As Long
Dim i As Long
Dim strImportFile As String
Dim wbTarget As Workbook
For i = 1 To 2
strImportFile = SPATH & GETIMPORTFILE(i)
wbTarget Workbooks.Open(strImportFile)
If wbTarget Is Nothing Then
For n = wbTarget.Worksheets.Count To 1 Step -1
If wbTarget.Worksheets(n).Name = "Segments" Or wbTarget.Worksheets(n).Name = "Summary" Then
Application.DisplayAlerts = False
wbTarget.Worksheets(n).Delete
Application.DisplayAlerts = True
End If
End If
wbTarget.Close True
End If
Next i
End Sub
在这里,我将循环浏览您拥有的所有工作簿(根据GERTIMPORT程序,本例为2)
然后,我循环遍历工作簿中的每个工作表,并使用n(索引)查找名称,并将其与摘要进行比较。如果为真,我将删除它们
试试看,不需要任何循环
Sub delete_extra_Sheets()
Dim n As Long
For n = 1 To 2
With Workbooks.Open(SPATH & GETIMPORTFILE(n))
Application.DisplayAlerts = False
On Error Resume Next
.Sheets("Segments").Delete
.Sheets("Summary").Delete
On Error GoTo 0
Application.DisplayAlerts = True
End With
Next
End Sub
re:对于n=1到2步骤-1
您是指对于n=1到2步骤1
还是对于n=2到1步骤-1
?另外,n将是2还是1。它永远不会是段或摘要。正如Jeeped试图说的那样,for循环的内部部分不会被执行,只需按F8调试代码,你就会看到。伙计,这段代码从A到Z都是错误的。你想做什么?我试图打开两本工作簿,然后删除两张名为“摘要”和“摘要”的工作表在这两本书上。