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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 11:11   #1
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию Историе изменение ячеек

Здравствуйте ВСЕМ!
Имеется код:
Код:
Public iData

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Dim i As String
    Dim li As Long, le As Long
    For li = 10 To cells(Rows.Count, 3).End(xlUp).Row
    For le = 1 To cells(9, Columns.Count).End(xlToLeft).Column
    If cells(li, le).Interior.ColorIndex = 36 Then
    iData = cells(li, le)
    End If
    Next le
    Next li
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not iData = Empty Then Target.NoteText Text:="Изменено: " _
    & Now & Chr(10) & "Прошлое значение: " & iData
End Sub
который ДОЛЖЕН(!) отслеживать историю изменение значений в жёлтых ячейках в таблице
но код не хочет работать
как быть? - это первый вопрос
второй вопрос: как сделать чтобы отслеживал не одно изменение, 10 предыдущих(то есть 10 раз изменяем значение в жёлтых ячейках и все 10 предыдущих значений были в примечании)
заранее спасибо!
Артур Иваныч вне форума Ответить с цитированием
Старый 10.12.2009, 11:31   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Давайте уточним.
1. Зачем выполнять код при выделении любой ячейки листа, если Вы контролируете (зачем-то, при помощи совершенно лишних циклов) всего одну ячейку "C9" ?
2. Что нужно получить в итоге? Я понял так: при изменении контролируемой ячейки, если она желтая и если она не пуста, то в примечании должны находиться 10 предыдущих значений и дата (время) изменения ячейки. Так?
3. Вы лучше объясните какую (какие) ячейку по какомк признаку проверять и что должно быть в итоге при различных результатах проверки.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.12.2009, 11:40   #3
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

вобщем имеется таблица на листе
вот
и на этой таблице есть ячейки, они находяться в определённом месте
чтобы код вба эти самые ячейки нашёл, нужно ввести условия:
1) что строки жёлтые
2) а столбцы:
Dim lLastCol As Long
lLastCol = cells(9, Columns.Count).End(xlToLeft).Column
For le = 4 To lLastCol-3
cells(...,le)
cells(...,lLastCol)
Next le
то есть последний столбец и столбцы между столбцами 4 и предпредпоследним и только в жёлтых ячейках!!!


но для начала я хотел все жёлтые ячейки таблицы таким кодом "наградить"
вобщем в ячейке у нас введено значение, как только мы его изменяем в этой чеке появляется примечание, в котором написано дата и время изменения и предыдущее значение!
хотелось бы чтобы не только предущее значение было, а ещё предпредыдещее, предпредпредыдущее и так далее....то есть последние 10 изменённых значений было
Артур Иваныч вне форума Ответить с цитированием
Старый 10.12.2009, 11:40   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Имеется код:
А объясните нам для начала, что делает этот код?

Нафига в переменную iData записывать по-очереди значения из диапазона ячеек???

Цитата:
хотелось бы чтобы не только предущее значение было, а ещё предпредыдещее, предпредпредыдущее и так далее....то есть последние 10 изменённых значений было
Сделать это можно, но сложно.
Зачем Вам это?
EducatedFool вне форума Ответить с цитированием
Старый 10.12.2009, 11:49   #5
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

я не уверен что это правльный алгоритм
мне бы просто чтобы жёлтые ячейки в таблице имели такое свойство при изменении их содержимого выдавалось бы примечание, в котором отображается дата изменение и последнее значение до изменение!!!

нужно, так как в таблице некоторые данные в этих ячейках постоянно меняются и предыдещИЕ значенИЯ нужны для неких операциях!
Артур Иваныч вне форума Ответить с цитированием
Старый 10.12.2009, 13:05   #6
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

вот это вот свойство:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not iData = Empty Then Target.NoteText Text:="Изменено: " _
    & Now & Chr(10) & "Прошлое значение: " & iData
End Sub
нужно дать группе ячеек
вот и всё
Артур Иваныч вне форума Ответить с цитированием
Старый 10.12.2009, 13:24   #7
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

вот пример "История изменений значений в ячекйках"
только оно работает для ВСЕХ ячеек листа
попрообуйте ввести в любвую ячейку значение
а потом измените его и увидите примечание с историй

а как сделать такую историю для конкретных ячеек, но только НЕ таким способ: Cell(1,1) или Range("A1:B1")

так как эти самые ячейки, которым я хочу дать "историю" могут находиться в таблице в любых местах, причём постоянно увеличиваться или уменьшаться в количестве и менять своё положение, то есть тут условий и циклов не избежать
Вы мне просто подскажите, пожалуйсто, как дать историю ячейкам определённым, которые задаются через циклы или условия
Вложения
Тип файла: rar История изменения ячеек.rar (6.6 Кб, 83 просмотров)
Артур Иваныч вне форума Ответить с цитированием
Старый 10.12.2009, 14:52   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вот это и не понятно, какие ячейки Вам нужны.
Для того, чтобы в примечании к ячейке хранились 10 последних измененных значений с датой изменения, можно использовать пример во вложении (без всяких глобальных переменных). Попробуйте поизменять значение ячейки "A1" и после каждого изменения смотрите примечание.
Для реализации Вашей задачи, вместо строки
Код:
If Target.Address <> [A1].Address Then Exit Sub
нужно вставить код, который будет проверять, подходит ли текущая измененная ячейка под Ваши критерии, или нет. Повторяю, что именно эти критерии мне и неизвестны.
Вложения
Тип файла: rar Книга1.rar (7.3 Кб, 70 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.12.2009, 15:19   #9
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

я выложу пример
Артур Иваныч вне форума Ответить с цитированием
Старый 10.12.2009, 15:36   #10
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

хотя даже пример-то не нужен
вот эти ячейки в таблице:
Код:
Dim li As Long, le As Long
    For li = 10 To cells(Rows.Count, 3).End(xlUp).Row
        For le = 1 To cells(9, Columns.Count).End(xlToLeft).Column
            If cells(li, le).Interior.ColorIndex = 36 Then
                cells(li, le) = ........
            End If
        Next le
    Next li
cells(li, le) - вот этим ячейкам нужно дать "историю изменений их содержимого"
Артур Иваныч вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смещение ячеек Zulius Microsoft Office Excel 3 26.11.2009 12:30
макрос - подсчитать для каждой строки кол-во ячеек с «+», кол-во ячеек с «-» Vadim_abs Microsoft Office Excel 36 14.07.2009 12:08
суммирование ячеек =) peq Microsoft Office Excel 3 08.05.2009 13:24
Изменение ячеек защищённого листа Slim Microsoft Office Excel 3 07.02.2007 22:28