Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If Next cell End Sub
[/vba]
который при ЛЮБОМ изменении в ячейках столбца А вносит текущую дату и время в столбец В. Подскажите как изменить данный текст, что бы дата и время проставлялись только при вводе определенного текста, а при вводе любого другого или удаления вообще текста ячейка В оставалась пустой. Допустим это будет "время" [moder]Используйте для оформления кода кнопку #. Поправила[/moder]
Добрый день. Подскажите есть текст макроса:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If Next cell End Sub
[/vba]
который при ЛЮБОМ изменении в ячейках столбца А вносит текущую дату и время в столбец В. Подскажите как изменить данный текст, что бы дата и время проставлялись только при вводе определенного текста, а при вводе любого другого или удаления вообще текста ячейка В оставалась пустой. Допустим это будет "время" [moder]Используйте для оформления кода кнопку #. Поправила[/moder]_Вячеслав_
Сообщение отредактировал Manyasha - Четверг, 26.11.2015, 15:45
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 If cell.Value = "время" Then With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If Next cell End Sub
[/vba]
Вот: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 If cell.Value = "время" Then With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If Next cell End Sub
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату If cell.Value = "время" Then .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке Else .Value = "" End If End With End If Next cell End Sub
[/vba]
так? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату If cell.Value = "время" Then .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке Else .Value = "" End If End With End If Next cell End Sub
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 cell.ClearContents If cell = "время" Then With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If Next cell End Sub
[/vba]
Прикольно - 3 одинаковых кода. Почти одинаковых. Я в свой дописал еще (потом) cell.ClearContents
Так нужно? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 cell.ClearContents If cell = "время" Then With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If Next cell End Sub
[/vba]
Прикольно - 3 одинаковых кода. Почти одинаковых. Я в свой дописал еще (потом) cell.ClearContents_Boroda_
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000 If cell.Value = "В работе" Then With cell.Offset(0, -1) 'вводим в ячейку слева дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000 If cell.Value = "Выполнен" Then With cell.Offset(0, 4) 'вводим справа в 4-ю ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If Next cell End Sub
[/vba]
При вводе текста "В работе" добавляется дата в одну ячейку, а при изменении текста на "Выполнен" дата и время проставляется в другую
А вот, что в итоге получилось у меня [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000 If cell.Value = "В работе" Then With cell.Offset(0, -1) 'вводим в ячейку слева дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000 If cell.Value = "Выполнен" Then With cell.Offset(0, 4) 'вводим справа в 4-ю ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If End If Next cell End Sub
[/vba]
При вводе текста "В работе" добавляется дата в одну ячейку, а при изменении текста на "Выполнен" дата и время проставляется в другую_Вячеслав_
Сообщение отредактировал _Вячеслав_ - Четверг, 26.11.2015, 16:23