Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сумма с нарастающим итогом - Страница 3 - Мир MS Excel

Старая форма входа
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: китин, _Boroda_  
Сумма с нарастающим итогом
RAN Дата: Четверг, 28.02.2013, 19:07 | Сообщение № 41
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Насколько я понимаю, таблица не слишком велика
[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]

Писал в форум без проверки. cool


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНасколько я понимаю, таблица не слишком велика
[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]

Писал в форум без проверки. cool

Автор - RAN
Дата добавления - 28.02.2013 в 19:07
light26 Дата: Четверг, 28.02.2013, 19:10 | Сообщение № 42
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Спасибо.
Цитата (RAN)
Насколько я понимаю, таблица не слишком велика

80 пунктов. Периодически (раз в год) пункты могут добавляться.


Я не волшебник. Я только учусь
 
Ответить
СообщениеСпасибо.
Цитата (RAN)
Насколько я понимаю, таблица не слишком велика

80 пунктов. Периодически (раз в год) пункты могут добавляться.

Автор - light26
Дата добавления - 28.02.2013 в 19:10
RAN Дата: Четверг, 28.02.2013, 19:11 | Сообщение № 43
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Ну и пропиши 80. Раз в год добавишь. biggrin


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНу и пропиши 80. Раз в год добавишь. biggrin

Автор - 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
Дата добавления - 28.02.2013 в 19:13
light26 Дата: Четверг, 28.02.2013, 19:14 | Сообщение № 45
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Цитата (RAN)
Ну и пропиши 80. Раз в год добавишь.

Понял уже smile


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Цитата (RAN)
Ну и пропиши 80. Раз в год добавишь.

Понял уже smile

Автор - light26
Дата добавления - 28.02.2013 в 19:14
RAN Дата: Четверг, 28.02.2013, 19:39 | Сообщение № 46
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не обязательна. Но тогда посмотри параметры Address


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе обязательна. Но тогда посмотри параметры Address

Автор - RAN
Дата добавления - 28.02.2013 в 19:39
RAN Дата: Четверг, 28.02.2013, 23:40 | Сообщение № 47
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Держи для формирования строки массива ячеек.
Скопируй результат в окне immediate и вставь в текст макроса.
[vba]
Код
Sub qq()
a = """" & Replace(Selection.Address, ",", """,""") & """"
Debug.Print a
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал 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 smile


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Цитата (RAN)
Скопируй результат в окне immediate и вставь в текст макроса.

Да уж. Так гораздо быстрее )))
Спасибо.
Заодно разобрался с причиной, почему макрос не работал, когда адреса бил вручную: оказалось для VBA g1<>G1 smile

Автор - light26
Дата добавления - 02.03.2013 в 17:20
light26 Дата: Суббота, 02.03.2013, 17:47 | Сообщение № 49
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Андрей, что-то не так.
Данные из ячейки с первым адресом суммируются, с других адресов - нет sad


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Воскресенье, 03.03.2013, 14:11
 
Ответить
СообщениеАндрей, что-то не так.
Данные из ячейки с первым адресом суммируются, с других адресов - нет sad

Автор - light26
Дата добавления - 02.03.2013 в 17:47
light26 Дата: Воскресенье, 03.03.2013, 14:12 | Сообщение № 50
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Для образца
К сообщению приложен файл: 2874337.xls (30.5 Kb)


Я не волшебник. Я только учусь
 
Ответить
СообщениеДля образца

Автор - light26
Дата добавления - 03.03.2013 в 14:12
RAN Дата: Воскресенье, 03.03.2013, 14:15 | Сообщение № 51
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Ошибка была здесь
Правильно так
[vba]
Код
    End With
Exit For
End If
Next
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал 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
Дата добавления - 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
Дата добавления - 03.03.2013 в 14:50
RAN Дата: Воскресенье, 03.03.2013, 15:03 | Сообщение № 54
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Почему сначала 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
Дата добавления - 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
Дата добавления - 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
Дата добавления - 03.03.2013 в 15:22
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!