Excel for循环上存在运行时错误91
循环中出现运行时错误91需要帮助Excel for循环上存在运行时错误91,excel,vba,Excel,Vba,循环中出现运行时错误91需要帮助 Sub clearSheet(WSName As String) Dim ws As Worksheet Set ws = Nothing With ActiveWorkbook Dim blWSExists As Boolean blWSExists = False For i = 1 To .Sheets.Count If .Sheets(i).Name =
Sub clearSheet(WSName As String)
Dim ws As Worksheet
Set ws = Nothing
With ActiveWorkbook
Dim blWSExists As Boolean
blWSExists = False
For i = 1 To .Sheets.Count
If .Sheets(i).Name = WSName Then
blWSExists = True
.Sheets(i).Activate
.Sheets(i).Visible = xlSheetVisible
End If
Next
If Not blWSExists Then
Set ws = .Sheets.Add
ws.Move after:=.Sheets(.Sheets.Count)
ws.Name = WSName
ws.Visible = xlSheetVisible
End If
.Sheets(WSName).AutoFilterMode = False
.Sheets(WSName).Cells.Clear
.Sheets(WSName).UsedRange.ClearOutline
.Sheets(WSName).Cells.ClearFormats
End With
End Sub
试试看:
Dim ws As Worksheet
Dim blWSExists As Boolean
blWSExists = False
For Each ws In Worksheets
If ws.Name = WSName Then
blWSExists = True
End If
Next
If Not blWSExists Then
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = WSName
End If
Set ws = ActiveWorkbook.Sheets(WSName)
ws.AutoFilterMode = False
ws.Cells.Clear
ws.UsedRange.ClearOutline
ws.Cells.ClearFormats
ws.Activate
试试看:
Dim ws As Worksheet
Dim blWSExists As Boolean
blWSExists = False
For Each ws In Worksheets
If ws.Name = WSName Then
blWSExists = True
End If
Next
If Not blWSExists Then
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = WSName
End If
Set ws = ActiveWorkbook.Sheets(WSName)
ws.AutoFilterMode = False
ws.Cells.Clear
ws.UsedRange.ClearOutline
ws.Cells.ClearFormats
ws.Activate
您可以使用
Cells.Delete()
清除工作表上的所有内容:
Sub clearSheet(WSName As String)
Dim s As Object
For Each s in ThisWorkbook.Sheets
If s.Name = WSName Then
s.Visible = xlSheetVisible
If TypeOf s Is worksheet Then s.Cells.Delete ' not all Sheets have cells, but all Worksheets do
Exit Sub ' to ignore the rest of the code if the Sheet exists
End If
Next
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = WSName
End Sub
或者只需删除工作表并添加新内容即可清除与工作表相关的所有内容:
Sub clearSheet(WSName As String)
On Error Resume Next
Sheets(WSName).Delete
Sheets.Add(After:=Sheets(Sheets.Count)).Name = WSName
End Sub
您可以使用
Cells.Delete()
清除工作表上的所有内容:
Sub clearSheet(WSName As String)
Dim s As Object
For Each s in ThisWorkbook.Sheets
If s.Name = WSName Then
s.Visible = xlSheetVisible
If TypeOf s Is worksheet Then s.Cells.Delete ' not all Sheets have cells, but all Worksheets do
Exit Sub ' to ignore the rest of the code if the Sheet exists
End If
Next
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = WSName
End Sub
或者只需删除工作表并添加新内容即可清除与工作表相关的所有内容:
Sub clearSheet(WSName As String)
On Error Resume Next
Sheets(WSName).Delete
Sheets.Add(After:=Sheets(Sheets.Count)).Name = WSName
End Sub
尝试颠倒两行的顺序,首先使其可见
.Sheets(i).visible=xlSheetVisible
,然后将其激活.Sheets(i).激活
nop不起作用可能不起作用,但您仍然需要切换它们。在哪一行出现此错误?您尝试设置ws两次。删除第二个集合
,然后使用Active工作簿的没有指向您认为它指向的地方。尝试颠倒两行的顺序,首先使其可见.Sheets(i).visible=xlSheetVisible
然后激活它.Sheets(i)。激活
否可能不起作用,但无论如何,你都需要切换它们。在哪一行出现此错误?您尝试设置ws两次。删除第二个集
,则使用ActiveWorkbook
的未指向您认为它指向的位置。此行存在运行时错误1004:(“对于工作表中的每个ws”@H.A请尝试将集ws=Nothing
放在For循环之前。此处未发生此错误。此行存在运行时错误1004:(“对于工作表中的每个ws”@H.A在For循环之前尝试放置Set ws=Nothing
。此处不发生此错误。