Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2015, 05:43   #1
qwerty456
 
Регистрация: 20.08.2009
Сообщений: 3
По умолчанию Создание истории обновления ячеек до полного заполнения листа

Исходные данные:

- внешняя программа направляет в определенную область листа (A1:C42) Excel цифровые данные;
- значения обновляются(изменяются каждую секунду);

Задача:

1) при каждом изменении любой ячейки из области скопировать всю область (A1:C42) через одну строку (вниз (A44:C86)) и так до конца листа (главное сохранить всю историю изменений);
2) после того, как упираемся (доходим до определенной (либо последней) строки листа, т.е. не хватает строк для успешного копирования - переходим в через столбец вправо (в столбцы E:G) и так до конца столбцов.
qwerty456 вне форума Ответить с цитированием
Старый 24.10.2015, 09:00   #2
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:C42")) Is Nothing Then Exit Sub 'Or Target.Cells.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    LastCol1 = Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column
    LastRowA = Cells(ActiveSheet.Rows.Count, LastCol1).End(xlUp).Row + 1
    Range("A1:c42").Copy
    If LastRowA >= 65000 Then
        LastCol1 = LastCol1 + 4
        LastRowA = 0
     End If
    Cells(LastRowA + 1, LastCol1 - 2).PasteSpecial
    Application.EnableEvents = True
End Sub
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 24.10.2015, 09:41   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

AleksandrH, в данном случае, данные на лист попадают по DDE
Worksheet_Change здесь не подойдёт, - он не перехватит это событие
Нужна любая формула на листе, ссылающаяся на диапазон A1:C42,
и обработка события Worksheet_Calculate
EducatedFool вне форума Ответить с цитированием
Старый 24.10.2015, 10:13   #4
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

А может быть что Worksheet_Change не срабатывает на изменения которые вручную вносятся? Например, когда писал етот код, встретился с тем, что делаю изменения вручную в диапазоне А1:С42, но процедура Worksheet_Change не запускалась почему-то.
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 24.10.2015, 10:46   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

да бывает,

когда при отладке Вы остановили выполнение Вашего кода где-то после строки
Application.EnableEvents = False
и до строки
Application.EnableEvents = True

теперь в системе запрещено генерирование событий и Worksheet_Change сработает, когда выполните любую процедуру с
Application.EnableEvents = True
или выгрузить / загрузить Ексель, он не злопамятный - не запоминает, что Вы отключили события в прошлом сеансе.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка ячеек одного листа на ячейки другого листа n0str0m0 Microsoft Office Excel 10 31.12.2011 12:11
Сохранение истории изменения значений ячеек в таблице Excel Asblue Microsoft Office Excel 2 26.10.2011 10:27
[Орешек] Обновления истории найденных на ПК файлов... 2 строки 2 одинаковых имени файла но разные пути... Человек_Борща Общие вопросы Delphi 2 03.07.2011 14:31
грид без полного обновления ANsy Компоненты Delphi 3 15.10.2010 09:57
Выбор полного прерывающегося диапазона ячеек SilverSmallFish Microsoft Office Excel 6 11.03.2010 08:57