Excel 2007 VBA: производительность по событию SelectionChange - PullRequest
2 голосов
/ 21 апреля 2009

Есть ли способ улучшить производительность любым значимым способом для следующего кода VBA в Excel?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Not Intersect(Me.Range("Group1"), Target) Is Nothing Then

     With wksData
       .Range("Group1Column").Value = Target.Column
       .Range("Group1Row").Value = Target.Row
     End With
   End If

End Sub

Я добавил условное форматирование, которое рассматривает именованные диапазоны Group1Column и Group1Row. Я не могу сказать, связана ли моя проблема с производительностью с перебором SelectionChange или условным форматированием, но есть заметное отставание, от которого я бы хотел избавиться.

Условное форматирование является суперосновным (что-то вроде Column ($ D3) = Group1Column), и это только для целей «на глазу», но это будет полезно для решения в целом.

Некоторые вещи, которые я пробовал: .ScreenUpdating, .EnableEvents, .Calculations. .ScreenUpdating гарантирует, что пользователь должен подождать, прежде чем выбрать следующую ячейку, но не совсем то, что я имел в виду.

Любые советы будут полезны!

1 Ответ

1 голос
/ 22 апреля 2009

Мне быстро светит. У вас есть много других расчетов в рабочей тетради? Какую версию вы используете?

...