Сумма с нарастающим итогом
RAN
Дата: Четверг, 28.02.2013, 19:07 |
Сообщение № 41
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Насколько я понимаю, таблица не слишком велика [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim a a = Array("$A$1", "$D$1") ' вставить нужные адреса For i = 0 to Ubound(a) If Target.Address Like "*" & a(i) & "*" then With Target Application.EnableEvents = False ActiveSheet.Unprotect .Offset(, -2) = .Offset(, -2) + .Value .Offset(, -4) = .Offset(, -4) + .Value ActiveSheet.Protect Application.EnableEvents = True End With End If Exit For Next End Sub
[/vba] Писал в форум без проверки.
Насколько я понимаю, таблица не слишком велика [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim a a = Array("$A$1", "$D$1") ' вставить нужные адреса For i = 0 to Ubound(a) If Target.Address Like "*" & a(i) & "*" then With Target Application.EnableEvents = False ActiveSheet.Unprotect .Offset(, -2) = .Offset(, -2) + .Value .Offset(, -4) = .Offset(, -4) + .Value ActiveSheet.Protect Application.EnableEvents = True End With End If Exit For Next End Sub
[/vba] Писал в форум без проверки. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Насколько я понимаю, таблица не слишком велика [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim a a = Array("$A$1", "$D$1") ' вставить нужные адреса For i = 0 to Ubound(a) If Target.Address Like "*" & a(i) & "*" then With Target Application.EnableEvents = False ActiveSheet.Unprotect .Offset(, -2) = .Offset(, -2) + .Value .Offset(, -4) = .Offset(, -4) + .Value ActiveSheet.Protect Application.EnableEvents = True End With End If Exit For Next End Sub
[/vba] Писал в форум без проверки. Автор - RAN Дата добавления - 28.02.2013 в 19:07
light26
Дата: Четверг, 28.02.2013, 19:10 |
Сообщение № 42
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Спасибо. Цитата (RAN )
Насколько я понимаю, таблица не слишком велика
80 пунктов. Периодически (раз в год) пункты могут добавляться.
Спасибо. Цитата (RAN )
Насколько я понимаю, таблица не слишком велика
80 пунктов. Периодически (раз в год) пункты могут добавляться. light26
Я не волшебник. Я только учусь
Ответить
Сообщение Спасибо. Цитата (RAN )
Насколько я понимаю, таблица не слишком велика
80 пунктов. Периодически (раз в год) пункты могут добавляться. Автор - light26 Дата добавления - 28.02.2013 в 19:10
RAN
Дата: Четверг, 28.02.2013, 19:11 |
Сообщение № 43
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Ну и пропиши 80. Раз в год добавишь.
Ну и пропиши 80. Раз в год добавишь. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Ну и пропиши 80. Раз в год добавишь. Автор - RAN Дата добавления - 28.02.2013 в 19:11
light26
Дата: Четверг, 28.02.2013, 19:13 |
Сообщение № 44
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Цитата (RAN )
вставить нужные адреса
Значит все-такиЦитата (light26 )
для каждого пункта писать команду макроса отдельно?
Цитата (RAN )
"$A$1", "$D$1"
А "фиксация" ячеек "долларом" обязательна? Или можно просто указать А1, D1?
Цитата (RAN )
вставить нужные адреса
Значит все-такиЦитата (light26 )
для каждого пункта писать команду макроса отдельно?
Цитата (RAN )
"$A$1", "$D$1"
А "фиксация" ячеек "долларом" обязательна? Или можно просто указать А1, D1?light26
Я не волшебник. Я только учусь
Ответить
Сообщение Цитата (RAN )
вставить нужные адреса
Значит все-такиЦитата (light26 )
для каждого пункта писать команду макроса отдельно?
Цитата (RAN )
"$A$1", "$D$1"
А "фиксация" ячеек "долларом" обязательна? Или можно просто указать А1, D1?Автор - light26 Дата добавления - 28.02.2013 в 19:13
light26
Дата: Четверг, 28.02.2013, 19:14 |
Сообщение № 45
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Цитата (RAN )
Ну и пропиши 80. Раз в год добавишь.
Понял уже
Цитата (RAN )
Ну и пропиши 80. Раз в год добавишь.
Понял уже light26
Я не волшебник. Я только учусь
Ответить
Сообщение Цитата (RAN )
Ну и пропиши 80. Раз в год добавишь.
Понял уже Автор - light26 Дата добавления - 28.02.2013 в 19:14
RAN
Дата: Четверг, 28.02.2013, 19:39 |
Сообщение № 46
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Не обязательна. Но тогда посмотри параметры Address
Не обязательна. Но тогда посмотри параметры Address RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Не обязательна. Но тогда посмотри параметры Address Автор - RAN Дата добавления - 28.02.2013 в 19:39
RAN
Дата: Четверг, 28.02.2013, 23:40 |
Сообщение № 47
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Держи для формирования строки массива ячеек. Скопируй результат в окне immediate и вставь в текст макроса. [vba]Код
Sub qq() a = """" & Replace(Selection.Address, ",", """,""") & """" Debug.Print a End Sub
[/vba]
Держи для формирования строки массива ячеек. Скопируй результат в окне immediate и вставь в текст макроса. [vba]Код
Sub qq() a = """" & Replace(Selection.Address, ",", """,""") & """" Debug.Print a End Sub
[/vba] RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Четверг, 28.02.2013, 23:44
Ответить
Сообщение Держи для формирования строки массива ячеек. Скопируй результат в окне immediate и вставь в текст макроса. [vba]Код
Sub qq() a = """" & Replace(Selection.Address, ",", """,""") & """" Debug.Print a End Sub
[/vba] Автор - RAN Дата добавления - 28.02.2013 в 23:40
light26
Дата: Суббота, 02.03.2013, 17:20 |
Сообщение № 48
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Цитата (RAN )
Скопируй результат в окне immediate и вставь в текст макроса.
Да уж. Так гораздо быстрее ))) Спасибо. Заодно разобрался с причиной, почему макрос не работал, когда адреса бил вручную: оказалось для VBA g1<>G1
Цитата (RAN )
Скопируй результат в окне immediate и вставь в текст макроса.
Да уж. Так гораздо быстрее ))) Спасибо. Заодно разобрался с причиной, почему макрос не работал, когда адреса бил вручную: оказалось для VBA g1<>G1 light26
Я не волшебник. Я только учусь
Ответить
Сообщение Цитата (RAN )
Скопируй результат в окне immediate и вставь в текст макроса.
Да уж. Так гораздо быстрее ))) Спасибо. Заодно разобрался с причиной, почему макрос не работал, когда адреса бил вручную: оказалось для VBA g1<>G1 Автор - light26 Дата добавления - 02.03.2013 в 17:20
light26
Дата: Суббота, 02.03.2013, 17:47 |
Сообщение № 49
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Андрей, что-то не так. Данные из ячейки с первым адресом суммируются, с других адресов - нет
Андрей, что-то не так. Данные из ячейки с первым адресом суммируются, с других адресов - нет light26
Я не волшебник. Я только учусь
Сообщение отредактировал light26 - Воскресенье, 03.03.2013, 14:11
Ответить
Сообщение Андрей, что-то не так. Данные из ячейки с первым адресом суммируются, с других адресов - нет Автор - light26 Дата добавления - 02.03.2013 в 17:47
light26
Дата: Воскресенье, 03.03.2013, 14:12 |
Сообщение № 50
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Для образца
Я не волшебник. Я только учусь
Ответить
Сообщение Для образца Автор - light26 Дата добавления - 03.03.2013 в 14:12
RAN
Дата: Воскресенье, 03.03.2013, 14:15 |
Сообщение № 51
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Ошибка была здесь Правильно так [vba]Код
End With Exit For End If Next End Sub
[/vba]
Ошибка была здесь Правильно так [vba]Код
End With Exit For End If Next End Sub
[/vba] RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Воскресенье, 03.03.2013, 14:17
Ответить
Сообщение Ошибка была здесь Правильно так [vba]Код
End With Exit For End If Next End Sub
[/vba] Автор - RAN Дата добавления - 03.03.2013 в 14:15
light26
Дата: Воскресенье, 03.03.2013, 14:31 |
Сообщение № 52
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
RAN, спасибо. Не совсем понял почему сначала Exit For, затем End If. По моей логике должно быть наоборот, но VBA виднее )))
RAN, спасибо. Не совсем понял почему сначала Exit For, затем End If. По моей логике должно быть наоборот, но VBA виднее ))) light26
Я не волшебник. Я только учусь
Ответить
Сообщение RAN, спасибо. Не совсем понял почему сначала Exit For, затем End If. По моей логике должно быть наоборот, но VBA виднее ))) Автор - light26 Дата добавления - 03.03.2013 в 14:31
light26
Дата: Воскресенье, 03.03.2013, 14:50 |
Сообщение № 53
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Андрей, я тут с еще одной ошибкой столкнулся: при выделении всего столбца I и нажатии Delete, макрос выдает ошибку. Исправил вставкой On Error Resume Next перед Dim
Андрей, я тут с еще одной ошибкой столкнулся: при выделении всего столбца I и нажатии Delete, макрос выдает ошибку. Исправил вставкой On Error Resume Next перед Dim light26
Я не волшебник. Я только учусь
Ответить
Сообщение Андрей, я тут с еще одной ошибкой столкнулся: при выделении всего столбца I и нажатии Delete, макрос выдает ошибку. Исправил вставкой On Error Resume Next перед Dim Автор - light26 Дата добавления - 03.03.2013 в 14:50
RAN
Дата: Воскресенье, 03.03.2013, 15:03 |
Сообщение № 54
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Почему сначала Exit For, затем End If. Если условие выполнилось, дальнейшая проверка не нужна, выходим из цикла. Можешь убрать Exit For. Будет все то-же, только цикл прокрутится до конца, ничего не находя. По ошибке правильнее [vba]Код
If Target.Cells.Count > 1 Then Exit Sub
[/vba] Тогда макрос будет срабатывать только при изменении 1 ячейки.
Почему сначала Exit For, затем End If. Если условие выполнилось, дальнейшая проверка не нужна, выходим из цикла. Можешь убрать Exit For. Будет все то-же, только цикл прокрутится до конца, ничего не находя. По ошибке правильнее [vba]Код
If Target.Cells.Count > 1 Then Exit Sub
[/vba] Тогда макрос будет срабатывать только при изменении 1 ячейки. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Почему сначала Exit For, затем End If. Если условие выполнилось, дальнейшая проверка не нужна, выходим из цикла. Можешь убрать Exit For. Будет все то-же, только цикл прокрутится до конца, ничего не находя. По ошибке правильнее [vba]Код
If Target.Cells.Count > 1 Then Exit Sub
[/vba] Тогда макрос будет срабатывать только при изменении 1 ячейки. Автор - RAN Дата добавления - 03.03.2013 в 15:03
light26
Дата: Воскресенье, 03.03.2013, 15:14 |
Сообщение № 55
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Цитата (RAN )
По ошибке правильнее If Target.Cells.Count > 1 Then Exit Sub
Тут, как я понимаю, End if уже не нужен, правильно? Ведь условие сформировано полностью в одной строке.
Цитата (RAN )
По ошибке правильнее If Target.Cells.Count > 1 Then Exit Sub
Тут, как я понимаю, End if уже не нужен, правильно? Ведь условие сформировано полностью в одной строке.light26
Я не волшебник. Я только учусь
Ответить
Сообщение Цитата (RAN )
По ошибке правильнее If Target.Cells.Count > 1 Then Exit Sub
Тут, как я понимаю, End if уже не нужен, правильно? Ведь условие сформировано полностью в одной строке.Автор - light26 Дата добавления - 03.03.2013 в 15:14
light26
Дата: Воскресенье, 03.03.2013, 15:22 |
Сообщение № 56
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Цитата (RAN )
Если условие выполнилось, дальнейшая проверка не нужна, выходим из цикла. Можешь убрать Exit For. Будет все то-же, только цикл прокрутится до конца, ничего не находя.
Понял. Значит это просто для сокращения времени работы макроса.
Цитата (RAN )
Если условие выполнилось, дальнейшая проверка не нужна, выходим из цикла. Можешь убрать Exit For. Будет все то-же, только цикл прокрутится до конца, ничего не находя.
Понял. Значит это просто для сокращения времени работы макроса.light26
Я не волшебник. Я только учусь
Ответить
Сообщение Цитата (RAN )
Если условие выполнилось, дальнейшая проверка не нужна, выходим из цикла. Можешь убрать Exit For. Будет все то-же, только цикл прокрутится до конца, ничего не находя.
Понял. Значит это просто для сокращения времени работы макроса.Автор - light26 Дата добавления - 03.03.2013 в 15:22