Страницы: 1
RSS
Worksheet change с target cell на другом листе
 
Привет, ситуация такая:  
 
в событии worksheet change изменяемая клетка и само событие находятся на разных листах. Запилить в один невозможно, тк там уже есть такое же событие и если добавить все необходимые строки, excel ругается, что код превышает допустимый размер.  
 
Событие не срабатывает. М.б., неправильно прописан адрес таргета? If Not Intersect(Target, Worksheets("лист с target cell").Range("D7")) Is Nothing Then
 
Это Вы с цифрой в нике поскромничали:-) Что это:  
Worksheet_Change(ByVal Source(!) As Range)?  
Есть зарезервированное имя процедуры:  
Worksheet_Change(ByVal Target As Range)  
Так и только так! Это если у Вас запорожец, Вы можете привязать крышку багажника проволокой вместо штатного замка. А Экс не запорожец:-) Лист видит события, происходящие только на нем.  
Вы можете использовать событие книги:  
Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Я сам - дурнее всякого примера! ...
 
Ник - это про мозг.  
А можете написать, как должно быть? Я погуглила это событие, мне в таком синтаксисе только утонуть и мирно отбыть на дно можно.
 
Хорошо, раз не идёт так, можно поставить вопрос по-другому. Не заморачиваясь на workbook sheet change.  
 
target cell прячет либо отображает столбец С на двух разных листах.  
То есть в коде имеем:  
если targer cell = "no", то прячется столбец на листе "изменяемый лист" и столбец на листе "изменяемый лист 2".  
 
как прописать это "и" - не знаю.
 
файл к предыдущему сообщению
 
Private Sub WorkSheet_Change(ByVal Target As Range)  
   If Target = "" Then Exit Sub  
   If Not Intersect(Target, Range("D7")) Is Nothing Then  
       Worksheets("изменяемый лист").Range("C:C").EntireColumn.Hidden = Target = "no"  
       Worksheets("изменяемые лист 2").Range("C:C").EntireColumn.Hidden = Target = "no"  
   End If  
End Sub
Я сам - дурнее всякого примера! ...
 
Да! Теперь я смогу написать всё в одно событие worksheetchange.  
 
KukLP, спасибо!!!!!!
 
Чуть короче:  
Private Sub WorkSheet_Change(ByVal Target As Range)  
   If Target = "" Or Intersect(Target, Range("D7")) Is Nothing Then Exit Sub  
   Worksheets("изменяемый лист").Range("C:C").EntireColumn.Hidden = Target = "no"  
   Worksheets("изменяемые лист 2").Range("C:C").EntireColumn.Hidden = Target = "no"  
End Sub
Я сам - дурнее всякого примера! ...
 
Различий не поняла, но спасибо ещё раз))
 
Различия в к-ве строк макроса:-) Если будете за этим следить, то возможно и не будет" excel ругается, что код превышает допустимый размер."
Я сам - дурнее всякого примера! ...
 
Что тут скажешь...см.ник :)
 
{quote}{login=KukLP}{date=19.07.2012 02:06}{thema=}{post}Что это:  
Worksheet_Change(ByVal Source(!) As Range)?  
Есть зарезервированное имя процедуры:  
Worksheet_Change(ByVal Target As Range)  
Так и только так!{/post}{/quote}Серж,  
ты совершенно прав насчет имени процедуры. Но переменную можно обозвать как угодно, лишь бы не противоречило стандартам VB. Вот так будет работать не хуже:  
 
Private Sub WorkSheet_Change(ByVal Source As Range)  
If Source = "" Or Intersect(Source, Range("D7")) Is Nothing Then Exit Sub  
Worksheets("изменяемый лист").Range("C:C").EntireColumn.Hidden = Source = "no"  
Worksheets("изменяемые лист 2").Range("C:C").EntireColumn.Hidden = Source = "no"  
End Sub  
 
для сокращения кол-ва буковок  
 
Private Sub WorkSheet_Change(ByVal T As Range)  
If T = "" Or Intersect(T, Range("D7")) Is Nothing Then Exit Sub  
Worksheets("изменяемый лист").Range("C:C").EntireColumn.Hidden = T = "no"  
Worksheets("изменяемые лист 2").Range("C:C").EntireColumn.Hidden = T = "no"  
End Sub
 
Привет Лешенька, рад тебе:-)  
Во-первых спасибо. Во-вторых, не разлагай контингент;-) Только попусти - потом не уследишь, в какие Нью-Васюки заведет творческая мысль всеми нами любимого ТС. Ты же не всегда "на страже". А я и подавно:-(
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх