Vba 嵌套循环无法正常运行
我有一个嵌套循环,它首先使用for循环将所有ref单元格更改为白色字体,然后在sub-for循环中删除ref单元格。代码运行,但仍有一个或两个单元格存在引用错误。将需要帮助来整理代码,以便它可以删除所有引用错误,而不是大部分错误!多谢各位Vba 嵌套循环无法正常运行,vba,excel,Vba,Excel,我有一个嵌套循环,它首先使用for循环将所有ref单元格更改为白色字体,然后在sub-for循环中删除ref单元格。代码运行,但仍有一个或两个单元格存在引用错误。将需要帮助来整理代码,以便它可以删除所有引用错误,而不是大部分错误!多谢各位 Sub Delete_ref_basedontextcondition() Dim R As Range Dim w As Long, ref As Range Dim refi As Range On Error Resume
Sub Delete_ref_basedontextcondition()
Dim R As Range
Dim w As Long, ref As Range
Dim refi As Range
On Error Resume Next
'Set rng = Nothing
On Error Resume Next
Set R = Application.InputBox("Select cells To be deleted", Type:=8)
Dim rng As Range
If TypeName(R) <> "Range" Then
Exit Sub
Else
R.Delete
End If
For w = 1 To Worksheets.Count
With Worksheets(w)
For Each ref In .Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
If ref.Text = "#REF!" Then
ref.Font.ColorIndex = 2
For Each refi In .Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
If refi.Text = "#REF!" Then
refi.Delete
End If
Next refi
End If
Next ref
End With
Next w
End Sub
Sub Delete\u ref\u basedontextcondition()
调光范围
尺寸w等于长度,参考值等于范围
调暗refi As范围
出错时继续下一步
'设置rng=无
出错时继续下一步
设置R=Application.InputBox(“选择要删除的单元格”,类型:=8)
变暗rng As范围
如果TypeName(R)“范围”,则
出口接头
其他的
R.删除
如果结束
对于w=1的工作表。计数
带工作表(w)
对于特殊单元格中的每个参考单元格(xlCellTypeFormulas,xlErrors)
如果ref.Text=“#ref!”则
ref.Font.ColorIndex=2
对于每个refi In.Cells.SpecialCells(xlCellTypeFormulas,xlErrors)
如果refi.Text=“#REF!”则
参考。删除
如果结束
下一次再融资
如果结束
下一个参考
以
下一个w
端接头
我相信流氓\REF代码>实际上是由refi.Delete
创建的,因此在创建之前定义的循环会忽略它。改用refi.Clear
。你只想删除坏的公式;您不希望删除该单元格并移动其周围的其他单元格(从而创建新的\REF!
错误)
把它想象成一个装满了#REF!错误。每次你拿出一个,另一个就会进来代替它。用关闭盖子。清除而不是用弹出盖子。删除我相信流氓\REF代码>实际上是由refi.Delete
创建的,因此在创建之前定义的循环会忽略它。改用refi.Clear
。你只想删除坏的公式;您不希望删除该单元格并移动其周围的其他单元格(从而创建新的\REF!
错误)
把它想象成一个装满了#REF!错误。每次你拿出一个,另一个就会进来代替它。用关闭盖子。清除而不是用弹出单元格。删除为什么先用白色字体标记单元格中已损坏的引用,然后再删除?为什么每个循环都需要第二个?为什么不使用ref.delete
而不是ref.font.colorindex=2
跳过第二个循环呢?它仍然会执行不完全的删除@PsycholineBolace?您可以提供一个预期结果的示例吗?是否删除带有#ref错误的单元格会导致循环中已检查的另一个单元格报告错误#参考错误?单元格可能不包含错误-它只是引用了一个包含错误的单元格。只是一些想法。:)为什么先用白色字体标记引用已损坏的单元格,然后再将其删除?为什么每个循环都需要第二个?为什么不使用ref.delete
而不是ref.font.colorindex=2
跳过第二个循环呢?它仍然会执行不完全的删除@PsycholineBolace?您可以提供一个预期结果的示例吗?是否删除带有#ref错误的单元格会导致循环中已检查的另一个单元格报告错误#参考错误?单元格可能不包含错误-它只是引用了一个包含错误的单元格。只是一些想法。:)我需要删除,因为删除和引用的数据在两个不同的表中。例如,我有一个分别包含水果、颜色和价格的表,分为3列。如果我要清除颜色的内容,水果和价格之间会有差距。即使我只使用一个循环来删除参考单元格,也会出现同样的问题,因此它不是refi循环。我需要删除,因为删除和引用的数据在两个不同的表中。例如,我有一个分别包含水果、颜色和价格的表,分为3列。如果我要清除颜色的内容,水果和价格之间会有一个差距。即使我只使用一个循环删除参考单元格,也会出现同样的问题,因此它不是refi循环。