Макрос, чтобы вывести Excel из режима редактирования - PullRequest
3 голосов
/ 26 августа 2010

У меня есть макрос, который нужно запустить для обновления.

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

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Это невозможно, так как Excel не будет запускать макросы в режиме редактирования ячейки.

1 голос
/ 27 августа 2010

Естественный способ сделать это - использовать метод Application.OnTimer, но у него есть «проблема редактирования», которую вы только что заметили. Вызванная функция не будет выполнена, пока пользователь не выйдет из режима редактирования.

Вы можете преодолеть это: это решение не очень эффективно, но вы можете получить контроль от макроса и восстановить его по таймеру (или любому другому событию, которое вы выберете).

Следующий код взят из справки по функции таймера Excel.

Пока таймер обратного отсчета (или вы ожидаете другого события), вы можете продолжить работу над своим рабочим листом.

Sub a()
  Dim PauseTime, Start, Finish, TotalTime
  If (MsgBox("Press Yes to fire update in 1000 secs", 4)) = vbYes Then
      PauseTime = 1000    ' Set duration 1000 secs or whatever.
      Start = Timer    ' Set start time.
      Do While Timer < Start + PauseTime
          DoEvents    ' Yield to other processes - THIS IS THE TRICK
      Loop
      Finish = Timer    ' Set end time.
      TotalTime = Finish - Start    ' Calculate total time.
      MsgBox "Paused for " & TotalTime & " seconds" 'Program your update HERE
   Else
     End
  End If
End Sub

Вы должны вызвать этот макрос заранее, возможно, при открытии рабочей книги.
Кроме того, можно продолжать цикл, повторяя обновление, когда вы хотите.

Вы должны проверить, не мешает ли эта стратегия другим функциям, используемым в вашем конкретном рабочем листе.

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