问题是,当我更改I16或I17中的值时,出现错误。 如何防止发生此错误? 我在I16和I17中检查图纸名称,因为每周都会有更新的图纸。 谢谢IFERROR in this macro?
Sub Compare()
Call compareSheets(range("I16").Value, range("I17").Value)
End Sub
Sub compareSheets(Sofon As String, Sofon2 As String)
Dim mycell As range
Dim mydiffs As Integer
For Each mycell In ActiveWorkbook.Worksheets(Sofon2).range("M:M")
If Not mycell.Value = ActiveWorkbook.Worksheets(Sofon).Cells(mycell.Row, mycell.Column).Value Then
mycell.Interior.Color = vbYellow
mydiffs = mydiffs + 1
End If
Next
MsgBox mydiffs & " differences found in Column M (Salesman)", vbInformation
ActiveWorkbook.Sheets(Sofon2).Select
End Sub
*我得到一个错误* - 你会得到什么错误?另外,在“I16”和“I17”中更改它们之后,您确定工作簿中存在工作表吗?你的代码也可以更好地用于**,而不是循环遍历M列中的每一个单元格,而只是用数据循环遍历单元格(通过查找包含数据的最后一行并将其设置到您的末尾范围)。 –
我得到:运行时错误'9'下标超出范围。当我将I16或I17更改为与其中一张纸张的名称不相关的值时,会发生这种情况。但我希望它是万无一失的,这就是为什么我想知道如何添加一个IFERROR。如果你有更好的主意,请告诉我。 –
查看“On Error GoTo”。 –