Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2012, 10:50   #1
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию Табель

Здравствуйте, уважаемые форумчане!
В данном разделе нашего форума неоднократно поднимались вопросы, связанные с созданием табеля учета рабочего времени сотрудников средствами Excel. Не так давно, по просьбе нашей сотрудницы, я сделал табель, который и предлагаю всем желающим (см. вложение). Форма табеля исходно была задана (наверное, какой-то стандарт). Месяц и год выбираются из выпадающего списка. Индивидуальные данные: ОТ - отпуск, Б - больничный, ДО - дополнительный отпуск, К - командировка. Правая часть таблицы касается всех сотрудников. "Доп.Вых" - это дополнительные выходные (например, праздники), "Спец.дни" - это дни с нестандартным количеством рабочих часов (например, сокращенные). По-моему, все понятно. Если кого-то заинтересует - обращайтесь.
P.S. Выражаю особую благодарность небезызвестному Avsha, календарь которого я использовал в своей разработке.
Вложения
Тип файла: rar Табель.rar (72.5 Кб, 272 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.08.2012, 18:57   #2
sa4ok2
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 22
Радость

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Здравствуйте, уважаемые форумчане!
В данном разделе нашего форума неоднократно поднимались вопросы, связанные с созданием табеля учета рабочего времени сотрудников средствами Excel. Не так давно, по просьбе нашей сотрудницы, я сделал табель, который и предлагаю всем желающим (см. вложение). Форма табеля исходно была задана (наверное, какой-то стандарт). Месяц и год выбираются из выпадающего списка. Индивидуальные данные: ОТ - отпуск, Б - больничный, ДО - дополнительный отпуск, К - командировка. Правая часть таблицы касается всех сотрудников. "Доп.Вых" - это дополнительные выходные (например, праздники), "Спец.дни" - это дни с нестандартным количеством рабочих часов (например, сокращенные). По-моему, все понятно. Если кого-то заинтересует - обращайтесь.
P.S. Выражаю особую благодарность небезызвестному Avsha, календарь которого я использовал в своей разработке.

Большое СПАСИБО! Отличный вариант! Уже протестировали

Последний раз редактировалось sa4ok2; 22.08.2012 в 19:00.
sa4ok2 вне форума Ответить с цитированием
Старый 23.08.2012, 10:14   #3
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Здравствуйте SAS888, при очистки ячеек вылезает ошибка (если с начало нажать на табель (кнопка), затем вернутся в установки (лист) и нажать на очистить (кнопка)), Run-time error 1004 "ячейки или диаграммы защищены от изменений", посмотрите в оригинальном файле на работе какие ячейки не разблокировали, чтоб потом народ не пугался и панически Вас не вызывал
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 24.08.2012, 00:19   #4
gling
Форумчанин
 
Регистрация: 23.01.2010
Сообщений: 261
По умолчанию

Красиво сделано. Только это хорошо когда нет смены, и время и дату фиксировать по факту прихода на работу и ухода. Если Придется подгонять под норму времени это не удобно. Есть другой вариант без макросов, только на формулах. Может кому пригодится.
Вложения
Тип файла: rar Табель автоматич.rar (58.3 Кб, 191 просмотров)
gling вне форума Ответить с цитированием
Старый 24.08.2012, 15:12   #5
Робин
Форумчанин
 
Регистрация: 03.04.2010
Сообщений: 118
По умолчанию

Привет
А у меня в 2003 почему то календарь в текстбоксах формы не запускается. Ругается вот на эту строку: dt_1 = DateValue("1 " & [B22] & " " & [C22]): tb = 1: Form_SelectDate.Show

И еще. Как в табель заносить явку и время выхода на работу? Прямо с клавиатуры? Или как?
Спвсибо за ответ
Робин вне форума Ответить с цитированием
Старый 25.08.2012, 08:42   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Сообщение от staniiislav Посмотреть сообщение
...при очистки ячеек вылезает ошибка (если с начало нажать на табель (кнопка), затем вернутся в установки (лист) и нажать на очистить (кнопка)), Run-time error 1004 "ячейки или диаграммы защищены от изменений"...
Да, Вы правы. "Очистку" добавлял позже. Упустил снятие защиты с одного из листов. Во вложении поправлено.

Цитата:
Сообщение от Робин Посмотреть сообщение
А у меня в 2003 почему то календарь в текстбоксах формы не запускается. Ругается вот на эту строку: dt_1 = DateValue("1 " & [B22] & " " & [C22]): tb = 1: Form_SelectDate.Show
Спвсибо за ответ
Все сделано в Excel 2003. Данная строка кода задает глобальной переменной dt_1 (As Date) дату 1-е число выбранного месяца и года, затем вызывает форму календаря для ввода даты, в которой изначально установлена dt_1. Скорее всего, проблема в том, что функция DateValue принимает некорректные аргументы. Нужно смотреть локальные настройки. Для англоязычной версии Excel, нужно снять защиту листа, выбрать ячейку "B22" - Данные - Проверка и в строке "Источник" изменить названия месяцев на английские. Для унификации, можно, например, месяц указывать числом, а вместо функции DateValue использовать DateSerial. Либо вызывать календарь без предварительно выбранного месяца и указывать месяц в самом календаре. Сейчас, для предупреждения возможной ошибки, выбор месяца в форме календаря намерено заблокирован.
Цитата:
Как в табель заносить явку и время выхода на работу?
Как правильно заметил gling, в данном файле предполагается одинаковый рабочий день для всех сотрудников. Просто, не стояло задачи индивидуального ввода времени прихода/ухода. Я постарался максимально упростить работу по формированию требуемого табеля. Как Вы, наверное, заметили, в клавиатуру "лазить" вообще не требуется. Рабочие часы одинаковы для всех. С пн по чт - 8 час., в пт - 6 час. 30 мин., сб и вс - выходные. Это время задается в макросе "Main" в фрагменте кода
Код:
Select Case Weekday(CDate(i & " " & [B22] & " " & [C22]), 2)
    Case 1 To 4: Cells(r, c) = "Я": Cells(r + 1, c) = TimeSerial(8, 0, 0)
    Case 5: Cells(r, c) = "Я": Cells(r + 1, c) = TimeSerial(6, 30, 0)
    Case 6, 7: Cells(r, c) = "В"
End Select
На базе этого файла, при необходимости, можно достаточно легко добавить все, что требуется. Если нужна помощь - пишите либо в личку, либо на e-mail.
Вложения
Тип файла: rar Табель_2.rar (71.4 Кб, 118 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.08.2012, 13:09   #7
Робин
Форумчанин
 
Регистрация: 03.04.2010
Сообщений: 118
По умолчанию

Здраствуйте
Ув. SAS888
У меня русифицированый офис 2003, но наверняка не полностью.Поэтому на агл названия месяцев не срабатывает. А вот на украинские - сработало. Причем пришлось поменять их и в самом календаре, а то он стал зависать.
И пришлось поменять Unload Me на Unload UserForm1, а то не срабатывала кнопка выхода.

Но вот новая беда. НЕ срабатывает макрос переноса даных. То есть, кнопка Табель.Попробовал снять зашиту, ничего не дало.
И последнее.
Если я правильно понял, заполнение такого табеля осуществляется в конце каждого месяца. А если, например, работник прогулял два дня? Как их отразить? Так что это плохо, если нет возможности вести учет выходов на работу, в оперативном порядке.Как видите, возможность заполнения табеля ежедневно, просто необходима.
Адресс лички не нашел, поэтому пишу здесь.
Спасибо за ответ.
Вложения
Тип файла: rar Табель_2.rar (67.4 Кб, 66 просмотров)

Последний раз редактировалось Робин; 25.08.2012 в 13:13.
Робин вне форума Ответить с цитированием
Старый 26.08.2012, 06:47   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
...А если, например, работник прогулял два дня? Как их отразить?
Если время работы всех сотрудников одинаковое, то, проще всего, сформировать табель, затем в уже сформированной таблице изменить явку и время конкретного сотрудника в конкретные дни. Этого будет достаточно, т. к. все остальное в итоговой таблице вычисляется с помощью формул.
Если же нужно указывать время прихода/ухода каждого сотрудника индивидуально, да еще и в каждый день, то потребуется сделать некоторые изменения. Но, это уже частный вопрос.
Цитата:
Но вот новая беда. НЕ срабатывает макрос переноса даных. То есть, кнопка Табель.Попробовал снять зашиту, ничего не дало.
В макросе и календаре применяются функции DateValue, CDate и т. п., которые требуют текстового написания названия месяца, согласно локальных настроек.
Все вопросы легко решаются. Как лучше сделать - дело вкуса. Пишите мне на почту: SAS888@mail.ru
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Табель Access 2003 Romirez_91 Microsoft Office Access 17 25.01.2013 00:06
Табель посещений mell43 Microsoft Office Excel 2 01.06.2011 08:35
Сделать табель в Excel Demi_ Помощь студентам 4 20.08.2010 15:21
Табель в DBGrid rubi БД в Delphi 8 09.02.2009 10:46
Помогите создать табель hELP_ Microsoft Office Excel 2 27.10.2008 15:30