Excel 2002 VBA ошибка компиляции с кодом для более поздних версий Excel - PullRequest
1 голос
/ 20 декабря 2011

Я пытаюсь использовать следующий код в электронной таблице, которая будет использоваться в широком диапазоне версий Excel: -

Sheets("Graph").ChartObjects("Chart 1").Activate
ActiveChart.ClearToMatchStyle

Если я включу этот код как обычно, он не скомпилируетсяпод Excel 2002, но будет работать в последующих версиях.Я не думаю, что команда .ClearToMatchStyle доступна в Excel 2002, и именно здесь она падает.

Есть ли способ, которым я могу использовать приведенный выше код, но активировать команды, только если найдена версия Excel более поздняя, ​​чем 2002?

Большое спасибо за любую помощь,

Martin

1 Ответ

2 голосов
/ 20 декабря 2011

У вас не так много вариантов, на самом деле.

У вас есть поздняя привязка для всего, что зависит от версии.
То есть:

Sheets("Graph").ChartObjects("Chart 1").Activate

dim LateBoundChart As Object
set LateBoundChart = ActiveChart

on error resume next
LateBoundChart.ClearToMatchStyle
on error goto 0

Вместо on error resume next вы можете:

  • Перейти к более значимому обработчику ошибок.
  • Сначала проверьте версию Excel, используя Application.Version.

А чтобы избежать утомительного dim whatever as Object, у вас может быть функция:

public function LateBound(byval o as object) as Object
  set LateBound = o
end function

, а затем:

Sheets("Graph").ChartObjects("Chart 1").Activate

on error resume next
LateBound(ActiveChart).ClearToMatchStyle
on error goto 0
...