Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перенос данных с одного листа на другой, "допилить" макрос
 
Здравствуйте!
Замучился с макросом биться :(

Задача:
При каждом изменении диапазона ячеек H12:T12, переносить значения этих ячеек на новую строку листа2
Все усложняется тем, что значения изменяются автоматически - формулой. И макрос - скотина переносит не значение а саму формулу.
Вторая печаль - не могу заставить создавать каждый раз новую строку на листе2. Сейчас макрос заменяет одну и ту же строку.

Помогите пожалуйста
Вот мой код:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Me.[H12:T12].Copy Sheets(2).[A2]
End Sub
 
А если Me.[H12:T12].Value.Copy Sheets(2).[A2]
Ой. Тема с нарушением
Изменено: Sanja - 31 Мар 2015 13:28:10
Согласие есть продукт при полном непротивлении сторон.
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [H12:T12]) Is Nothing Then Exit Sub
    lr = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sheets(2).Range("A" & lr, "M" & lr) = Me.[H12:T12].Value
End Sub
Работать надо не 12 часов, а головой.
 
Leanna:



:(
 
Biblebrox, в файле надо показывать. У меня всё нормально.
У вас нет второго листа?
Изменено: Leanna - 31 Мар 2015 13:39:21
Работать надо не 12 часов, а головой.
 
Вот мой файл:
http://dropmefiles.com/2Bx19
 
Пробелы неправильные скопировались перед lr и sheets.
Работать надо не 12 часов, а головой.
 
Ура не матерится больше.

Но данные появляются на странице 2, только если значение диапазона ячеек H12:T12  изменить вручную.
У меня же они меняются автоматически при изменении значений в столбцах A-E
 
Знаю что в таких случаях создают невидимый текстбокс и где-то сумму изменяемых параметров. Связывают ячейку с суммой с TextBox. И по изменению TextBox делают действия. TextBox делают невидимым. Ещё #2 отсюда поглядите.
Работать надо не 12 часов, а головой.
 
Leanna, Я убрал из вашего кода строчку
Код
If Intersect(Target, [H12:T12]) Is Nothing Then Exit Sub
И все заработало :))))

скажите за что она отвечала? Я так понимаю, эта часть кода смотрела были ли изменения в диапазоне Н12:Т12, и если их не было то прекращала дальнейшее выполнение скрипта?  
Изменено: Biblebrox - 31 Мар 2015 14:25:15
 
Хм. Получается вам надо поставить
Код
If Intersect(Target, Columns("A:E")) Is Nothing Then Exit Sub

Строчка отвечала за то что бы при изменении только в  [H12:T12] писалась строчка на другой лист. Без неё при изменении в любой ячейке будет копироваться строчка на другой лист. Если надо что бы это происходило только по изменению в каком-то конкретном диапазоне, то лучше указать пересечение Intersect.
Работать надо не 12 часов, а головой.
 
Leanna,  Действительно :) при любом изменении появляется новая строчка. Забавно
Спасибо огромное :) теперь все ясно как это работает и устроено.
Вы гений
Изменено: Biblebrox - 31 Мар 2015 22:23:22
Страницы: 1
Читают тему (гостей: 1)