#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 $(«имя пользователя»). Если это влияет на макет вашего листа, вам нужно будет соответствующим образом отредактировать код.