Доброго времени суток! Задача следующая: необходимо при каждом изменении значения в ячейке, при этом значение должно быть строго больше нуля, новое значение выводить в другую ячейку, после каждого изменения значения, сдвигая ячейку вниз.
Проблема номер один: значения в ячейку не вводятся, а получаются путем операций с другими ячейками, т.е. код типа: [vba]
Код
Dim n_
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, [a1]) Is Nothing Then n_ = [a1] End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer
If Not Intersect(Target, [a1]) Is Nothing Then If [a1] <> n_ Then If [a1] > 0 Then [b1] = [b1] + 1 End If End If End If End Sub
[/vba] Не работает, т.к. в нем необходимо изменять именно конкретную ячейку.
Проблема номер два: не получается сделать вывод значений изменяемой ячейки в отдельную колонку.
Файл во вложении.
Доброго времени суток! Задача следующая: необходимо при каждом изменении значения в ячейке, при этом значение должно быть строго больше нуля, новое значение выводить в другую ячейку, после каждого изменения значения, сдвигая ячейку вниз.
Проблема номер один: значения в ячейку не вводятся, а получаются путем операций с другими ячейками, т.е. код типа: [vba]
Код
Dim n_
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, [a1]) Is Nothing Then n_ = [a1] End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer
If Not Intersect(Target, [a1]) Is Nothing Then If [a1] <> n_ Then If [a1] > 0 Then [b1] = [b1] + 1 End If End If End If End Sub
[/vba] Не работает, т.к. в нем необходимо изменять именно конкретную ячейку.
Проблема номер два: не получается сделать вывод значений изменяемой ячейки в отдельную колонку.
Как идея, по событию Calulate сравнивать значения итересующей нас ячейки с условием и с со "здвинутой ячейкой" . ну и действовать по желаемому алгоритму. [vba]
Код
Private Sub Worksheet_Calculate() Application.EnableEvents = False If [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then If [a7] > 0 Then Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7] End If End If Application.EnableEvents = True End Sub
[/vba]
Или чуть короче для записи
[vba]
Код
Private Sub Worksheet_Calculate() Application.EnableEvents = False If [a7] > 0 and [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then _ Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7] Application.EnableEvents = True End Sub
[/vba]
tsch,
Как идея, по событию Calulate сравнивать значения итересующей нас ячейки с условием и с со "здвинутой ячейкой" . ну и действовать по желаемому алгоритму. [vba]
Код
Private Sub Worksheet_Calculate() Application.EnableEvents = False If [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then If [a7] > 0 Then Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7] End If End If Application.EnableEvents = True End Sub
[/vba]
Или чуть короче для записи
[vba]
Код
Private Sub Worksheet_Calculate() Application.EnableEvents = False If [a7] > 0 and [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then _ Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7] Application.EnableEvents = True End Sub