Добрый день, есть ли какая нибудь формула которая будет ставить время на момент написания текста в определенной ячейке. К примеру если написать в ячейке А1 вместо "есть" на "в пути" то в ячейке B1 автоматически проставится время на момент написания "в пути" и останется неизменным. Но если же, обратно исправить на "есть", то время будет удаляться. Пример ниже в фото.
Добрый день, есть ли какая нибудь формула которая будет ставить время на момент написания текста в определенной ячейке. К примеру если написать в ячейке А1 вместо "есть" на "в пути" то в ячейке B1 автоматически проставится время на момент написания "в пути" и останется неизменным. Но если же, обратно исправить на "есть", то время будет удаляться. Пример ниже в фото. serjik
Сообщение отредактировал serjik - Среда, 04.11.2020, 07:12
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути If Target.Value = "есть" And Target.Offset(0, 3) = "" Then Target.Offset(0, 3) = Time 'Offset(0, 3) -смещение на 3 столбца вправо If Target.Value = "в пути" Then Target.Offset(0, 3) = "" End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути If Target.Value = "есть" And Target.Offset(0, 3) = "" Then Target.Offset(0, 3) = Time 'Offset(0, 3) -смещение на 3 столбца вправо If Target.Value = "в пути" Then Target.Offset(0, 3) = "" End If End Sub
Доброго времени суток. Николай, спасибо. Мне похожее как раз было нужно. serjik, Вам наверное по Вашему условию нужно будет заменить в VBA "есть" на "в пути" и наоборот.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути If Target.Value = "в пути" And Target.Offset(0, 3) = "" Then Target.Offset(0, 3) = Time 'Offset(0, 3) -смещение на 3 столбца вправо If Target.Value = "есть" Then Target.Offset(0, 3) = "" End If End Sub
[/vba]
Доброго времени суток. Николай, спасибо. Мне похожее как раз было нужно. serjik, Вам наверное по Вашему условию нужно будет заменить в VBA "есть" на "в пути" и наоборот.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути If Target.Value = "в пути" And Target.Offset(0, 3) = "" Then Target.Offset(0, 3) = Time 'Offset(0, 3) -смещение на 3 столбца вправо If Target.Value = "есть" Then Target.Offset(0, 3) = "" End If End Sub
Все хорошо, но! 1) Не могу понять где можно посмотреть исходный код который nick70y вшил в мой файл. В Макросе пишет что ничего нет, но по факту он вшил туда уже эту функцию. 2) Когда из одной ячейки берёшь слово «есть» или же «в пути» и массово вставляешь во все ячейки где нужно проставить время (выделяешь все ячейки со словом «есть» и меняешь их на вставить «в пути” то выдаёт ошибку. Можно ли это как то исправить? Заранее благодарю.
Все хорошо, но! 1) Не могу понять где можно посмотреть исходный код который nick70y вшил в мой файл. В Макросе пишет что ничего нет, но по факту он вшил туда уже эту функцию. 2) Когда из одной ячейки берёшь слово «есть» или же «в пути» и массово вставляешь во все ячейки где нужно проставить время (выделяешь все ячейки со словом «есть» и меняешь их на вставить «в пути” то выдаёт ошибку. Можно ли это как то исправить? Заранее благодарю.serjik
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути Selection.Offset(0, 3).FormulaR1C1 = "=TEXT(IF(RC[-3]=""в пути"",NOW(),""""),""чч:мм"")" Selection.Offset(0, 3) = Selection.Offset(0, 3).Value End If End Sub
[/vba]
если особо не заморачиваться [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути Selection.Offset(0, 3).FormulaR1C1 = "=TEXT(IF(RC[-3]=""в пути"",NOW(),""""),""чч:мм"")" Selection.Offset(0, 3) = Selection.Offset(0, 3).Value End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути Selection.Offset(0, 3).FormulaR1C1 = "=TEXT(IF(RC[-3]=""в пути"",NOW(),""""),""чч:мм"")" Selection.Offset(0, 3) = Selection.Offset(0, 3).Value End If End Sub
[/vba]
Все хорошо, но есть один нюанс. Когда из буфера вставляешь слово в пути - то проставляет время, тоже самое и с "есть" если оно было вставлено из буфера обмена, то убирает время. Но если вручную написать "в пути", то время не проставляется, приходиться копировать ячейку и в нее же повторно вставлять, возможно ли как то исправить это? Заранее благодарю
+ если в 20 ячеек сразу написать в пути, то в некоторых время не проставляется...
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути Selection.Offset(0, 3).FormulaR1C1 = "=TEXT(IF(RC[-3]=""в пути"",NOW(),""""),""чч:мм"")" Selection.Offset(0, 3) = Selection.Offset(0, 3).Value End If End Sub
[/vba]
Все хорошо, но есть один нюанс. Когда из буфера вставляешь слово в пути - то проставляет время, тоже самое и с "есть" если оно было вставлено из буфера обмена, то убирает время. Но если вручную написать "в пути", то время не проставляется, приходиться копировать ячейку и в нее же повторно вставлять, возможно ли как то исправить это? Заранее благодарю
+ если в 20 ячеек сразу написать в пути, то в некоторых время не проставляется...serjik
Сообщение отредактировал serjik - Пятница, 06.11.2020, 06:27
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути u = Replace(Target.Address, "K", "N") Range(u).FormulaR1C1 = "=TEXT(IF(RC[-3]=""в пути"",NOW(),""""),""чч:мм"")" Range(u) = Range(u).Value End If End Sub
[/vba]по-приколу
ну тогда так [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k9:k65536")) Is Nothing Then 'k9:k65536 -диапазон ввода есть/в пути u = Replace(Target.Address, "K", "N") Range(u).FormulaR1C1 = "=TEXT(IF(RC[-3]=""в пути"",NOW(),""""),""чч:мм"")" Range(u) = Range(u).Value End If End Sub