Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Связывание ячеек - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Связывание ячеек
Vitaliy258369 Дата: Среда, 09.04.2014, 00:49 | Сообщение № 1
Группа: Гости
Ребята, помогите пожалуйста с макросом
Хочу связать ячейки на трех листах
Но связать по конкретному диапазону.
Использовал следующий код, но он связывает листы полностью.

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Лист2").Cells(Target.Row, Target.Column) = Target.Value
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Лист1").Cells(Target.Row, Target.Column) = Target.Value
End Sub

И он работает, только когда ставишь значения ячейки,
а когда очищаешь значения эксель вылетает.
Буду очень благодарен
 
Ответить
СообщениеРебята, помогите пожалуйста с макросом
Хочу связать ячейки на трех листах
Но связать по конкретному диапазону.
Использовал следующий код, но он связывает листы полностью.

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Лист2").Cells(Target.Row, Target.Column) = Target.Value
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Лист1").Cells(Target.Row, Target.Column) = Target.Value
End Sub

И он работает, только когда ставишь значения ячейки,
а когда очищаешь значения эксель вылетает.
Буду очень благодарен

Автор - Vitaliy258369
Дата добавления - 09.04.2014 в 00:49
Alex_ST Дата: Среда, 09.04.2014, 09:07 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
У вас зацикливается обработчик событий при изменении ячеек листов. Надо отключать обработку событий на время работы макроса.
А ограничить область работы совсем просто.
В модуле листа1 пишем[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, [A1:E16]) Is Nothing Then
        Application.EnableEvents = False
        Sheets("Лист2").Cells(Target.Row, Target.Column) = Target.Value
        Application.EnableEvents = True
     End If
End Sub
[/vba]а в модуле листа2[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, [A1:E16]) Is Nothing Then
        Application.EnableEvents = False
        Sheets("Лист1").Cells(Target.Row, Target.Column) = Target.Value
        Application.EnableEvents = True
     End If
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 09.04.2014, 09:08
 
Ответить
СообщениеУ вас зацикливается обработчик событий при изменении ячеек листов. Надо отключать обработку событий на время работы макроса.
А ограничить область работы совсем просто.
В модуле листа1 пишем[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, [A1:E16]) Is Nothing Then
        Application.EnableEvents = False
        Sheets("Лист2").Cells(Target.Row, Target.Column) = Target.Value
        Application.EnableEvents = True
     End If
End Sub
[/vba]а в модуле листа2[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, [A1:E16]) Is Nothing Then
        Application.EnableEvents = False
        Sheets("Лист1").Cells(Target.Row, Target.Column) = Target.Value
        Application.EnableEvents = True
     End If
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 09.04.2014 в 09:07
Vitaliy258369 Дата: Среда, 09.04.2014, 11:58 | Сообщение № 3
Группа: Гости
Alex_ST,
Спасибо большое :D
Все работает!
Удачи
 
Ответить
СообщениеAlex_ST,
Спасибо большое :D
Все работает!
Удачи

Автор - Vitaliy258369
Дата добавления - 09.04.2014 в 11:58
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!