Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Как вложить время автоматически?

Автор gunbox, 27.08.2013, 13:56

« назад - далее »

gunbox

Как сделать чтобы время выскакивала автоматически в C4, при вводе текста в одном поле D4 и не менялось позже при изменениях?




P.S. Извините, если ошибки, я не русский.

cheshiki1

#1
приложите файл а не картинку.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Range("D4:D10"), Target) Is Nothing Then Exit Sub
   If Target.Value <> "" Then
     If Target.Offset(, -1) = "" Then Target.Offset(, -1) = DateTime.Time
     End If
End Sub

в модуль листа

gunbox

Этот файл из Excel 2013 предложенних темплейтоф.

zs

=ЕСЛИ(D4;ТЕКСТ(ТДАТА();"чч:мм")); копировать; вставить значение
P.S. Время не она, а оно))

gunbox

А можно конкретнее? Я из Excel понемаю совсем мало. А формулы и ешо значение - ноль.
Не понимаю, как менять значения.
В общем пробовал, не получилось.

zs

формула "из" С4, текст "из" D4, "чч:мм" "из" С4

gunbox

Читаем эшо раз.
Как сделать чтобы время выскакивало автоматически в C4, при вводе текста в одном поле D4 и не менялось позже при изменениях?


ЦитироватьPrivate Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Range("D4:D10"), Target) Is Nothing Then Exit Sub
   If Target.Value <> "" Then
     If Target.Offset(, -1) = "" Then Target.Offset(, -1) = DateTime.Time
     End If
End Sub
Это из VB и то же самое что

=IF(ISBLANK(D4);"";NOW())

и время меняется позже при изменениях.

zs
А откуда TDATA?

Вы сами вообще пробовали прежде чем рекомендовать?
Если у вас работает, ведите в том файле и добавьте к посту, пожалуста.
:-\

Wasilic

Здравствуйте!
Цитата: gunbox от 27.08.2013, 13:56
Как сделать чтобы время выскакивала автоматически в C4, при вводе текста в одном поле D4 и не менялось позже при изменениях?
Как просили - для С4 и D4.
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$D$4" Or Val(Range("C4")) > 0 Then Exit Sub
  Application.EnableEvents = 0
  Cells(4, 3) = Format(Now(), "HH:MM:SS")
  Application.EnableEvents = 1
End Sub
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

cheshiki1

правильно поставленный вопрос - это уже половина решения.
в моем коде при изменении в ячейке D4 в С4 вносится дата, если в С4 дата уже есть то она не меняется.
тоже самое для пар D5 и С5, D6 и C6, D7 и C7, D8 и C8, D9 и C9, D10 и C10.

gunbox

Если я ешо понял куда это вводить!
Подскажите, пожалуйста! Или есть линк на инструкцию в интернете?

cheshiki1

Цитата: gunbox от 29.08.2013, 14:52
Если я ешо понял куда это вводить!
если код начинается с
ЦитироватьPrivate Sub Worksheet
то в модуль листа.

zs

http://excel2010.ru/tryuk-36-kak-preobrazovat-formuly-i-funkcii-excel-v-znacheniya.html
Вопрос знатокам Макроса. Почему вышеназванный макрос при копировании выдаёт синтаксическую ошибку.

cheshiki1

zs вопрос не по теме, так что на будущее создавайте новую (свою) тему.
по вопросу:
там перенос, а перенос в VBA производится с помощью " _" (пробел и нижнее подчеркивание)
плюс разделитель обычно запятая, а там точка перед "Type:=8"

gunbox

Что я нетак делаю?
Отыскал как код ввести, но наверно неправильно.
Видео  - > https://cloud.mail.ru/public/acc2176be001/time_excel.mp4

cheshiki1