Страницы: 1
RSS
VBA ShowDetail property
 
привет всем :)  
никак не могу разобраться с простым вопросом.  
на листе создана структура (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 - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
On Error Resume Next - отличное решение проблемы  
главное - все ведь работает как надо  
 
 
> но мне это кажется глупостью - допускать возникновение ошибки там, где её (наверное?) можно избежать.  
 
Мне кажется глупостью попытка усложнить код лишними проверками,  
если одна строка кода решает все проблемы
 
гм...  
 
спасибо.  
хорошо, пожалуй, соглашусь :)  
для данной задачи - действительно, даже лучше - не надо КАЖДЫЙ раз проверять какие-то условия.  
но, в принципе, вопрос можно было поставить иначе - как на листе из макроса отличить строки, принадлежащие структуре и не принадлежащие.  
не для сворачивания/разворачивания, а, скажем, для каких-нибудь других задач.  
 
для строк с OutlineLevel>1 всё однозначно - в структуре.  
для строк с OutlineLevel=1 - неоднозначно.  
думаю, что в таком случае можно проверять уровень строки выше/ниже (в зависимости от свойства SummaryRow) данной строки и, если он равен 2 - то в структуре.  
ну и за границы листа не выйти при проверках.  
в общем, как-то так :)  
 
но это не моя задача.  
тема исчерпана.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Страницы: 1
Читают тему
Наверх
Loading...