目标:搜索工作簿中每个工作表的每个单元格,看是否有错误。如果出现错误,则会弹出一个msgbox,使您能够将单元格从错误更改为“是”或“否”。
问题:而不是循环遍历工作表,而是第二次循环遍历同一工作表上的单元。我尝试将最终的End If移至Next Sht之后,但出现了编译错误“ Next Without For”。
我还从其他阅读中知道,在下一个单元格中使用单元格引用不是很好,并且意识到这可能是问题所在,但我不确定如何更正它。
Sub test()
On Error Resume Next
Dim rng As Range
Dim rngError As Range
Dim Sht As Worksheet
Set Sht = Sheets("Sheet1")
Set rng = Sht.Range("A1:N2000")
Set rngError = rng.SpecialCells(xlCellTypeFormulas, xlErrors)
For Each Sht In ActiveWorkbook.Worksheets
If Not rngError Is Nothing Then
For Each Cell In rngError
Answer = MsgBox("message in the box", vbQuestion + vbYesNo + vbDefaultButton2, "Name Change Check")
If Answer = vbYes Then
Range(Cell.Address) = "Yes"
Else
Range(Cell.Address) = "No"
End If
Next Cell
End If
Next Sht
End Sub
作为旁注,下面的代码部分可以完美地发挥自己的作用。只有当我添加了嵌套循环时,它才被淘汰。
If Not rngError Is Nothing Then
For Each Cell In rngError
Answer = MsgBox("message in the box", vbQuestion + vbYesNo + vbDefaultButton2, "Name Change Check")
If Answer = vbYes Then
Range(Cell.Address) = "Yes"
Else
Range(Cell.Address) = "No"
End If
Next Cell
尝试一下-
Sub test()
On Error Resume Next
Dim rng As Range
Dim rngError As Range
Dim Sht As Worksheet
Set Sht = Sheets("Sheet2")
Set rng = Sht.Range("A1:N2000")
GoTo lable
lable:
Set rngError = rng.SpecialCells(xlCellTypeFormulas, xlErrors)
For Each Sht In ActiveWorkbook.Worksheets
If (Not rngError Is Nothing) Then
If rngError <> "Yes" And rngError <> "No" Then
For Each Cell In rngError
Answer = MsgBox("message in the box", vbQuestion + vbYesNo + vbDefaultButton2, "Name Change Check")
If Answer = vbYes Then
Range(Cell.Address) = "Yes"
Else
Range(Cell.Address) = "No"
End If
rngError = Nothing
GoTo lable
Next Cell
End If
End If
Next Sht
End Sub