Я здесь вообще сложного ничего не вижу. Просто для построения нужного Вам кода необходимо четко понимать как и что у вас там устроено в оригинале, как и что нужно получить. Из за нечетко сформулированной задачи - нет четкого ответа
Я здесь вообще сложного ничего не вижу. Просто для построения нужного Вам кода необходимо четко понимать как и что у вас там устроено в оригинале, как и что нужно получить. Из за нечетко сформулированной задачи - нет четкого ответа fan-vba
Никак не пойму проблемы. Чем не подходит код из №2? После ввода значения в ячейку А запускается пересчет книги (все формулы на всех листах), так что к "шагу 3" можно смело добавить любое количество шагов. Пока пересчет не окончится, событие Change не возникнет, и счетчик не изменится.
Никак не пойму проблемы. Чем не подходит код из №2? После ввода значения в ячейку А запускается пересчет книги (все формулы на всех листах), так что к "шагу 3" можно смело добавить любое количество шагов. Пока пересчет не окончится, событие Change не возникнет, и счетчик не изменится.RAN
Private Sub Worksheet_Change(ByVal Target As Range) Dim i& If Target.Row < 3 Then Exit Sub If Target.Column > 1 Then Exit Sub For i = 3 To Cells(Rows.Count, 5).End(xlUp).Row If Cells(i, 5) <> counter(i, 1) Then Cells(i, 6) = Cells(i, 6) + 1 Next End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row < 3 Then Exit Sub If Target.Column > 1 Then Exit Sub counter = Range(Cells(1, 5), Cells(Rows.Count, 5).End(xlUp)).Value End Sub
[/vba]
Чуть исправил
И стоило два дня мозги людям пудрить? [vba]
Код
Dim counter
Private Sub Worksheet_Change(ByVal Target As Range) Dim i& If Target.Row < 3 Then Exit Sub If Target.Column > 1 Then Exit Sub For i = 3 To Cells(Rows.Count, 5).End(xlUp).Row If Cells(i, 5) <> counter(i, 1) Then Cells(i, 6) = Cells(i, 6) + 1 Next End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row < 3 Then Exit Sub If Target.Column > 1 Then Exit Sub counter = Range(Cells(1, 5), Cells(Rows.Count, 5).End(xlUp)).Value End Sub
Private Sub Worksheet_Calculate() Static test$ If [A1] <= 1000 Then If [A1] <> test Then Call counter End If End If test = [A1] End Sub
Sub counter() Application.EnableEvents = False Range("A2") = Range("A2") + 1 Application.EnableEvents = True End Sub
[/vba]
Ребята, вот пишу для вас всех кому может понадобится код макроса автоматического счетчика на "калькулейте" как я и писал в начале, при чем универсального, под любые нужды и который работает от значений формул т.е. не от ручного ввода. Долго я его искал, но пришлось собирать по крупицам и доводить до рабочего состояния самому. А1 - ячейка откуда берет данные счетчик, А2 - ячейка куда выводит данные счетчик. 1000 это значение до которого счетчик сравнивает статистику ячейки А1. Можно изменить на какое угодно или взять в скобки зафиксировать. Так, что пользуйтесь. Всем пока!!!
[vba]
Код
Private Sub Worksheet_Calculate() Static test$ If [A1] <= 1000 Then If [A1] <> test Then Call counter End If End If test = [A1] End Sub
Sub counter() Application.EnableEvents = False Range("A2") = Range("A2") + 1 Application.EnableEvents = True End Sub
[/vba]
Ребята, вот пишу для вас всех кому может понадобится код макроса автоматического счетчика на "калькулейте" как я и писал в начале, при чем универсального, под любые нужды и который работает от значений формул т.е. не от ручного ввода. Долго я его искал, но пришлось собирать по крупицам и доводить до рабочего состояния самому. А1 - ячейка откуда берет данные счетчик, А2 - ячейка куда выводит данные счетчик. 1000 это значение до которого счетчик сравнивает статистику ячейки А1. Можно изменить на какое угодно или взять в скобки зафиксировать. Так, что пользуйтесь. Всем пока!!!andalexm