File excel quản lý nhân viên

Liên hệ QC
Cảm ơn bác đã chia sẻ một bài rất hữu ích. Em đã xem và học hỏi áp dụng cho công việc của mình nhưng mãi mà không cho hiện hình lên được. Bác kiểm tra giúp xem em sai ở chỗ nào hay thiếu sót ở đâu thì sửa giúp em và chỉ dẫn luôn để em học hỏi thêm. Công việc là cho hiện ảnh lên ở sheet 1 khi nhập mã sô lấy từ sheet 2. Ở đây em có 5 hình làm ví dụ khi em có 200 hình thì có tương tự không? Em cảm ơn trước ạ.
Bạn sửa code của bạn chổ màu đỏ là được.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Picname As String
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect([F4], Target) Is Nothing Then
    Set Rng = Sheets(2).Range(Sheets(2).[F7], Sheets(2).[F1000].End(xlUp))
    Picname = ThisWorkbook.Path & "\Anhthohan\" & [COLOR=#ff0000][B]Rng.Find(Target, , xlValues, xlWhole, , , True).Offset(, -5)[/B][/COLOR]


    'Xoa anh da chon o lan truoc di
    Sheets(1).Shapes([D6].Address).Delete
    'Dinh kich thuoc anh
    [D6].Select
    With ActiveSheet.Pictures.Insert(Picname)
        '.Name = Target.Offset(1, 0).Address
        .Name = [D6].Address
        '.Left = Target.Offset(1, 0).Left: Top = Target.Offset(1, 0).Top
        .Left = [D6].Left: Top = [D6].Top
        .Width = 310 '(pixcels) <-- dieu chinh be rong
        .Height = 315 '(pixcels) <-- dieu chinh chieu cao
    End With
'Di chuyen hinh vao trong khung:
    ActiveSheet.Shapes("$D$6").IncrementTop 2#
    ActiveSheet.Shapes("$D$6").IncrementLeft 2.5
End If
Application.ScreenUpdating = True
End Sub
 
Các bạn thử nghiên cứu vào làm trên UserForm để nhìn cho nó đã mắt hơn.
 
Các bạn thử nghiên cứu vào làm trên UserForm để nhìn cho nó đã mắt hơn.

Bạn be09 ơi, nếu có thể bạn thể hiện luôn đi và cho phép Protecsheet và có thêm các chức năng mới gì đó để anh em học tập đi . lâu nay mình không tài nào gửi đính kèm File từ máy lên được chẳng hiểu lý do tại sao nữa ???
 
Bạn be09 ơi, nếu có thể bạn thể hiện luôn đi và cho phép Protecsheet và có thêm các chức năng mới gì đó để anh em học tập đi . lâu nay mình không tài nào gửi đính kèm File từ máy lên được chẳng hiểu lý do tại sao nữa ???

Mấy ngày nghĩ lễ nhưng không có thời gian rảnh, nên chưa thể làm theo yêu cầu của bạn.

Theo tôi quản lý nhân viên thì tùy theo ngành, nghề mà cách theo dõi cũng khác nhau, khi theo dõi nó còn nhiều thứ khác nữa, ví dụ: Trình độ học vấn, Quyết định số, hệ số, bậc lương được hưởng, Quốc tịch, tôn giáo, quan hệ gia đình (chồng, vợ con cái, người thân..v..v....) nó còn lằng nhằng nhiều thứ nữa chứ không làm đơn giản như những File trên.

Khi nào rảnh rỗi tôi sẽ nghiên cứu làm 1 File hoàn chỉnh như vấn đề đặt ra và tải lên để giúp anh em theo dõi về quản lý nhân sự có cái mà dùng.

Chúc tất các thành viên GPE hưởng ngày lễ an lành, vui vẽ.
 
Lần chỉnh sửa cuối:
Anh be09 có họ "Hưá" , nên cách đây một năm, Ảnh có hứa là khi nào rảnh sẽ làm cho em cái Form, nhưng rồi chả thấy gí hết. Chắc Ảnh bận việc quá, mà em cũng thâý Ảnh chỉ có Form Quản lý công văn đi và đến, và cái Form gì về Tài nguyên môi trường thôi chứ chả có gì.Trong khi đó có người không hứa nhưng vẫn sẵn sàng giúp mọi lúc.
 
Anh be09 có họ "Hưá" , nên cách đây một năm, Ảnh có hứa là khi nào rảnh sẽ làm cho em cái Form, nhưng rồi chả thấy gí hết. Chắc Ảnh bận việc quá, mà em cũng thâý Ảnh chỉ có Form Quản lý công văn đi và đến, và cái Form gì về Tài nguyên môi trường thôi chứ chả có gì.Trong khi đó có người không hứa nhưng vẫn sẵn sàng giúp mọi lúc.

Như bài #44, anh nêu:

Mấy ngày nghĩ lễ nhưng không có thời gian rảnh, nên chưa thể làm theo yêu cầu của bạn.

Cho thấy anh bận rộn rất nhiều việc, nên có nhiều khi hứa mà không giúp để lâu quá lại quên, bây giờ thấy anh em nhắc nhỡ thấy ái náy quá.

Trước đây anh thường đi công tác huyện nên đôi khi tối rảnh rỗi nhưng không có Laptop mang theo thì cũng đành bó tay, hiện nay anh đã có rồi nên anh sẽ cố gắng thực hiện như lời đã hứa.
 
Xin cảm ơn bác Ndu, bạn hpkhuong, và các bạn khác . . . đã giúp đỡ trong quá trình xây dựng File này.
Up thử lên các bạn tham khảo và bổ xung thêm và chỉnh sửa cho gọn nhẹ hơn nhé - Xin cảm ơn các bạn nhiều nhiều
Để gọn nhẹ, xin đề nghị bạn tách CSDL hiện có thành 2 trang tính;
Một trang gồm các trường từ cột [Ghi nhớ] trở về trước, tạm gôi là fần chung (hay là tổng quát)
Còn fần sau cột này là fần chi tiết ta nên cho vô trang tính khác riêng ra;
Tất nhiện giữa 2 trang tính tổng quát & chi tiết sẽ có sự quan hệ 1-Nhiều (Có nghĩa lá 1 dòng dữ liệu bên 'Tổng quát' sẽ liên hệ với nhiều hơn 1 dòng bên 'Chi tiết'
Làm như vậy bạn sẽ giảm đán kể dung lượng file & vận hành an toàn hơn CSDL của bạn

Điều quan trọng ở đây là mã quan hệ này cần khoa học súc tích;

Để vậy mả nhân viên cũng nên khoa học & súc tích không kém.
Các mã loại này trong excel không nên là những kí số như bạn đang iêu cầu, mà chuỗi chứa ít nhất 1 kí tự
Vì nếu xài các kí số thì cũng fải bỏ không xài được các con số 0 trước như 00123; mà fải bắt đầu là 10123
Nếu bạn xài kí tư chen vô thì độ dài chỉ cần A001 -> Z999 đã là hơn bao nhiêu lần trong quỹ mã NV so với khoảng (10000 - 99999) của bạn rồi.

Hẹn dịp khác gặp lại!
 
Bạn sửa code của bạn chổ màu đỏ là được.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Picname As String
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect([F4], Target) Is Nothing Then
    Set Rng = Sheets(2).Range(Sheets(2).[F7], Sheets(2).[F1000].End(xlUp))
    Picname = ThisWorkbook.Path & "\Anhthohan\" & [COLOR=#ff0000][B]Rng.Find(Target, , xlValues, xlWhole, , , True).Offset(, -5)[/B][/COLOR]


    'Xoa anh da chon o lan truoc di
    Sheets(1).Shapes([D6].Address).Delete
    'Dinh kich thuoc anh
    [D6].Select
    With ActiveSheet.Pictures.Insert(Picname)
        '.Name = Target.Offset(1, 0).Address
        .Name = [D6].Address
        '.Left = Target.Offset(1, 0).Left: Top = Target.Offset(1, 0).Top
        .Left = [D6].Left: Top = [D6].Top
        .Width = 310 '(pixcels) <-- dieu chinh be rong
        .Height = 315 '(pixcels) <-- dieu chinh chieu cao
    End With
'Di chuyen hinh vao trong khung:
    ActiveSheet.Shapes("$D$6").IncrementTop 2#
    ActiveSheet.Shapes("$D$6").IncrementLeft 2.5
End If
Application.ScreenUpdating = True
End Sub
Thật tuyệt vời. Cảm ơn bác rất nhiều. Bác có thể giải thích giúp dòng màu đỏ đó được không.Tại sao dòng cũ không có tác dụng. Em muốn hiểu rõ chút chút để áp dụng nhiều công việc khác. Hì hì.
 
Thật tuyệt vời. Cảm ơn bác rất nhiều. Bác có thể giải thích giúp dòng màu đỏ đó được không.Tại sao dòng cũ không có tác dụng. Em muốn hiểu rõ chút chút để áp dụng nhiều công việc khác. Hì hì.
Bạn bỏ đi dòng màu đỏ này và chạy code của bạn sẽ hiểu rõ.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Picname As String
Application.ScreenUpdating = False
'[COLOR=#ff0000][B]On Error Resume Next[/B][/COLOR]
If Not Intersect([F4], Target) Is Nothing Then
    Set Rng = Sheets(2).Range(Sheets(2).[F7], Sheets(2).[F1000].End(xlUp))
    Picname = ThisWorkbook.Path & "\Anhthohan\" & Rng.Find(Target.Value).Offset(, -5)
    'Xoa anh da chon o lan truoc di
    MsgBox Picname
    Exit Sub
    Sheets(1).Shapes([D6].Address).Delete
    'Dinh kich thuoc anh
    [D6].Select
    With ActiveSheet.Pictures.Insert(Picname)
        '.Name = Target.Offset(1, 0).Address
        .Name = [D6].Address
        '.Left = Target.Offset(1, 0).Left: Top = Target.Offset(1, 0).Top
        .Left = [D6].Left: Top = [D6].Top
        .Width = 310 '(pixcels) <-- dieu chinh be rong
        .Height = 315 '(pixcels) <-- dieu chinh chieu cao
    End With
'Di chuyen hinh vao trong khung:
    ActiveSheet.Shapes("$D$6").IncrementTop 2#
    ActiveSheet.Shapes("$D$6").IncrementLeft 2.5
End If
Application.ScreenUpdating = True
End Sub
 
Bạn bỏ đi dòng màu đỏ này và chạy code của bạn sẽ hiểu rõ.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Picname As String
Application.ScreenUpdating = False
'[COLOR=#ff0000][B]On Error Resume Next[/B][/COLOR]
If Not Intersect([F4], Target) Is Nothing Then
    Set Rng = Sheets(2).Range(Sheets(2).[F7], Sheets(2).[F1000].End(xlUp))
    Picname = ThisWorkbook.Path & "\Anhthohan\" & Rng.Find(Target.Value).Offset(, -5)
    'Xoa anh da chon o lan truoc di
    MsgBox Picname
    Exit Sub
    Sheets(1).Shapes([D6].Address).Delete
    'Dinh kich thuoc anh
    [D6].Select
    With ActiveSheet.Pictures.Insert(Picname)
        '.Name = Target.Offset(1, 0).Address
        .Name = [D6].Address
        '.Left = Target.Offset(1, 0).Left: Top = Target.Offset(1, 0).Top
        .Left = [D6].Left: Top = [D6].Top
        .Width = 310 '(pixcels) <-- dieu chinh be rong
        .Height = 315 '(pixcels) <-- dieu chinh chieu cao
    End With
'Di chuyen hinh vao trong khung:
    ActiveSheet.Shapes("$D$6").IncrementTop 2#
    ActiveSheet.Shapes("$D$6").IncrementLeft 2.5
End If
Application.ScreenUpdating = True
End Sub
He he, cảm ơn bác đã chỉ bảo, em cũng đã lờ mờ hiểu. Em làm phiền nốt việc nữa là em muốn liệt kê toàn bộ thông tin của 1 mã số ở sheet 3 xuống bên dưới ở sheet 1( có mã số có 6 dòng thông tin nhưng có mã số chỉ 1 dòng thông tin). Em nghiên cứu cả ngày hôm qua nhưng chưa được như ý muốn.
 
Cảm ơn bác đã chia sẻ một bài rất hữu ích. Em đã xem và học hỏi áp dụng cho công việc của mình nhưng mãi mà không cho hiện hình lên được. Bác kiểm tra giúp xem em sai ở chỗ nào hay thiếu sót ở đâu thì sửa giúp em và chỉ dẫn luôn để em học hỏi thêm. Công việc là cho hiện ảnh lên ở sheet 1 khi nhập mã sô lấy từ sheet 2. Ở đây em có 5 hình làm ví dụ khi em có 200 hình thì có tương tự không? Em cảm ơn trước ạ.

Một lựa chọn khác cho bạn không dùng VBA
 

File đính kèm

  • danh sach tho han 04-2016.xls
    892 KB · Đọc: 282
Chào cả nhà, mình mới làm mảng nhân sự. Công ty mình cũng mới, muốn xin cả nhà mẫu quản lý nhân sự về: đi làm muộn thì phạt thế nào, nghỉ ko phép thì bị nhắc nhớ hay buộc thôi việc. Bạn nào có cho mình xin 1 file làm mẫu nhé. cảm ơn cả nhà nhiều ạ}}}}}}}}}}}}}}}
 
Tôi thấy sao rối mắt với đống code trong file của bạn quá. Bức râu ông nọ cắm cằm bà kia sao bảo load cho đúng hình vào được.
Ở ngoài tên folder chứa hình là "HoSoCBCNV", còn trong code để là "HINH". Nó có ăn nhậu gì với nhau đâu mà bảo load được Pic.

Tôi có giải pháp khác thay thế, là chèn hình đúng vào cái Cell E3 chết tiệt ấy (bạn đã meger rồi đó).
Bạn Xóa cái code sự kiện trong sheet SoYeu_LL đi, dùng đoạn code sau paste vào module
Tại cell E3 bạn xài công thức sau: (và tất nhiên là hình ảnh có cùng 1 đuôi nha , ví dụ ở dưới công thức là .jpg)

Mã:
 E3 =CommPic("HoSoCBCNV\"&$K$3&".jpg")

Code paste vào module
Mã:
Function CommPic(ByVal Pic As String, Optional ByVal Cel As Range) As String
  Dim mRng As Range, comm As Comment
  On Error Resume Next
  Application.Volatile
  If Cel Is Nothing Then Set Cel = Application.ThisCell
  Cel(1, 1).Comment.Delete
  If Not CreateObject("Scripting.FileSystemObject").FileExists(Pic) Then
    Pic = ThisWorkbook.Path & "\" & Pic
  End If
  If CreateObject("Scripting.FileSystemObject").FileExists(Pic) Then
    If Cel(1, 1).Comment Is Nothing Then Cel(1, 1).AddComment
    Cel(1, 1).Comment.Text vbLf
    Set mRng = Cel(1, 1).MergeArea
    If mRng Is Nothing Then Set mRng = Cel(1, 1)
    Set comm = mRng(1, 1).Comment
    comm.Visible = True
    With comm.Shape
      .LockAspectRatio = msoFalse
      .Placement = xlMoveAndSize
      .Shadow.Visible = msoFalse
      .Line.Visible = msoFalse
      .AutoShapeType = msoShapeRectangle
      .Left = mRng.Left: .Top = mRng.Top
      .Width = mRng.Width: .Height = mRng.Height
      .Fill.UserPicture Pic
    End With
  End If
End Function

P/s: Function trên là học hỏi của anh NDU. Đảm bảo tốc độ nhanh hơn nhiều so với code sự kiện như trong file của bạn
Với Function trên, trên bảng tính. Bạn muốn chèn hình vào cell nào thì cữ gõ công thức như trên là nó chèn.........Quả thật rất là tuyệt đúng không???

Cho mình hỏi khi cài protect sheet thì làm sao để hiện tấm hình ra ?
 
Trước hết xin phép bác Ndu, bạn hpkhuong, và một số bạn khác nữa đã giúp đỡ trong quá trình xây dựng File này. Up thử lên các bạn tham khảo và bổ xung thêm và chỉnh sửa cho gọn nhẹ hơn nhé - Xin cảm ơn các bạn nhiều nhiều​
paperclip.png
Tập tin đính kèm

Bạn cho mình pass code của ứng dụng này với : hunglsvn@gmail.com cảm ơn bạn nhiều.
 
Trước hết xin phép bác Ndu, bạn hpkhuong, và một số bạn khác nữa đã giúp đỡ trong quá trình xây dựng File này. Up thử lên các bạn tham khảo và bổ xung thêm và chỉnh sửa cho gọn nhẹ hơn nhé - Xin cảm ơn các bạn nhiều nhiều​

Bạn cho mình pass code của ứng dụng này với : hunglsvn@gmail.com cảm ơn bạn nhiều.

Nếu fải góp í với bạn thì quan trọng nhất sẽ là cách thức tạo mã NV duy nhất; Sao cho vừa ngắn gọn, nhưng có tính tương tác cao;
Thứ hai, CSDL cũa bạn sẽ có rất nhiều dòng trống
Nên tách ra làm 2 {Table}
2 bảng này liên hệ với nhau 1-nhiều
 
Anh be09 có họ "Hưá" , nên cách đây một năm, Ảnh có hứa là khi nào rảnh sẽ làm cho em cái Form, nhưng rồi chả thấy gí hết. Chắc Ảnh bận việc quá, mà em cũng thâý Ảnh chỉ có Form Quản lý công văn đi và đến, và cái Form gì về Tài nguyên môi trường thôi chứ chả có gì.Trong khi đó có người không hứa nhưng vẫn sẵn sàng giúp mọi lúc.

Bài này lâu rồi, nay có thành viên khơi màu nên tôi cũng ý kiến thêm.

Như đã hứa làm cái UserForm để quản lý.

Nhưng từ đó đến nay cũng chưa hoàn thiện xong, nếu đưa lên sử dụng thì sẽ có nhiều trục trặc, rối rắm, nếu làm xong tôi sẽ mở Topic mới với dạng UserForm để load hình theo tên từng nhân viên mà không cần đường dẫn, có thể lấy hình bất cứ nơi đâu.

Các bạn hãy chờ thêm một thời gian nữa, vì hiện tại tôi đang sửa nhà đã dọn bàn ghế chỗ khác quá chật chội nên không có chỗ ngồi đành ngồi dưới đất mà trả lời bài viết nay thấy cũng quá là bất tiện.
 
Tới nay đã 3 tháng, và thấy bác be09 cũng thường xuyên vào GPE từ đó đến nay, mà chưa thấy file bằng UserForm để quản lý
Bài này lâu rồi, nay có thành viên khơi màu nên tôi cũng ý kiến thêm.

Như đã hứa làm cái UserForm để quản lý.

Nhưng từ đó đến nay cũng chưa hoàn thiện xong, nếu đưa lên sử dụng thì sẽ có nhiều trục trặc, rối rắm, nếu làm xong tôi sẽ mở Topic mới với dạng UserForm để load hình theo tên từng nhân viên mà không cần đường dẫn, có thể lấy hình bất cứ nơi đâu.

Các bạn hãy chờ thêm một thời gian nữa, vì hiện tại tôi đang sửa nhà đã dọn bàn ghế chỗ khác quá chật chội nên không có chỗ ngồi đành ngồi dưới đất mà trả lời bài viết nay thấy cũng quá là bất tiện.

kh
ông biết nhà của Bác be09 đã sửa xong chưa????|||||!$@!!--=--
Bác lại "Hứa" nữa rồi.
 
Tới nay đã 3 tháng, và thấy bác be09 cũng thường xuyên vào GPE từ đó đến nay, mà chưa thấy file bằng UserForm để quản lý

kh
ông biết nhà của Bác be09 đã sửa xong chưa????|||||!$@!!--=--
Bác lại "Hứa" nữa rồi.

Đúng là tôi có hứa làm nhưng lực bất tòng tâm, vì hiện nay có 1 số thành viên GPE làm trong ngành gửi File qua nhờ làm giúp cũng khá nhiều (việc chuyên môn là rất cần thiết) nên với lời hứa này hiện nay tôi cũng chưa rảnh để hoàn thiện, mong các bạn thông cãm.

Cụ thể 1 số việc chuyên môn theo mẫu quy định như sau:

1/ Theo dõi việc tiếp nhận hồ sơ 1 cửa, tạo biên nhận hồ sơ, lập danh sách luân chuyển hồ sơ, theo dõi kết quả thực hiện.

2/ Theo dõi việc thực hiện lập thủ tục của các bộ phận, tạo mẫu hợp đồng chuyển nhượng quyền sử dụng đất, hợp đồng cho tặng quyền sử dụng đất, phiếu chuyển thuế về thu trước bạ, về thuế thu nhập cá nhân..v..v...

3/ Theo dõi về đăng ký, xét cấp giấy chứng nhận hàng quyền sử dụng đất, về biến động đất đai hàng năm của từng địa phương.

4/ Áp giá về bồi thường và tái định cư khi nhà nước thu hồi đất.

5/ Theo dõi xử lý đơn khiếu nại, tố cáo và Văn bản chỉ đạo trong lĩnh vực đất đai.

6/ Theo dõi các quyết định về kết luận về thanh tra, kiểm tra và xử phạt trong lĩnh vực đất đai.

Nói chung là LU XU BU QUÁ mà khả năng thì cũng có giới hạn.
 
Lần chỉnh sửa cuối:
Em muốn tạo thêm nút tìm kiếm sau mã số nhân viên để có thể tìm kiếm nhân viên theo mã số hoặc theo tên.
Bác nào có code nút tìm kiếm không chỉ em với ạ.
Em cám ơn nhiều nhiều!
Email: tamdang272@gmail.com
 
Web KT
Back
Top Bottom