Если пользователь вводит текст в ячейку, затем возвращает имя пользователя и дату в другую ячейку

#excel #vba

#excel #vba

Вопрос:

Справка, в общем листе, если пользователь добавляет текст в ячейку, затем нажмите кнопку, чтобы вернуть имя пользователя и дату в другую ячейку. Например, ячейка B3 = завершена, тогда ячейка C3 возвращает John Smith 14/04/19

Большое спасибо!

введите описание изображения здесь

Ответ №1:

Нет необходимости в VBA. Попробуйте:

 =IF(B6="Complete", "User Name " amp; TEXT(NOW(),"dd/mm/yyyy"),"")
 

Результаты:

введите описание изображения здесь

Комментарии:

1. Отличная идея, спасибо за совет! Вероятно, потребуется vba, чтобы я мог оставить диалог ‘ответить’ открытым и не ограничиваться определенными комментариями.

Ответ №2:

Может быть полезна дополнительная информация. Я собираюсь предположить, что макет листа выглядит следующим образом. Вам понадобится какой-то способ указать, кто является текущим пользователем, и в этом примере я использовал ячейку A2.

введите описание изображения здесь

Если макет не такой, как показано, вам нужно будет соответствующим образом отредактировать код.

 Sub date_user()

Dim lastrow As Long
Dim rng As Range, cell As Range

With Application.ActiveSheet
    Name = .Range("A2").Value
    lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
    Set rng = .Range("B3:B" amp; lastrow)
End With

For Each cell In rng
    If cell.Offset(0, 1).Value = 0 Then
        If Len(cell.Value) > 0 Then
           cell.Offset(0, 1).Value = Name amp; " " amp; Format(Now(), "MMM-DD-YYYY")
        End If
    End If
Next     
End Sub
 

Комментарии:

1. Блестяще, попробую! Я надеялся, что имя пользователя будет взято из идентификатора пользователя компьютера, но в противном случае можно попробовать взять из списка

2. Ах. Чтобы найти пользователя, которому назначен компьютер, замените строку Name = .Range(«A2»).Value на Name = Environ $(«имя пользователя»). Если это влияет на макет вашего листа, вам нужно будет соответствующим образом отредактировать код.