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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2010, 15:12   #1
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию Автоматически очистить диапазон ячеек.

Здравствуйте, уважаемые программисты. Подскажите как автоматически очистить диапазон ячеек (например [D3:F10,H3:K10]), после очистки диапазона ячеек (например [C3:C10]). Типа такого кода (он нормально работает при очистке одной ячейки):

Private Sub Worksheet_Change(ByVal Target As Range)
'если изменения в диапазоне C3:C200
If Not Intersect(Target, Range("C3:C200")) Is Nothing Then
If Target(1, 1).Value = 0 Then
Target(1, 2).ClearContents
Target(1, 3).ClearContents
Target(1, 4).ClearContents
Target(1, 6).ClearContents
Target(1, 7).ClearContents
Target(1, 9).ClearContents
Else
Target(1, 4).Value = Format(Now(), "dd.mm.yy") & " 8:00"
End If
End If
End Sub

Последний раз редактировалось agregator; 16.04.2010 в 15:15.
agregator вне форума Ответить с цитированием
Старый 16.04.2010, 15:23   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А если так попробовать?

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Intersect(Intersect(Target, [C3:C200]).SpecialCells(xlCellTypeBlanks).EntireRow, [d:f,h:k]).ClearContents
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 19.04.2010, 08:26   #3
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Здравствуйте, EducatedFool. В вашем примере все работает правильно, а в моей книге при очистке ячейки [C3] очищается диапазон ячеек [D:K] и при очистке ячеек [C3:C4] очищается диапазон ячеек[D3:K4]. Подскажите как это исправить?
Вложения
Тип файла: zip Очистить диапазон ячеек.zip (26.0 Кб, 40 просмотров)
agregator вне форума Ответить с цитированием
Старый 19.04.2010, 09:08   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
при очистке ячеек [C3:C4] очищается диапазон ячеек[D3:K4]. Подскажите как это исправить?
Я это специально сделал - видимо, неправильно понял задание.
Думал, что надо очищать ячейки (кроме столбца G) во всех строках, в которых удаляется значение в 3-м столбце...

Цитата:
В вашем примере все работает правильно
В вашем примере всё работает в точности также, как и в моём: http://excelvba.ru/XL_Files/Sample__...__11-06-42.zip
EducatedFool вне форума Ответить с цитированием
Старый 19.04.2010, 10:22   #5
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

EducatedFool. Извиняюсь за непонятный вопрос, мне нужно, чтобы при очистке ячейки [C3] очищался диапазон ячеек [D3:F3,H3:K3]), а при очистке диапазона ячеек [C8:C11] очищался диапазон ячеек[D8:F11,H8:K11] и т. п. при очистке диапазона ячеек [C2:C6] очищался диапазон ячеек[D2:F6,H2:K6], а при очистке ячейки [C11] очищался диапазон ячеек [D11:F11,H11:K11]). Так можно?
agregator вне форума Ответить с цитированием
Старый 19.04.2010, 10:38   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Так можно?
Так всё и работает. И в моём примере, и в вашем.
EducatedFool вне форума Ответить с цитированием
Старый 19.04.2010, 10:42   #7
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

EducatedFool, не пойму в чём дело, вставляю в таблицу в http://excelvba.ru/XL_Files/Sample__...__11-06-42.zip свои значения и при очистке ячейки [C3] очищается вся таблица. Что, у меня не так?
Вложения
Тип файла: zip Копия Sample__19-04-2010__11-06-41(2).zip (13.8 Кб, 21 просмотров)
agregator вне форума Ответить с цитированием
Старый 19.04.2010, 10:54   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Не знаю, что не так, но вот такой код будет работать нормально:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Intersect(Intersect(Intersect(Target, [C3:C200]), _
                        Target.Worksheet.UsedRange.SpecialCells(xlCellTypeBlanks)).EntireRow, _
                        [d:f,h:k]).ClearContents
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 19.04.2010, 11:19   #9
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

EducatedFull, спасибо, работает как надо.
agregator вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диапазон ячеек равен 0 segail Microsoft Office Excel 16 14.02.2010 22:14
Бейсик. Как передать в формулу диапазон ячеек? Наталья Ивановна Помощь студентам 2 02.06.2009 23:36
Вопрос Как автоматически очистить cookies которые используются TWebBrowser-ом AquaKlaster Работа с сетью в Delphi 3 29.05.2009 12:21
Добавление данных в диапазон ячеек denneo Microsoft Office Excel 1 08.02.2009 09:05
Как автоматически очистить cookies которые используются TWebBrowser-ом SeRhy Общие вопросы Delphi 0 21.10.2008 17:41