Sam*_*iko 5 excel vba excel-vba
我使用了一些VBA代码来搜索工作簿中的某个字符串的所有工作表名称,我们称之为"文本".当它找到带有该字符串的工作表时,它应该删除该工作表.但是让我们说名称中有四个带有"文本"的表格(名为文本1,文本2,文本3和文本4),而不是删除所有四个,它删除文本1和文本3.它将第2和第4个保留为未删除.然后,如果我再次调用宏,它将删除文本2,但保留文本4.最后,如果我再次单击它会删除文本4.我无法解决为什么它看起来应该工作.
Dim i As Integer, n As Integer
n = ThisWorkbook.Worksheets.Count
i = 1
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Do
On Error Resume Next
If InStr(1, Sheets(i).Name, "Text") Then Sheets(i).Delete
On Error GoTo 0
i = i + 1
Loop Until i = n
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Run Code Online (Sandbox Code Playgroud)
Ror*_*ory 13
您需要向后循环以避免跳过工作表:
Dim i As Integer, n As Integer
n = ThisWorkbook.Worksheets.Count
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For i = n to 1 step -1
On Error Resume Next
If InStr(1, Sheets(i).Name, "Text") Then Sheets(i).Delete
On Error GoTo 0
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Run Code Online (Sandbox Code Playgroud)
否则,如果代码删除了纸张1,则纸张2变为纸张1,但是i增加到2,因此永远不会处理原始纸张2.
归档时间: |
|
查看次数: |
10750 次 |
最近记录: |