Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2009, 07:34   #1
gadspider
 
Регистрация: 17.07.2009
Сообщений: 9
По умолчанию Быстрое удаление содержимого ячеек

Допустим мне надо очистить содержимое ячеек ниже i-строки и правее j-столбца. Есть ли фнукция подобная в Excel VBA? Это все можно сделать циклом, но на него от большого оьъема данных уходит много времени. Без цикла можно как нибудь?
gadspider вне форума Ответить с цитированием
Старый 18.07.2009, 07:47   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    i = 5: j = 8
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    Rows(i + 1 & ":" & Rows.Count).ClearContents    ' очистка строк
    Range(Cells(j + 1), Cells(Columns.Count)).EntireColumn.ClearContents    ' очистка столбцов
End Sub
Для полной очистки (вместе с форматированием) замените ClearContents на Clear
EducatedFool вне форума Ответить с цитированием
Старый 18.07.2009, 07:56   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Или сразу весь диапазон
Код:
Sub test()
    i = 5: j = 8
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    Range(Cells(i + 1, j + 1), Cells(Rows.Count, Columns.Count)).ClearContents 
    Application.ScreenUpdating = True  
End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 18.07.2009, 08:01   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Или сразу весь диапазон
Range(Cells(i + 1, j + 1), Cells(Rows.Count, Columns.Count)).ClearContents
Да не весь требуемый диапазон очищается...

EducatedFool вне форума Ответить с цитированием
Старый 18.07.2009, 08:04   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Да не весь требуемый диапазон очищается...
Почему же, Игорь?
Как и просили ниже указанной строки и правее указанного столбца. Так и получается:
ниже строки 5 и правее столбца 8 все очищается.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 18.07.2009, 08:20   #6
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Я чет не правильно может понял? Надо полностьюю все, что ниже и правее очищать? Тогда так
Код:
Sub test()
Dim i As Long, j As Long
    i = 5: j = 8
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    Union(Range(Cells(i + 1, 1), Cells(Rows.Count, Columns.Count)), Range(Cells(1, j + 1), Cells(Rows.Count, Columns.Count))).ClearContents
    Application.ScreenUpdating = True
End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 18.07.2009, 08:50   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Как и просили ниже указанной строки и правее указанного столбца. Так и получается:
ниже строки 5 и правее столбца 8 все очищается.
С точки зрения логики именно так и надо было сделать.
Но мне почему-то показалось, что на самом деле требуется сначала очистить всё, что ниже указанной строки, а потом очистить всё, что правее указанного столбца.

Привык уже, что задания формулируются недостаточно чётко
EducatedFool вне форума Ответить с цитированием
Старый 18.07.2009, 10:03   #8
gadspider
 
Регистрация: 17.07.2009
Сообщений: 9
По умолчанию

Нет очистить надо было все сразу. Все заработало спасибо!
gadspider вне форума Ответить с цитированием
Старый 18.07.2009, 10:25   #9
gadspider
 
Регистрация: 17.07.2009
Сообщений: 9
По умолчанию

а можно еще тогда по теме вопрос. Как защитить содержимое ячеек в определенной области от изменения пользователем в лист Excel, т.е. чтобы содержимое могло меняться только программно?
gadspider вне форума Ответить с цитированием
Старый 18.07.2009, 10:51   #10
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Формат->Ячейки->Защита, там всё написано.
pivas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрое решение учебных задач prog-f1 Фриланс 9 26.02.2011 10:29
Быстрое преобразование Фурье (комментарии). brendog Общие вопросы C/C++ 2 21.07.2009 01:15
Обработка содержимого ячеек - отчистка от мусора Bromista Microsoft Office Excel 10 17.04.2009 11:39