2016-08-15 2 views
0

В настоящее время у меня есть сценарий, в котором несколько пользователей вводят строки данных в таблицу Excel. Не существует общей настройки рабочей книги, поэтому только один пользователь будет открывать документ в любое время. Есть ли способ VBA, который я могу использовать для захвата имени пользователя, который в настоящее время открыт для документа, и вставлять его каждый раз, когда строка добавляется в таблицу? Тем самым давая автора для каждой строки.VBA, чтобы добавить имя пользователя после создания строки

enter image description here

+2

как 'Environ $ (« Username »)' ??? –

+0

Самый простой способ - захватить имя пользователя (если на входе в Windows). Используйте что-то вроде 'Sub Display_username() MsgBox Environ ("Имя пользователя") End Sub' –

+0

Я буду использовать:' Environ $ ("UserName") 'для пользователя, основная трудность заключается проблема вставляя значение каждый раз при создании новой строки таблицы. У кого-нибудь есть идеи для этого? Спасибо, Дэн. – DannyBarnes01

ответ

1

вы можете добавить следующий код в код панели соответствующего листа

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»

+0

Это отличное спасибо. Поскольку это работает для всех новых строк даже вне таблицы, вы могли бы предложить sub, который будет равен полю, если остальная часть данных в строке была удалена? Или для простоты, если значение в столбце G для этой строки было удалено? Спасибо, Дэн – DannyBarnes01

+0

Добро пожаловать. В соответствии с правилами этого форума 1), так как мой ответ выполнил ваш вопрос, пожалуйста, примите его спасибо 2) новый вопрос требует новой публикации – user3598756

0

Следующий код будет захватывать имя пользователя:

Application.UserName 
0

я нахожу на моем рабочем компьютере, по крайней мере:

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