Страницы: 1
RSS
Два условия для события изменения на листе
 
IЗдравствуйте!
возможно ли прописать выполнение одновременно двух задач на одной вкладке excel. Что я делаю неверно?
1 задача: при заполнении ячейки "задание" (столбец B), в следующей за ней ячейке (столбец C) проставляется автоматически дата.
2 задача: при проставлении в столбце G слова "да", в столбце I автоматически проставляется дата, когда была прописано выполнение (слово да)

Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("B2:B100")) Is Nothing And _
Target.Offset(0, 1) = "" Then
With Target.Offset(0, 1)
.Value = Date
.EntireColumn.AutoFit
End With
End If
Next cell
  
For Each cell In Target
If Not Intersect(cell, Range("G2:G100")) Is Nothing And cell Like "да*" Then
With Target.Offset(0, 2)
.Value = Date
.EntireColumn.AutoFit
End With
End If
Next cell
End Sub
 
Код
1
2
3
4
5
6
7
If Not Intersect(cell, Range("B2:B100, G2:G100")) Is Nothing Then
    Select Case target.Column
    Case 2
        ' условие1
    Case 7
        ' условие2
    End Select
 
Вариант "в лоб". Зачем там циклы?
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2:B100")) Is Nothing And Target.Count = 1 Then
        If Target <> Empty Then
            Target.Offset(, 1) = Date
            Target.Offset(, 1).EntireColumn.AutoFit
        End If
    End If
     
    If Not Intersect(Target, Range("G2:G100")) Is Nothing And Target.Count = 1 Then
        If Target Like "да*" Then
            Target.Offset(, 2) = Date
            Target.Offset(, 2).EntireColumn.AutoFit
        End If
    End If
End Sub
Изменено: Sanja - 19.12.2016 19:54:42
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо! Вы меня спасли :)
Изменено: Вэл - 20.12.2016 10:56:46
 
 Sanja,подскажите, пожалуйста, как прописать еще такой момент в Вашем макросе: чтобы при дальнейшем изменении ячеек столбца B дата не изменялась, а оставалась прежней (то есть дата самого первого занесения данных, а последующее их изменение на дату не влияло). Заранее большое спасибо.  
 
Можно проверять на наличие именно ДАТЫ в нужном столбце (см. код ниже), или просто на отсутствие значения
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If Not Intersect(Target, Range("B2:B100")) Is Nothing And .Count = 1 Then
        If .Value <> Empty And Not IsDate(.Offset(, 1).Value) Then
            With .Offset(, 1)
                .Value = Date
                .EntireColumn.AutoFit
            End With
        End If
    End If
      
    If Not Intersect(Target, Range("G2:G100")) Is Nothing And .Count = 1 Then
        If .Value Like "да*" And Not IsDate(.Offset(, 2).Value) Then
            With .Offset(, 2)
                .Value = Date
                .EntireColumn.AutoFit
            End With
        End If
    End If
End With
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо огромное! Спасибо, что не игнорите вопросы от таких чайников, как я! :)
Страницы: 1
Читают тему
Loading...