Страницы: 1
RSS
Переполнение Target.Count
 
Приветствую!  
В макросе событию Worksheet_SelectionChange вызывается форма.  
 
попытался отключить вызов  
If Not Intersect(Target, Range("C5:C6")) Is Nothing Then  
If Target.Count <> 1 Then Exit Sub  
 
Но 2007 при выделении всего листа кричит  
Target.Count - <Overflow>  
Как обрулить?
 
Гы-ы... cells.Count вызывает Overflow!  
В данном случае можно  
 
If Target.Address <> "$C$5" And Target.Address <> "$C$6" Then Exit Sub
 
в данном случае правильнее наверно так:  
If Target.Address <> "$C$5" Then If Target.Address <> "$C$6" Then Exit Sub
Редко но метко ...
 
Ошибка, и способы её обхода, описаны в интернете  
(рекомендуют использовать свойство Cells.CountLarge)  
 
Excel 2007 and higher can have soo many cells on a sheet that the Cells.Count property overflows.    
Use the Cells.CountLarge property instead.    
It returns a variant with the number of cells.
 
Спасибо!
 
да просто on error поставить..
Живи и дай жить..
 
{quote}{login=слэн}{date=05.05.2011 07:41}{thema=}{post}да просто on error поставить..{/post}{/quote}  
Даже в голову не пришло.  
А свойство Cells.CountLarge работает на УРА!  
Target.Address тоже работает, но не глянулось.
 
да, но.. :)  
 
 
countlarge нарушит совместимость с прежними версиями.., а on error будет работать и там и там.
Живи и дай жить..
 
Ус хоть и короткий, но на него еще много можно намотать! -:)
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
   If Target.Cells.Count > 1 Then Exit Sub  
   If Intersect(Target, Range("C5:C6")) Is Nothing Then Exit Sub  
   MsgBox "Ура !"  
End Sub
 
Аноним!  
Не мутите грязными советами чистую воду истины!-:)
 
{quote}{login=}{date=05.05.2011 11:55}{thema=}{post}Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
   If Target.Cells.Count > 1 Then Exit Sub  
   If Intersect(Target, Range("C5:C6")) Is Nothing Then Exit Sub  
   MsgBox "Ура !"  
End Sub{/post}{/quote}  
 
эт вы, батенька, фигню какую-то написали :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
PS  
если (вдруг) не хочется связываться с On Error, а совместимость нужна, то, имхо, можно попробовать проверять Target.Areas.Count, а если оно равно 1, то тогда Target.Rows.Count и Target.Columns.Count
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
"- Товарищи ученые! Доценты с кандидатами!  
Замучились вы с иксами, запутались в нулях!  
Сидите, разлагаете молекулы на атомы,  
Забыв, что разлагается картофель на полях...." ©  
:-)
Страницы: 1
Читают тему
Наверх
Loading...