VBA - Ошибка выхода за пределы диапазона в команде MOD - PullRequest
0 голосов
/ 09 ноября 2018

Я все еще начинающий пользователь VBA.Я не могу понять, почему этот фрагмент сценария не работает.Я получаю

'Subscript Out of Range' ошибку

во второй строке оператора If ниже:

Sub ScreenUpdate()

Dim LastRow As Long, LastColumn As Long, i As Long, j As Long

Application.ScreenUpdating = False

    LastRow = Range("C" & Rows.Count).End(xlUp).Row
        For i = 2 To LastRow
            If Cells(i, 17).Value = Cells(i - 1, 17).Value Then
                Cells(i, 1).NumberFormat = ";;;"
                Cells(i, 2).NumberFormat = ";;;"
                Cells(i, 15).NumberFormat = ";;;"
                Cells(i, 16).NumberFormat = ";;;"
            Else
                Cells(i, 1).NumberFormat = "0"
                Cells(i, 2).NumberFormat = "0"
                Cells(i, 15).NumberFormat = "0"
                Cells(i, 16).NumberFormat = "0"
            End If
        Next i

        For j = 2 To LastRow
            If Cells(j, 17).Value Mod 2 = 1 Then
                Range(Cells(j, 1), Cells(j, 16)).Interior.ColorIndex = RGB(221, 235, 247)
            Else
                Range(Cells(j, 1), Cells(j, 16)).Interior.ColorIndex = RGB(255, 255, 255)
            End If
        Next j

Application.ScreenUpdating = True

End Sub

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 09 ноября 2018

Вы перепутали Color, с которым вы бы использовали функцию RGB и ColorIndex.

Функция RGB возвращает целое число Long, соответствующее значению цвета. Именно в этом случае

  • RGB(221, 235, 247) возврат 16 247 773
  • RGB(255, 255, 255) возврат 16,777,215

Оба они находятся за пределами очень узкого диапазона возможных значений для цвета index в текущей цветовой палитре, следовательно, subscript out of range.

Измените каждый экземпляр ColorIndex на Color.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...