Danh mục

Tạo hàm chấm công

Số trang: 12      Loại file: pdf      Dung lượng: 296.97 KB      Lượt xem: 7      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: 5,000 VND Tải xuống file đầy đủ (12 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Ở một số công ty, nhà máy nhỏ việc chấm công thông thường được thực hiện trên Excel. Qua trao đổi tôi thấy rằng đa số khi nhân viên có đi làm thì sẽ được chấm là X , nghĩ phép là P , ...vv. Sau đó sẽ sử dụng một số hàm trong Excel để tính số ngày công trong một tháng của nhân viên. Tôi nghĩ rằng thông thường số ngày làm việc sẽ nhiều hơn số ngày nghĩ, nếu chấm công như trên nghĩa là bạn phải nhập vào bảng tính Excel nhiều hơn nếu bạn chỉ...
Nội dung trích xuất từ tài liệu:
Tạo hàm chấm công Tạo hàm chấm công . Ở một số công ty, nhà máy nhỏ việc chấm công thông thường được thực hiện trên Excel. Qua trao đổi tôi thấy rằng đa số khi nhân viên có đi làm thì sẽ được chấm là X , nghĩ phép là P , ...vv. Sau đó sẽ sử dụng một số hàm trong Excel để tính số ngày công trong một tháng của nhân viên. Tôi nghĩ rằng thông thường số ngày làm việc sẽ nhiều hơn số ngày nghĩ, nếu chấm công như trên nghĩa là bạn phải nhập vào bảng tính Excel nhiều hơn nếu bạn chỉ nhập vào những ngày nghĩ của nhân viên ấy. Giả sử rằng troHoặc có những ngày thì tính công nhật (công thời gian), có những ngày tính theo năng suất...thìbạn phải làm như thế nào. Tôi nghĩ ở một số công ty việc chấm công sẽ rắc rối hơn như trên vìhiện nay ở một số công ty có cả công nhân thời vụ và công nhân chính thức,...!Vâng, vấn đề chắc chắn là rắc rối. Ở đây tôi không có tham vọng giải quyết tất cả các vấn đềtrên. Tôi chỉ muốn đưa ra hàm chấm công để cho công việc chấm công dễ dàng hơn.Cấu trúc của hàm chấm công như sau:Public Function Chamcong(ByVal Khoang As Range, ByVal Chucnang As String) As Single_ Khoang: là khoảng (Thông thường là một hàng từ cột...đến cột...) tương ứng với hàng haykhoảng mà bạn chấm công cho một nhân viên._ Chucnang: là chuổi hay ký tự đại diện cho một chức năng chấm công của bạn.Giả sử ở đây tôi quy định:ü Nghĩ phép là: Aü Nghĩ bệnh là: Sü Nghĩ ma chay là: Cü Nghĩ không lương là: Uü Tăng ca ngày thường (tính nhân cho 1.5) là: Nü Tăng ca ngày nghĩ (tính nhân cho 2) là: DVậy nếu trong một ngày nhân viên đó nghĩ phép ½ ngày, tăng ca (ngày thường) 3 tiếng thì tôi sẽchấm như sau: (Giả sử tên nhân viên là Triệu Nhất Đông, ngày áp dụng là 27/02/2002)Ở đây việc chấm công cho nghĩ phép và tăng ca sẽ được cách nhau bởi “ ; “ (dấu chấm phẩy,nếu bạn muốn bạn cũng có thể thay đổi ký tự trên khi bạn khai báo để xử lý trong hàm chấmcông).Trong hàm chấm công của tôi, tôi có sử dụng một Class tên clsString của Thấy Lê Đức Hồng(HTTP: www.vovisoft.com). Bạn chỉ việc copy đoạn mã sau và đưa vào class module trong cửasổ VBE của bạn.Author: Le Duc Hong http://www.vovisoft.comOption ExplicitPrivate SText As StringPrivate SDelimiter As StringPrivate IPos As IntegerPrivate ILen As IntegerPublic MaxToken As IntegerPrivate Tokens() As StringPublic Property Get Text() As VariantText = STextEnd PropertyPublic Property Let Text(ByVal vNewValue As Variant)SText = vNewValueILen = Len(SText): IPos = 1End PropertyPublic Property Get Delimiter() As VariantDelimiter = SDelimiterEnd PropertyPublic Function TokenAt(TNum) As StringIf (TNum > 0) And (TNum Do Until IPos > ILeni=i+1ReDim Preserve Tokens(i)Tokens(i) = GetTokenLoopMaxToken = iIPos = 1End SubPublic Sub ReplaceToken(TNum, NewToken)If (TNum > 0) And (TNum Public Function KeepLeftPart(NumChar) As StringIf ILen >= NumChar ThenSText = Left(SText, NumChar): ILen = Len(SText)End IfKeepLeftPart = STextEnd FunctionPublic Function KeepRightPart(NumChar) As StringIf ILen >= NumChar ThenSText = Right(SText, NumChar): ILen = Len(SText)End IfKeepRightPart = STextEnd FunctionPublic Function KeepMidPart(SPos, NumChar) As StringIf ILen >= SPos ThenSText = Mid(SText, SPos): ILen = Len(SText)End IfIf ILen >= NumChar ThenSText = Right(SText, NumChar)End IfKeepMidPart = STextEnd FunctionPublic Property Get CurrentPos() As VariantCurrentPos = IPosEnd PropertyPublic Property Let CurrentPos(ByVal vNewValue As Variant)IPos = vNewValueEnd PropertyPublic Function GetToken() As StringDim PosGetToken = If SDelimiter = ThenDo While Mid(SText, IPos, 1) = IPos = IPos + 1If IPos > ILen ThenExit FunctionEnd IfLoopEnd IfPos = InStr(IPos, SText, SDelimiter)If Pos > 0 ThenGetToken = Mid(SText, IPos, Pos - IPos)IPos = Pos + Len(SDelimiter)ElseGetToken = Mid(SText, IPos, ILen - IPos + 1)IPos = ILen + 1End IfEnd FunctionPublic Sub Substitude(Param, ParamValue)Dim Pos, PLenPLen = Len(Param)Pos = InStr(SText, Param)Do While Pos > 0SText = Left(SText, Pos - 1) & ParamValue & Mid(SText, Pos + P ...

Tài liệu được xem nhiều: