В настоящее время у меня есть сценарий, в котором несколько пользователей вводят строки данных в таблицу Excel. Не существует общей настройки рабочей книги, поэтому только один пользователь будет открывать документ в любое время. Есть ли способ VBA, который я могу использовать для захвата имени пользователя, который в настоящее время открыт для документа, и вставлять его каждый раз, когда строка добавляется в таблицу? Тем самым давая автора для каждой строки.VBA, чтобы добавить имя пользователя после создания строки
ответ
вы можете добавить следующий код в код панели соответствующего листа
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Columns("A:N"), Target) Is Nothing Then Cells(Target.Row, "O").Value = Environ$("Username")
End Sub
конечно, вы можете точно настроить пункт If
, который имеет имя пользователя, вставленное в столбец «O»
Это отличное спасибо. Поскольку это работает для всех новых строк даже вне таблицы, вы могли бы предложить sub, который будет равен полю, если остальная часть данных в строке была удалена? Или для простоты, если значение в столбце G для этой строки было удалено? Спасибо, Дэн – DannyBarnes01
Добро пожаловать. В соответствии с правилами этого форума 1), так как мой ответ выполнил ваш вопрос, пожалуйста, примите его спасибо 2) новый вопрос требует новой публикации – user3598756
Следующий код будет захватывать имя пользователя:
Application.UserName
я нахожу на моем рабочем компьютере, по крайней мере:
Environ$("Username")
дает Администратор
Application.UserName
дает IT
Теперь, я мог бы изменить мое Application.UserName
на мое имя - достаточно легко сделать с небольшим количеством знаний, но я нахожу много офисных сотрудников не имеют, что мало знаний ....
Outlook, с другой рука часто устанавливается для конкретного пользователя, поэтому, когда Excel первый открывает и хранится в глобальной переменной:
Sub Test()
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
MsgBox olApp.session.currentuser
End Sub
как 'Environ $ (« Username »)' ??? –
Самый простой способ - захватить имя пользователя (если на входе в Windows). Используйте что-то вроде 'Sub Display_username() MsgBox Environ ("Имя пользователя") End Sub' –
Я буду использовать:' Environ $ ("UserName") 'для пользователя, основная трудность заключается проблема вставляя значение каждый раз при создании новой строки таблицы. У кого-нибудь есть идеи для этого? Спасибо, Дэн. – DannyBarnes01