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

Вход

Регистрация

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

 

= Мир MS Excel/Изменение области обработки макроса при изменении таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение области обработки макроса при изменении таблицы (Макросы/Sub)
Изменение области обработки макроса при изменении таблицы
Teem Дата: Вторник, 24.02.2015, 20:15 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Есть макрос очистки таблицы, который очищает определённые ячейки ячейки. В примере это ячейки в которых написаны цифры 1 и 2. Данные удалять нельзя.
[vba]
Код
Sub Макрос()
        Range("B1,E1,A2,A2:F3,B4,E4,A5:F6").Select
        Range("A5").Activate
        Selection.ClearContents
End Sub
[/vba]
Количество строк с цифрами 2 может изменяться.
Подскажите, пожалуйста, как сделать так, чтобы при добавлении или удалении строк с двойками изменялся и диапазон работы макроса.
К сообщению приложен файл: 0164116.xls (33.0 Kb)


Сообщение отредактировал Teem - Среда, 25.02.2015, 08:02
 
Ответить
СообщениеДобрый день.
Есть макрос очистки таблицы, который очищает определённые ячейки ячейки. В примере это ячейки в которых написаны цифры 1 и 2. Данные удалять нельзя.
[vba]
Код
Sub Макрос()
        Range("B1,E1,A2,A2:F3,B4,E4,A5:F6").Select
        Range("A5").Activate
        Selection.ClearContents
End Sub
[/vba]
Количество строк с цифрами 2 может изменяться.
Подскажите, пожалуйста, как сделать так, чтобы при добавлении или удалении строк с двойками изменялся и диапазон работы макроса.

Автор - Teem
Дата добавления - 24.02.2015 в 20:15
Leanna Дата: Вторник, 24.02.2015, 20:20 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
По какому принципу должен изменяться?
Куда вы собираетесь добавлять строки с двойками из примере не ясно. и откуда удалять тоже непонятно?


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеПо какому принципу должен изменяться?
Куда вы собираетесь добавлять строки с двойками из примере не ясно. и откуда удалять тоже непонятно?

Автор - Leanna
Дата добавления - 24.02.2015 в 20:20
Nic70y Дата: Вторник, 24.02.2015, 21:24 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 8769
Репутация: 2276 ±
Замечаний: 0% ±

Excel 2010
Может F5 подойдет?
рекордером так:[vba]
Код
    Columns("A:F").SpecialCells(xlCellTypeConstants, 1).ClearContents
[/vba]т.е. из столбцов A:F удаляются числа


ЮMoney 41001841029809
 
Ответить
СообщениеМожет F5 подойдет?
рекордером так:[vba]
Код
    Columns("A:F").SpecialCells(xlCellTypeConstants, 1).ClearContents
[/vba]т.е. из столбцов A:F удаляются числа

Автор - Nic70y
Дата добавления - 24.02.2015 в 21:24
Manyasha Дата: Вторник, 24.02.2015, 21:58 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Если нужно удалять только ячейки с двойками, а остальные числа оставлять, то можно просто заменить эти ячейки на пустые:
[vba]
Код
Columns("A:F").Replace What:="2", Replacement:="", LookAt:=xlWhole
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеЕсли нужно удалять только ячейки с двойками, а остальные числа оставлять, то можно просто заменить эти ячейки на пустые:
[vba]
Код
Columns("A:F").Replace What:="2", Replacement:="", LookAt:=xlWhole
[/vba]

Автор - Manyasha
Дата добавления - 24.02.2015 в 21:58
Teem Дата: Среда, 25.02.2015, 07:11 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Извтняюсь, что непонятно объяснил.
В ячейках, обозначенных цифрами будет разная информация: цифры, текст, значения из выпадающего списка. В ячейках, обозначенных как "данные" содержатся формулы и наименования строк и столбцов, которые не изменяются.
Строки, условно обозначенные двойками, будут добавляться к уже имеющимся, то есть может быть и три строки подряд, и десять.
Соответственно надо чтобы макрос очищал ячейки с условными единицами и двойками независимо от количества строк с условными двойками.
 
Ответить
СообщениеИзвтняюсь, что непонятно объяснил.
В ячейках, обозначенных цифрами будет разная информация: цифры, текст, значения из выпадающего списка. В ячейках, обозначенных как "данные" содержатся формулы и наименования строк и столбцов, которые не изменяются.
Строки, условно обозначенные двойками, будут добавляться к уже имеющимся, то есть может быть и три строки подряд, и десять.
Соответственно надо чтобы макрос очищал ячейки с условными единицами и двойками независимо от количества строк с условными двойками.

Автор - Teem
Дата добавления - 25.02.2015 в 07:11
Manyasha Дата: Среда, 25.02.2015, 07:49 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Ну ок, заменим и 2-ки и 1-ки :D
[vba]
Код
Columns("A:F").Replace What:="1", Replacement:="", LookAt:=xlWhole
Columns("A:F").Replace What:="2", Replacement:="", LookAt:=xlWhole
[/vba]
Чем не нравится вариант? Очищает все, что найдет, независимо от количества строк, столбцы тоже можно увеличить, например Columns("A:Z")


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеНу ок, заменим и 2-ки и 1-ки :D
[vba]
Код
Columns("A:F").Replace What:="1", Replacement:="", LookAt:=xlWhole
Columns("A:F").Replace What:="2", Replacement:="", LookAt:=xlWhole
[/vba]
Чем не нравится вариант? Очищает все, что найдет, независимо от количества строк, столбцы тоже можно увеличить, например Columns("A:Z")

Автор - Manyasha
Дата добавления - 25.02.2015 в 07:49
Teem Дата: Среда, 25.02.2015, 08:08 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, 2-ки и 1-ки в примере даны для обозначения ячеек необходимых для очистки. Реально там может быть любое число и текст.
Может я не с той стороны захожу? Имеющийся макрос был создан просто путём записи действий.
По идее тут просится цикл, но как его реализовать на практике, ведь нужны условия начала и завершения и при этом не удалить необходимые ячейки?


Сообщение отредактировал Teem - Среда, 25.02.2015, 08:15
 
Ответить
СообщениеManyasha, 2-ки и 1-ки в примере даны для обозначения ячеек необходимых для очистки. Реально там может быть любое число и текст.
Может я не с той стороны захожу? Имеющийся макрос был создан просто путём записи действий.
По идее тут просится цикл, но как его реализовать на практике, ведь нужны условия начала и завершения и при этом не удалить необходимые ячейки?

Автор - Teem
Дата добавления - 25.02.2015 в 08:08
_Boroda_ Дата: Среда, 25.02.2015, 09:22 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Для этого нужен кусок РЕАЛЬНОЙ (или очень похожей) таблицы, чтобы появилась возможность зацепиться за что-то, что отличает строки с данными от тех строк, которые нужно удалить.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДля этого нужен кусок РЕАЛЬНОЙ (или очень похожей) таблицы, чтобы появилась возможность зацепиться за что-то, что отличает строки с данными от тех строк, которые нужно удалить.

Автор - _Boroda_
Дата добавления - 25.02.2015 в 09:22
Teem Дата: Среда, 25.02.2015, 22:20 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Приложил реальный файл.
Добавляются доп. работы и количество часов по абон. работам. Их-то и необходимо удалять.
К сообщению приложен файл: 9271879.xls (51.5 Kb)
 
Ответить
СообщениеПриложил реальный файл.
Добавляются доп. работы и количество часов по абон. работам. Их-то и необходимо удалять.

Автор - Teem
Дата добавления - 25.02.2015 в 22:20
Leanna Дата: Среда, 25.02.2015, 22:27 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Teem, все строки что желтым помечено надо удалить. Если нет то выделите красным цветом что попадает под удаление.
И ещё удалить или очистить?


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеTeem, все строки что желтым помечено надо удалить. Если нет то выделите красным цветом что попадает под удаление.
И ещё удалить или очистить?

Автор - Leanna
Дата добавления - 25.02.2015 в 22:27
Leanna Дата: Среда, 25.02.2015, 22:51 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Teem, Во сложенном файле то что помечено красным очищается от содержимого. Вширь тоже работать должно.
К сообщению приложен файл: clearcells.xls (60.5 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеTeem, Во сложенном файле то что помечено красным очищается от содержимого. Вширь тоже работать должно.

Автор - Leanna
Дата добавления - 25.02.2015 в 22:51
_Boroda_ Дата: Среда, 25.02.2015, 23:13 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант
[vba]
Код
Sub tt()
      r1_ = Range("A" & Rows.Count).End(xlUp).Row
      For i = 4 To r1_
          If Range("D" & i - 1) = Range("D3") Then Range("D" & i).ClearContents
          If Range("A" & i) = "" Then
              If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents
          End If
      Next i
End Sub
[/vba]
К сообщению приложен файл: 9271879_1.xls (54.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант
[vba]
Код
Sub tt()
      r1_ = Range("A" & Rows.Count).End(xlUp).Row
      For i = 4 To r1_
          If Range("D" & i - 1) = Range("D3") Then Range("D" & i).ClearContents
          If Range("A" & i) = "" Then
              If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents
          End If
      Next i
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 25.02.2015 в 23:13
Teem Дата: Четверг, 26.02.2015, 10:31 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Leanna, спасибо огромное!
Хотел взять второй вариант за лаконичность, но он очищает абонентские работы только у первого клиента. Взял первый вариант - очищает все необходимые ячейки.
 
Ответить
Сообщение_Boroda_, Leanna, спасибо огромное!
Хотел взять второй вариант за лаконичность, но он очищает абонентские работы только у первого клиента. Взял первый вариант - очищает все необходимые ячейки.

Автор - Teem
Дата добавления - 26.02.2015 в 10:31
_Boroda_ Дата: Четверг, 26.02.2015, 10:42 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
н очищает абонентские работы только у первого клиента

Да, пропустил я этот момент.
Тогда так можно:
[vba]
Код
Sub tt()
     Application.ScreenUpdating = 0
     r1_ = Range("A" & Rows.Count).End(xlUp).Row
     For i = 4 To r1_
         If Range("D" & i - 1) = Range("D3") Then
             For j = 4 To 100 Step 3
                 Cells(i, j).ClearContents
             Next j
         End If
         If Range("A" & i) = "" Then
             If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents
         End If
     Next i
     Application.ScreenUpdating = 1
End Sub
[/vba]
К сообщению приложен файл: 9271879_2.xls (55.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
н очищает абонентские работы только у первого клиента

Да, пропустил я этот момент.
Тогда так можно:
[vba]
Код
Sub tt()
     Application.ScreenUpdating = 0
     r1_ = Range("A" & Rows.Count).End(xlUp).Row
     For i = 4 To r1_
         If Range("D" & i - 1) = Range("D3") Then
             For j = 4 To 100 Step 3
                 Cells(i, j).ClearContents
             Next j
         End If
         If Range("A" & i) = "" Then
             If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents
         End If
     Next i
     Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 26.02.2015 в 10:42
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение области обработки макроса при изменении таблицы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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