Сбой VBA при смене листа из выпадающего - PullRequest
2 голосов
/ 08 января 2011

У меня есть раскрывающийся список со связанным макросом, который выглядит следующим образом:

Sub Drop()
     If Range("Hidden1!A1") = "1" Then
          Sheets("Sheet1").Select
     End If
     If Range("Hidden1!A1") = "2" Then
          Sheets("Sheet2").Select
     End If
     If Range("Hidden1!A1") = "3" Then
          Sheets("Sheet3").Select
     End If
End Sub

Это приводит к полному отказу моего Excel 2010 и необходимости отправки отчета в Microsoft.Любые иды, как переписать это, чтобы он не вылетал, или это ошибка в Excel?

1 Ответ

1 голос
/ 09 января 2011

sandos,

Мне удалось воспроизвести проблему, как вы описали.Добавление команды DoEvents в начале подпрограммы исправило это.Также всегда полезно сопоставлять имена и диапазоны ваших листов с книгой, к которой они принадлежат, например ThisWorkbook.Sheets (1) .Range ("A1").Кроме того, вам не нужны все эти операторы If Endif (если бы вы это сделали, вы бы хотели один длинный If, ElseIf, Elseif, End).В любом случае вы можете игнорировать эти комментарии и просто поставить DoEvents в начале, и это должно работать:

Sub Drop()
DoEvents
With ThisWorkbook
    .Worksheets("Sheet" & .Worksheets("Hidden1").Range("A1")).Select
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...