привет всем :) никак не могу разобраться с простым вопросом. на листе создана структура (outline) хочу разворачивать/сворачивать группы по двойному щелчку на ячейке.
делаю так: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Target.EntireRow.ShowDetail = Not Target.EntireRow.ShowDetail Cancel = True End Sub
всё работает. но для строк, не входящих в структуру, возникает ошибка времени выполнения 1004 :( как отличить такие строки в VBA? OutlineLevel у них равен 1 (так же, как и у строк самого верхнего уровня структуры). ShowDetail равен True (так же, как и у строу в "развернутом" виде). что ещё?
пс. вариант Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next Target.EntireRow.ShowDetail = Not Target.EntireRow.ShowDetail Cancel = True End Sub конечно, работает. но мне это кажется глупостью - допускать возникновение ошибки там, где её (наверное?) можно избежать.
ппс. надеюсь, файл с "примером" тут не нужен. :)
хелп ми, плиз.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
спасибо. хорошо, пожалуй, соглашусь :) для данной задачи - действительно, даже лучше - не надо КАЖДЫЙ раз проверять какие-то условия. но, в принципе, вопрос можно было поставить иначе - как на листе из макроса отличить строки, принадлежащие структуре и не принадлежащие. не для сворачивания/разворачивания, а, скажем, для каких-нибудь других задач.
для строк с OutlineLevel>1 всё однозначно - в структуре. для строк с OutlineLevel=1 - неоднозначно. думаю, что в таком случае можно проверять уровень строки выше/ниже (в зависимости от свойства SummaryRow) данной строки и, если он равен 2 - то в структуре. ну и за границы листа не выйти при проверках. в общем, как-то так :)
но это не моя задача. тема исчерпана.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг