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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2012, 17:48   #1
Nixxon
 
Регистрация: 04.05.2012
Сообщений: 3
По умолчанию условия в процедуре Worksheet_Change

Здравствуйте, форумчане, прошу помочь разобраться начинающему программисту с работой в процедуре
Worksheet_Change: написал макрос, который работает так, если значение в ячейке G2 пустое, то диапазон ячеек K2:P2 очищается, и так дальше для G3 и т.д.

не получается следующее: то же самое но для другого диапазона ячеек:
если значение в ячейке R2 пустое, то диапазон ячеек W2:AA2 очищается, и так дальше для R3 и т.д.

вот текст макроса:


Private Sub Worksheet_Change(ByVal Target As Range)
'V = Range("A2:B2").Value

K = Target.Column 'определение номера колонки вводимого значения
R = Target.Row 'определение номера ряда вводимого значения
'ADDR = "G" & K
'Addr2 = "K" & K & ":" & "O" & K ' определение диапазона ячеек, кот. надо удалять в дальшейшем
'Addr1 = "O" & K
'alb = "abcdefghj"
LeftColl = 11
RightCol = 15


If ((K < LeftColl) Or (K > RightCol)) Then
Exit Sub
End If

If Range("G" & R).Value = "" Then

Target.Select
Selection.ClearContents
Exit Sub
End If

LeftColll = 23
RightCol = 27


If ((K < LeftColl) Or (K > RightCol)) Then
Exit Sub
End If

If Range("R" & R).Value = "" Then

Target.Select
Selection.ClearContents
Exit Sub
End If


Заранее благодарен за помощь
Nixxon вне форума Ответить с цитированием
Старый 04.05.2012, 21:18   #2
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Код просто....
сильно не вдаваясь попробуйте так
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
'V = Range("A2:B2").Value

K = Target.Column 'определение номера колонки вводимого значения
R = Target.Row 'определение номера ряда вводимого значения
Application.EnableEvents=False
'ADDR = "G" & K
'Addr2 = "K" & K & ":" & "O" & K ' определение диапазона ячеек, кот. надо удалять в дальшейшем
'Addr1 = "O" & K
'alb = "abcdefghj"
LeftColl = 11
RightCol = 15


If ((K < LeftColl) Or (K > RightCol)) Then
Application.EnableEvents=False
Exit Sub
End If

If Range("G" & R).Value = "" Then

Target.Select
Selection.ClearContents
Application.EnableEvents=False

End If

LeftColll = 23
RightCol = 27


If ((K < LeftColl) Or (K > RightCol)) Then
Application.EnableEvents=False
Exit Sub
End If

If Range("R" & R).Value = "" Then

Target.Select
Selection.ClearContents
Application.EnableEvents=False

End If
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 04.05.2012, 22:12   #3
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Может так?
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x&, y&
If Target.Count > 1 Then Exit Sub
If Target.Column = 7 Then
x = 4: y = 6
If Len(Target) Then Else Target.Offset(, x).Resize(, y).ClearContents
ElseIf Target.Column = 18 Then
x = 5: y = 5
If Len(Target) Then Else Target.Offset(, x).Resize(, y).ClearContents
End If
End Sub
RAN. вне форума Ответить с цитированием
Старый 05.05.2012, 10:28   #4
Nixxon
 
Регистрация: 04.05.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Watcher_1 Посмотреть сообщение
Код просто....
сильно не вдаваясь попробуйте так
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
'V = Range("A2:B2").Value

K = Target.Column 'определение номера колонки вводимого значения
R = Target.Row 'определение номера ряда вводимого значения
Application.EnableEvents=False
'ADDR = "G" & K
'Addr2 = "K" & K & ":" & "O" & K ' определение диапазона ячеек, кот. надо удалять в дальшейшем
'Addr1 = "O" & K
'alb = "abcdefghj"
LeftColl = 11
RightCol = 15


If ((K < LeftColl) Or (K > RightCol)) Then
Application.EnableEvents=False
Exit Sub
End If

If Range("G" & R).Value = "" Then

Target.Select
Selection.ClearContents
Application.EnableEvents=False

End If

LeftCo = 23
RightCo = 27


If ((K < LeftCo) Or (K > RightCo)) Then
Application.EnableEvents=False
Exit Sub
End If

If Range("R" & R).Value = "" Then

Target.Select
Selection.ClearContents
Application.EnableEvents=False

End If
Спасибо за ответ, но что-то не работает, End Sub в конце кода дописал - но почему-то ника
Nixxon вне форума Ответить с цитированием
Старый 05.05.2012, 10:30   #5
Nixxon
 
Регистрация: 04.05.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от RAN. Посмотреть сообщение
Может так?
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x&, y&
If Target.Count > 1 Then Exit Sub
If Target.Column = 7 Then
x = 4: y = 6
If Len(Target) Then Else Target.Offset(, x).Resize(, y).ClearContents
ElseIf Target.Column = 18 Then
x = 5: y = 5
If Len(Target) Then Else Target.Offset(, x).Resize(, y).ClearContents
End If
End Sub
Спасибо за ответ, непонятно как это работает тк не ясно что означает x = 4: y = 6
и x = 5: y = 5
Nixxon вне форума Ответить с цитированием
Старый 05.05.2012, 11:03   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если смогли разобраться с 1, 7 и 18, то могли бы и с 4, 6, 5, 5.
а вообще - это расстояния от исходной ячейки до очищаемого диапазона и его размер.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Worksheet_Change для диапазона в диапазоне) mephist Microsoft Office Excel 11 29.09.2011 16:46
обработка события Worksheet_change Jarik Microsoft Office Excel 2 12.05.2011 12:06
Использование события рабочего листа Worksheet_Change kovalevskivf Microsoft Office Excel 2 15.11.2009 12:51
событие Private Sub Worksheet_Change Светлана87 Microsoft Office Excel 5 11.10.2009 18:42
Помогите с Worksheet_Change плз. zander Microsoft Office Excel 1 28.02.2009 21:46