Проблема в том, что когда я изменяю значение в I16 или I17, я получаю сообщение об ошибке. Как я могу предотвратить эту ошибку? Я проверяю I16 и I17 для имен листов, потому что каждую неделю появляется обновленный лист. СпасибоIFERROR в этом макросе?
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'. –