Сразу хочу извиниться за глупый вопрос , никогда не углублялся в написание макросов для excel , да и вообще далек от excel , работаю оператором ПК , задать вопрос на Вашем форуме меня заставила нужда и безысходность , перед созданием этого вопроса скачал две книги (Основы програмирования на VB и VBA в Excel2007 , Стив Каммингс - VBA Для чайников - 2001) , прочитал обе книги , но в силу своей не образованности по данной теме либо просто не состояния понять всю эту тему не могу понять как реализовать такую вещь.
Мне нужно что бы при изменении данных в ячейке А1 Лист1 (допустим было 0 либо пусто , а стало 3 или любое другое значение ) у меня вся ячейка копировалась в Лист2 ячейка А1 уже с измененными данными .
Очень прошу подсказать как это реализовать , либо посоветуйте книгу по макросам с доступным для самый тупых людей языком .
За раннее огромное спасибо всем кто ответил .
Добрый день!
Сразу хочу извиниться за глупый вопрос , никогда не углублялся в написание макросов для excel , да и вообще далек от excel , работаю оператором ПК , задать вопрос на Вашем форуме меня заставила нужда и безысходность , перед созданием этого вопроса скачал две книги (Основы програмирования на VB и VBA в Excel2007 , Стив Каммингс - VBA Для чайников - 2001) , прочитал обе книги , но в силу своей не образованности по данной теме либо просто не состояния понять всю эту тему не могу понять как реализовать такую вещь.
Мне нужно что бы при изменении данных в ячейке А1 Лист1 (допустим было 0 либо пусто , а стало 3 или любое другое значение ) у меня вся ячейка копировалась в Лист2 ячейка А1 уже с измененными данными .
Очень прошу подсказать как это реализовать , либо посоветуйте книгу по макросам с доступным для самый тупых людей языком .
За раннее огромное спасибо всем кто ответил .sd31337
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count = 1 And Target.Address(0, 0) = "A1" Then Sheets("Лист2").Range("A1") = Target.Value End Sub
[/vba]
В модуль Листа1 вставить код[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count = 1 And Target.Address(0, 0) = "A1" Then Sheets("Лист2").Range("A1") = Target.Value End Sub
Подскажите , а если мне нужно что бы у меня в соседний лист 2 копировались данные из столбца А - которые изменились а так же данные B,C,D которые не меняются и всегда одни ите же , грубо говоря столбец А в листе 1 в котором меняются данные и как только данные изменилисьв столбце А у меня вместе с измененными данными копировались еще столбцы B.C.D
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target If Not Intersect(cell, Range("A1:A500")) Is Nothing Then Sheets("Лист2").Cells(Target.Row, Target.Column) = Sheets("Лист1").Cells(Target.Row, Target.Column) End If Next cell End Sub
[/vba]
AlexM,
Подскажите , а если мне нужно что бы у меня в соседний лист 2 копировались данные из столбца А - которые изменились а так же данные B,C,D которые не меняются и всегда одни ите же , грубо говоря столбец А в листе 1 в котором меняются данные и как только данные изменилисьв столбце А у меня вместе с измененными данными копировались еще столбцы B.C.D
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target If Not Intersect(cell, Range("A1:A500")) Is Nothing Then Sheets("Лист2").Cells(Target.Row, Target.Column) = Sheets("Лист1").Cells(Target.Row, Target.Column) End If Next cell End Sub
AlexM, то копируем то что изменилось в листе 1 из ячеек А 2 и данные из соседних столбцов B C D в независимости изменились оини или нет в Лист 2 соответственно в теже ячейки
AlexM, то копируем то что изменилось в листе 1 из ячеек А 2 и данные из соседних столбцов B C D в независимости изменились оини или нет в Лист 2 соответственно в теже ячейкиsd31337
Я понял, что данные могут меняться по всякому, 0 - 3, 3 - 5, и тд. и на эти изменения копировать ячейки, да и запрашивался макрос. А на другом форуме этот вопрос то же есть?
Я понял, что данные могут меняться по всякому, 0 - 3, 3 - 5, и тд. и на эти изменения копировать ячейки, да и запрашивался макрос. А на другом форуме этот вопрос то же есть?AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Да и вообще очень приятно что есть люди такие как Вы , которые профессионалы своего дела и которым не сложно помочь в решении пустяковой проблемы ( пустяковой на мой взгляд для Вас ) просто искал информацию на многих форумах , подсказали только на Вашем и еще одном , в остальных местах давали ссылки на литературу , хотя я и за это очень признателен , а Ваш пример на 100 % мне подошел , еще раз Огромное спасибо.
Да и вообще очень приятно что есть люди такие как Вы , которые профессионалы своего дела и которым не сложно помочь в решении пустяковой проблемы ( пустяковой на мой взгляд для Вас ) просто искал информацию на многих форумах , подсказали только на Вашем и еще одном , в остальных местах давали ссылки на литературу , хотя я и за это очень признателен , а Ваш пример на 100 % мне подошел , еще раз Огромное спасибо.sd31337
AlexM, Спасибо за книги , возможно через пару лет сам буду кому нибудь помогать советом +) Буду читать и стараться во всем этом разобраться что бы больше не задавать глупых вопросов
AlexM, Спасибо за книги , возможно через пару лет сам буду кому нибудь помогать советом +) Буду читать и стараться во всем этом разобраться что бы больше не задавать глупых вопросовsd31337
через пару лет сам буду кому нибудь помогать советом
Зачем так долго ждать. Даже те знания Excel и VBA, которые у вас уже есть, могут кому-то пригодится. Помогайте, вы закрепите и умножите свои познания по в этой программе. Даже хорошо зная функции Excel надо научится их использовать. Это как с языком, можно знать много слов, а не уметь говорить. На конференции можно увидеть множество задач и варианты их решения. Это великолепная школа.
через пару лет сам буду кому нибудь помогать советом
Зачем так долго ждать. Даже те знания Excel и VBA, которые у вас уже есть, могут кому-то пригодится. Помогайте, вы закрепите и умножите свои познания по в этой программе. Даже хорошо зная функции Excel надо научится их использовать. Это как с языком, можно знать много слов, а не уметь говорить. На конференции можно увидеть множество задач и варианты их решения. Это великолепная школа.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
AlexM, Помогите разобраться для понимая что где происходит , а то никак не могу понять , на форуме есть куча тем с примерами по worksheet_change
я понял что Private Sub Worksheet_Change (ByVal Target As Range) тут мы отслеживаем изменения на листе в диапозонеRange который мы обозначили в строке If Not Intersect(cell, Range("A1:A500")) Is Nothing Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Copy (Sheets("Лист2").Cells(Target.Row, 1)) \\ тут мы копируем то что у нас изменилось в Лист1 я по образцу сделал копирование всего что есть на листе 1 в лист 2 Range("A2:D200").Copy Worksheets("Лист2").Range("A2:D200")
потом захотел сделать еще авто фильтр на листе 2 Range("A2:D200").AutoFilter workshetts("Лист2").Range("A2:D200")\\ естественно такой код не отработал мне не до конца понятно как работать с выделенным диапазоном например я хочу что бы Range("A1:D200") выполнил еще какое нибудь действие при изменении набираю range.и в выпадающем списке возможных вариантов выбираю AutoFilter или еще какое либо действие но не совсем понимаю какие параметры вводить .
Если не сложно подскажите как работать с этим , очень хочу научится , на примере авто фильтра , не обязательно рабочий код а просто описание что за что отвечает .
Получилось сделать таким способом Range("A1:D200").Select Selection.AutoFilter \\ но он делает авто фильтр на Лист 2 , а как указать ему что бы делал на Лист 2 ?
Range("A1:D200").Select Worksheets("Лист2").Range("A1:D200") Selection.AutoFilter \\ попробовал вот так но ничего не произошло , и ошибку не выдало
AlexM, Помогите разобраться для понимая что где происходит , а то никак не могу понять , на форуме есть куча тем с примерами по worksheet_change
я понял что Private Sub Worksheet_Change (ByVal Target As Range) тут мы отслеживаем изменения на листе в диапозонеRange который мы обозначили в строке If Not Intersect(cell, Range("A1:A500")) Is Nothing Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Copy (Sheets("Лист2").Cells(Target.Row, 1)) \\ тут мы копируем то что у нас изменилось в Лист1 я по образцу сделал копирование всего что есть на листе 1 в лист 2 Range("A2:D200").Copy Worksheets("Лист2").Range("A2:D200")
потом захотел сделать еще авто фильтр на листе 2 Range("A2:D200").AutoFilter workshetts("Лист2").Range("A2:D200")\\ естественно такой код не отработал мне не до конца понятно как работать с выделенным диапазоном например я хочу что бы Range("A1:D200") выполнил еще какое нибудь действие при изменении набираю range.и в выпадающем списке возможных вариантов выбираю AutoFilter или еще какое либо действие но не совсем понимаю какие параметры вводить .
Если не сложно подскажите как работать с этим , очень хочу научится , на примере авто фильтра , не обязательно рабочий код а просто описание что за что отвечает .
Получилось сделать таким способом Range("A1:D200").Select Selection.AutoFilter \\ но он делает авто фильтр на Лист 2 , а как указать ему что бы делал на Лист 2 ?
Range("A1:D200").Select Worksheets("Лист2").Range("A1:D200") Selection.AutoFilter \\ попробовал вот так но ничего не произошло , и ошибку не выдало sd31337
Сообщение отредактировал sd31337 - Среда, 19.03.2014, 11:32