уважаемые специалисты, подскажите пожалуйста как подправить макрос чтоб не просто при изменении в ячейках столбца3 менялась дата в столбце1 на текущую, а только при определенном значении допустим " 2 " [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If Next cell End Sub
[/vba] спасибо заранее
уважаемые специалисты, подскажите пожалуйста как подправить макрос чтоб не просто при изменении в ячейках столбца3 менялась дата в столбце1 на текущую, а только при определенном значении допустим " 2 " [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If Next cell End Sub
Так добавьте проверку cell, только вот пробел+двойка вряд ли Эксель позволит ввести без допухищрений пользователя... [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 If cell = 2 Then With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If End If Next cell End Sub
[/vba]
Так добавьте проверку cell, только вот пробел+двойка вряд ли Эксель позволит ввести без допухищрений пользователя... [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 If cell = 2 Then With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If End If Next cell End Sub
Hugo, подскажите пожалуйста еще момент....как подружить эти два макроса? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If Next cell End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("Диапазон1", "Диапазон2")) Is Nothing Then Cells(Target.Row, 4) = "1"
End Sub
[/vba] один макрос ставит дату при изменении а другой ставит отметку для пересчета другим макросом измененных и отмеченных строк
Hugo, подскажите пожалуйста еще момент....как подружить эти два макроса? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If Next cell End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("Диапазон1", "Диапазон2")) Is Nothing Then Cells(Target.Row, 4) = "1"
End Sub
[/vba] один макрос ставит дату при изменении а другой ставит отметку для пересчета другим макросом измененных и отмеченных строкExtybr
Это зависит от того, как эти макросы должны отрабатывать. По видимому, друг за другом, т.к. "Диапазон1" пересекается с "Столбец3". А вот что в первую очередь, а что потом, не понятно. Как вариант [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If Next cell Application.EnableEvents = False If Not Intersect(Target, Range("Диапазон1", "Диапазон2")) Is Nothing Then Cells(Target.Row, 4) = "1" Application.EnableEvents = True End Sub
[/vba]
Это зависит от того, как эти макросы должны отрабатывать. По видимому, друг за другом, т.к. "Диапазон1" пересекается с "Столбец3". А вот что в первую очередь, а что потом, не понятно. Как вариант [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("Столбец3")) Is Nothing Then 'если изменененная ячейка попадает в диапазон Столбец3 With cell.Offset(0, -2) 'вводим в соседнюю слева ячейку дату .Value = Date End With End If Next cell Application.EnableEvents = False If Not Intersect(Target, Range("Диапазон1", "Диапазон2")) Is Nothing Then Cells(Target.Row, 4) = "1" Application.EnableEvents = True End Sub
Pelena, подскажите пожалуйста в таблице другим макросом выполняется вставка формул и пересчет,как отключить обработчик изменения таблицы Worksheet_Change при работе макроса пересчета, что бы работал только при ручном редактировании страницы? начинает тормозить виснет....
Pelena, подскажите пожалуйста в таблице другим макросом выполняется вставка формул и пересчет,как отключить обработчик изменения таблицы Worksheet_Change при работе макроса пересчета, что бы работал только при ручном редактировании страницы? начинает тормозить виснет....Extybr