My Excel «Ошибка времени выполнения 91: переменная объекта или переменная блока не установлена» - PullRequest
0 голосов
/ 21 сентября 2019

Я получаю

Ошибка времени выполнения 91: переменная объекта или переменная блока не установлены

при открытии программы из облачного хранилища ион открывается с вопросом с предупреждением «« включить содержимое ». Когда я нажимаю« Включить », появляется ошибка 91. Если я открываю со своего компьютера, это не проблема. Мне нужно иметь возможность загружать и открывать из облачного хранилища. Мой кодниже.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Application.ScreenUpdating = True

 With ActiveSheet
    .Cells.Interior.ColorIndex = xlNone
    If Target.Rows.Count = 1 Then
    Range("A" & Target.Row, "J" & Target.Row).Interior.ColorIndex = 27
    End If
End With

End Sub

1 Ответ

0 голосов
/ 24 сентября 2019

Измените With ActiveSheet на With Me, а также укажите Me для Range, как Me.Range (или заставьте его использовать оператор with и начните его с точки, такой как .Range).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)    
    Application.ScreenUpdating = True

    With Me
        .Cells.Interior.ColorIndex = xlNone
        If Target.Rows.Count = 1 Then
             .Range("A" & Target.Row, "J" & Target.Row).Interior.ColorIndex = 27
        End If
    End With    
End Sub

Почему это важное различие?

ActiveSheet - это лист, который имеет фокус (находится сверху) в момент запуска кода.Но это не обязательно тот лист, который вызвал событие, или Target. Поэтому вы пытаетесь изменить цвет другого листа.Избегайте использования ActiveSheet любой ценой.В большинстве случаев это не требуется (если только в редких случаях, например, если вы пишете надстройку или что-то подобное).

Возможно, вам будет полезно прочитать Как избежать использования Select в Excel VBA , которыйо очень похожей теме.

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