Помогите, пожалуйста, написать макрос, который будет проставлять отпуска в графике. На странице "График работы", автоматически выставлять слово "отпуск" в ячейку столбца "Время работы" каждого сотрудника. Дни отпуска искать из диапазона под ФИО сотрудника и сопоставлять со страницы "Отпуска", и если день выпадает на праздничный день, то отпуск продлевался.
JeyCi, требуется изменения в макросе, с файлом посложнее будет. Пароль: 96318645
При открытии, если не разрешены макросы, отображать страницу Предупреждение - сейчас так и есть. Если макросы разрешены, отображать 1 страницу всем. Если имя пользователя e.shevskaya и a.gubanov отображать все страницы, кроме Предупреждение - сейчас так отрабатывает макрос. Если имя пользователя, например: 1 пользователь, 2 пользователь, 3 пользователь и т.д. отображать первые две страницы. Либо, возможно привязать к группам AD?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'скрываем все листы, кроме листа ПРЕДУПРЕЖДЕНИЕ
Worksheets("Предупреждение").Visible = True
For Each sh In ThisWorkbook.Worksheets
If sh.Name = "Предупреждение" Then
sh.Visible = True
Else
sh.Visible = xlSheetVeryHidden
End If
Next sh
'сохраняемся перед выходом
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open()
Dim wsSh As Object
For Each wsSh In Me.Sheets
Protect_for_User_Non_for_VBA wsSh
Next wsSh
For Each sh In ThisWorkbook.Worksheets
sh.Visible = True
Next sh
If Environ("USERNAME") <> "Первый" And Environ("USERNAME") <> "Второй" Then 'если пользователя не зовут
Worksheets("Настройки").Visible = False 'скрываем Настройки
Worksheets("Сотрудники").Visible = xlVeryHidden 'делаем лист Сотрудники суперскрытым
End If
'скрываем листы ПРЕДУПРЕЖДЕНИЕ
Worksheets("Предупреждение").Visible = xlSheetVeryHidden
End Sub
Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet)
wsSh.Protect Password:="12345", UserInterfaceOnly:=True
End Sub
Лист предупреждения все также скрывается, при соглашении включения макросов. Сейчас все листы отображаются только двоим сотрудникам, остальным первые две. Нужно чтобы всем отображалась только первая страница, определенным пользователям две страницы, и еще пару пользователям все страницы, кроме Предупреждения.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'скрываем все листы, кроме листа ПРЕДУПРЕЖДЕНИЕ
Worksheets("Предупреждение").Visible = True
For Each sh In ActiveWorkbook.Worksheets
If sh.Name = "Предупреждение" Then
sh.Visible = True
Else
sh.Visible = xlSheetVeryHidden
End If
Next sh
'сохраняемся перед выходом
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open()
Dim wsSh As Object
For Each wsSh In Me.Sheets
Protect_for_User_Non_for_VBA wsSh
Next wsSh
For Each sh In ActiveWorkbook.Worksheets
sh.Visible = True
If Environ("USERNAME") <> "A.Gubanov" And Environ("USERNAME") <> "e.shevskaya" Then
Worksheets("Настройки").Visible = False
Worksheets("Сотрудники").Visible = xlVeryHidden
Else
For i = 1 To Worksheets.Count
Worksheets(i).Visible = True
Next i
End If
Next sh
'скрываем листы ПРЕДУПРЕЖДЕНИЕ
Worksheets("Предупреждение").Visible = xlSheetVeryHidden
End Sub
Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet)
wsSh.Protect Password:="96318645", UserInterfaceOnly:=True
End Sub
При первом открытии книги этих:
Цитата
If Environ("USERNAME") <> "A.Gubanov" And Environ("USERNAME") <> "e.shevskaya" Then
если разрешить выполнение макросов, выходит ошибка
После повторного запуска открывает книгу нормально и если имя пользователя не указано, то книга нормально отрабатывает макрос и без ошибки открывает ее.
Возможно ли в графике работы, на странице "Приложение", автоматически выставлять слово "отпуск" в ячейку столбца "Смены" каждого сотрудника. Дни отпуска искались и сопоставлялись со страницы "Сотрудники", и если день выпадает на праздничный день, то отпуск продлевался.
Если возможно, пример реализации через макрос. Спасибо!
Такс, для смен использовал =СЧЁТЕСЛИ(W8:W38;">0") Для замены: =ЕСЛИ(ЕЧИСЛО(ПОИСК("ОФИС";AB8));"8";ЕСЛИОШИБКА(ПСТР(AB8;9;2)-ЛЕВБ(AB8;2)-1;AB8)) сделала, что нужно, но теперь не считает не смены, не часы. Выдает несогласующуюся форму.
В минутах указываются нули. Надо чтоб формула определяла что в соседней ячейке: 1. Если часы работы, то время работы; 2. Если стоит слово, то дублировал; 3. Если ячейка пустая, то 0.
Вопрос все по табелю, помогите с формулой. Пример числа: 11:00 - 20:00 Нужно чтобы было вычитание: 20 - 11 - 1 и ответ вывелся в рядом стоящую ячейку. В данном случае, в ячейке должно встать: 8
Подскажите как сделать автозаполнение определенных строк в графике фамилиями сотрудников. Чтобы сотрудники шли по порядку, повторение только в случае полного прохождения списка. И если день выпадает на праздник, то день пропускается, если в какие-то дни сотрудник отдыхает, то его пропускает.
Например: В понедельник едет один сотрудник УРМ, во вторник два сотрудника на разные УРМ.
На странице УРМ есть график, каждый день определенный сотрудник уезжает рабочее место. УРМ может не повторяться, на некоторые места уезжают 1 раз в неделю. На одно УРМ по 2 сотрудника.
Здраствуйте. Подскажите, пожалуйста, формулу, которая будет автоматически брать фамилию из списка и заполнять определенные дни в месяце. Главное условие чтобы фамилии повторялись, если список закончился.