Nhờ sửa lỗi code trong bảng chấm công (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tommybull

Thành viên hoạt động
Tham gia
21/7/08
Bài viết
191
Được thích
29
Giới tính
Nam
Kính chào các anh chị!
Mình có 3 vấn đề nhờ các anh chị giúp đỡ

1. Tại sheet "Add_NV" mình nhấn nút lệnh "Nhập danh sách" thì bị báo lỗi như trong hình kèm theo "LOI CODE ADD_NV"

2. Tại sheet "Danhsach_NV" (Cột "V") mình nhập "Ngày thôi việc" cho những người đã chấm dứt hợp đồng hoặc nghỉ việc trong tháng (ví dụ 2 người mình tô nền vàng) sau đó mình áp dụng Code sao cho khi mình nhấn nút lệnh "Update List" bên Sheet "Chamcong" thì những người đã nghỉ việc sẽ không hiển thị tên trong danh sách chấm công của tháng mới tại sheet "chamcong". Nhưng vấn đề là sau khi Update list, vẫn còn dòng trống tại sheet "chamcong" (Tô nền vàng) (em gửi theo file đính kèm "Chamcong_luong2017)

3. Tại sheet "chamcong" em đặt code (Code này em đọc được trên "GPE" và đem áp dụng) cho nút lệnh "Kết xuất chấm công" khi nhấn nút lệnh chọn Folder để kết xuất thì vẫn được, nhưng khi tìm vào Folder để mở file vừa được kết xuất lên thì không ra định dạng "Value" (không còn dạng công thức) và hiển thị lỗi như trong file đính kèm "Loi_ketxuat"

Với 3 vấn đề trên, chân thành kính mong các anh chị giúp đỡ ạ!
 

File đính kèm

  • LOI CODE ADD_NV.png
    LOI CODE ADD_NV.png
    343.4 KB · Đọc: 12
  • loi_ketxuat.png
    loi_ketxuat.png
    290.8 KB · Đọc: 11
  • chamcong_luong2017.xlsm
    chamcong_luong2017.xlsm
    1.5 MB · Đọc: 25
Chào bạn
Code Update_list này còn một vấn đề nữa, mong bạn ra tay giúp đỡ
Tại cột "AS" của sheet "chamcong" , bạn cho code đổ vào công thức "Worklam(MONTH($F$3),0,YEAR($F$3))*8"
Nhưng mình muốn khi chạy code Update_list thì công thức sẽ là: "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM6-AN6-AO6-AP6-AQ6-AR6"
Và cứ như thế, có bao nhiêu nhân viên, sẽ sổ xuống bấy nhiêu dòng tương ứng ví dụ như tiếp theo là: "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM7-AN7-AO7-AP7-AQ7-AR7"
Mong nhận được sự giúp đỡ ạ!
Chân thành cảm ơn bạn!
Cái đó bạn thu Macro xong copy công thức vào thử xem. Hiện mình không ngồi máy tính vì vậy không làm hộ bạn được :)
 
Upvote 0
Cái đó bạn thu Macro xong copy công thức vào thử xem. Hiện mình không ngồi máy tính vì vậy không làm hộ bạn được :)
Mình đã thử, nhưng những dòng kế tiếp vẫn cố định mà không đổi dòng từ "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM6-AN6-AO6-AP6-AQ6-AR6" qua "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM7-AN7-AO7-AP7-AQ7-AR7" và và các dòng tiếp theo
Mong bạn giúp
Cảm ơn bạn!
 
Upvote 0
Cái đó bạn thu Macro xong copy công thức vào thử xem. Hiện mình không ngồi máy tính vì vậy không làm hộ bạn được :)
Chào bạn!
Nhờ bạn giúp đỡ nốt phần còn lại nhé, làm phiền bạn ạ!
Mình đã thử, nhưng những dòng kế tiếp vẫn cố định mà không đổi dòng từ "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM6-AN6-AO6-AP6-AQ6-AR6" qua "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM7-AN7-AO7-AP7-AQ7-AR7" và và các dòng tiếp theo.

Xin chân thành cảm ơn bạn! :)
 
Upvote 0
Chào bạn!
Nhờ bạn giúp đỡ nốt phần còn lại nhé, làm phiền bạn ạ!
Mình đã thử, nhưng những dòng kế tiếp vẫn cố định mà không đổi dòng từ "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM6-AN6-AO6-AP6-AQ6-AR6" qua "=(Worklam(MONTH($F$3),0,YEAR($F$3))*8)-AM7-AN7-AO7-AP7-AQ7-AR7" và và các dòng tiếp theo.

Xin chân thành cảm ơn bạn! :)
Bạn thay dòng cũ bằng dòng này thử xem
Mã:
dArr(K, 45) = "=Worklam(MONTH(R3C6),0,YEAR(R3C6))*8-SUM(RC[-6]:RC[-1])"
 
Upvote 0
Bạn thay dòng cũ bằng dòng này thử xem
Mã:
dArr(K, 45) = "=Worklam(MONTH(R3C6),0,YEAR(R3C6))*8-SUM(RC[-6]:RC[-1])"
Bạn ơi, xin giúp thêm vài vấn đề nữa nhé
Các vấn đề mình gặp phải tại sheet "Chamcong" và sheet "Payroll_Luong" mình có viết chi tiết tại phần chữ tô màu đỏ
Mong bạn giúp đỡ giùm ạ!
Chân thành cảm ơn
 

File đính kèm

Upvote 0
Bạn ơi, xin giúp thêm vài vấn đề nữa nhé
Các vấn đề mình gặp phải tại sheet "Chamcong" và sheet "Payroll_Luong" mình có viết chi tiết tại phần chữ tô màu đỏ
Mong bạn giúp đỡ giùm ạ!
Chân thành cảm ơn
Làm sao mà biết ngày nào nghỉ mà bỏ dấu X vậy bạn
 
Upvote 0
Bạn cho chạy dấu "X" vào tất cả các ô, trừ những ngày Chủ nhật, còn ngày nào người nào nghỉ, mình xóa tay ngày đó ạ
Bạn thay cái Code cũ bằng Code này thử
PHP:
Sub Update_List()
    Dim sArr, dArr, I As Long, J As Long, K As Long, NameCol As String, Thu As Long
    With Sheets("Danhsach_NV")
        sArr = .Range("A7", .Range("A65535").End(3)).Resize(, 34).Value
    End With
    ReDim dArr(1 To UBound(sArr), 1 To 53)
    For I = 1 To UBound(sArr)
        If sArr(I, 2) <> Empty And sArr(I, 22) = Empty Then
            K = K + 1
            dArr(K, 1) = K
            For J = 2 To 4
                dArr(K, J) = sArr(I, J)
            Next J
            dArr(K, 5) = sArr(I, 9)
            For J = 6 To 36
                Thu = Application.Weekday(Sheets("ChamCong").Cells(5, J), 2)
                If Thu <> 7 Then dArr(K, J) = "X"
                Next J
                For J = 37 To 44
                    NameCol = Sheets("Chamcong").Cells(5, J).Address
                    dArr(K, J) = "=TinhCong(F" & K + 5 & ":AJ" & K + 5 & "," & NameCol & ")"
                Next J
                dArr(K, 45) = "=countif(rc[-39]:rc[-9],""X*"")*8-SUM(RC[-6]:RC[-1])"
                For J = 46 To 52
                    NameCol = Sheets("Chamcong").Cells(5, J).Address
                    dArr(K, J) = "=TinhCong(F" & K + 5 & ":AJ" & K + 5 & "," & NameCol & ")"
                Next J
                dArr(K, 53) = "=IF(MONTH(R3C6)=1,(Danhsach_NV!R[1]C[-19])-RC[-16],IF(MONTH(R3C6)<4,Danhsach_NV!R[1]C[-19]-RC[-16],IF(Danhsach_NV!R[1]C[-19]>12,12-RC[-16],Danhsach_NV!R[1]C[-19]-RC[-16])))"
            End If
        Next I
        With Sheets("Chamcong")
            .Range("A7", Range("A65535")).EntireRow.Delete
            .Range("A6").Resize(K, 53) = dArr
            .Range("A6:BA6").Copy
            .Range("A7").Resize(K - 1, 53).PasteSpecial Paste:=xlPasteFormats
            Application.CutCopyMode = False
            .Range("A6").Select
        End With
End Sub
 
Upvote 0
Bạn thay cái Code cũ bằng Code này thử
PHP:
Sub Update_List()
    Dim sArr, dArr, I As Long, J As Long, K As Long, NameCol As String, Thu As Long
    With Sheets("Danhsach_NV")
        sArr = .Range("A7", .Range("A65535").End(3)).Resize(, 34).Value
    End With
    ReDim dArr(1 To UBound(sArr), 1 To 53)
    For I = 1 To UBound(sArr)
        If sArr(I, 2) <> Empty And sArr(I, 22) = Empty Then
            K = K + 1
            dArr(K, 1) = K
            For J = 2 To 4
                dArr(K, J) = sArr(I, J)
            Next J
            dArr(K, 5) = sArr(I, 9)
            For J = 6 To 36
                Thu = Application.Weekday(Sheets("ChamCong").Cells(5, J), 2)
                If Thu <> 7 Then dArr(K, J) = "X"
                Next J
                For J = 37 To 44
                    NameCol = Sheets("Chamcong").Cells(5, J).Address
                    dArr(K, J) = "=TinhCong(F" & K + 5 & ":AJ" & K + 5 & "," & NameCol & ")"
                Next J
                dArr(K, 45) = "=countif(rc[-39]:rc[-9],""X*"")*8-SUM(RC[-6]:RC[-1])"
                For J = 46 To 52
                    NameCol = Sheets("Chamcong").Cells(5, J).Address
                    dArr(K, J) = "=TinhCong(F" & K + 5 & ":AJ" & K + 5 & "," & NameCol & ")"
                Next J
                dArr(K, 53) = "=IF(MONTH(R3C6)=1,(Danhsach_NV!R[1]C[-19])-RC[-16],IF(MONTH(R3C6)<4,Danhsach_NV!R[1]C[-19]-RC[-16],IF(Danhsach_NV!R[1]C[-19]>12,12-RC[-16],Danhsach_NV!R[1]C[-19]-RC[-16])))"
            End If
        Next I
        With Sheets("Chamcong")
            .Range("A7", Range("A65535")).EntireRow.Delete
            .Range("A6").Resize(K, 53) = dArr
            .Range("A6:BA6").Copy
            .Range("A7").Resize(K - 1, 53).PasteSpecial Paste:=xlPasteFormats
            Application.CutCopyMode = False
            .Range("A6").Select
        End With
End Sub
Dạ, chạy tốt rồi ạ,
Còn bên Sheet "Payroll_Luong" nó bị ảnh hưởng bởi lệnh Update_list,
Anh chỉ xem ở file đính kèm, em có ghi cụ thể, nhờ anh chị giúp giùm ạk!
 
Upvote 0
Dạ, chạy tốt rồi ạ,
Còn bên Sheet "Payroll_Luong" nó bị ảnh hưởng bởi lệnh Update_list,
Anh chỉ xem ở file đính kèm, em có ghi cụ thể, nhờ anh chị giúp giùm ạk!
Bạn thêm dòng này vào trên chỗ End Sub
Mã:
 With Sheets("Payroll_Luong")
        .Range("A8:B1000").ClearContents
        .Range("A8").Resize(K, 2) = dArr
    End With
 
Upvote 0
Bạn thêm dòng này vào trên chỗ End Sub
Mã:
 With Sheets("Payroll_Luong")
        .Range("A8:B1000").ClearContents
        .Range("A8").Resize(K, 2) = dArr
    End With
Em thử rồi mà vẫn chưa được, em có gửi báo lỗi debug anh (chị) kiểm tra giúp em với ạ!
 

File đính kèm

Upvote 0
Cái hàm Vlookup mình không có lấy vào chỉ lấy Số TT và Mã thôi. Cái đó kéo thủ công xuống nhiều nhiều dòng xong thêm dòng lệnh ẩn dòng trống trong vùng là được :D
 
Upvote 0
Cái hàm Vlookup mình không có lấy vào chỉ lấy Số TT và Mã thôi. Cái đó kéo thủ công xuống nhiều nhiều dòng xong thêm dòng lệnh ẩn dòng trống trong vùng là được :D
Dạ, nhưng không hiểu sao khi em đặt công thức như tại cột "C" sheet "Payroll_luong" (như dòng số 7) (file đính kèm "truoc") và fill xuống thì sau khi em nhấn lệnh "Update List" bên Sheet "chamcong" thì sheet "Payroll_Luong" lại tự trả về như file đính kèm "Sau"
Vấn đề của em là như vậy ạ!
Giúp em sau khi Đặt công thức (thủ công) bên sheet "Payroll_Luong"xong, mỗi khi em Update_List thì công thức lại bị xóa sạch và em lại phải đặt lại từ đầu ạ!
Chỉ riêng những cột nào em dùng Vlookup và lấy dữ liệu vùng bên Sheet "Chamcong" là bị ảnh hưởng (ví dụ như cột "N; O; P; Q; R; S và AB; AC; AD; AE; AF")
Anh chị lỡ thương thì thương em cho trót ạ, xin được giúp đỡ ạ
Chân thành cảm ơn anh chị!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ, nhưng không hiểu sao khi em đặt công thức như tại cột "C" sheet "Payroll_luong" (như dòng số 7) (file đính kèm "truoc") và fill xuống thì sau khi em nhấn lệnh "Update List" bên Sheet "chamcong" thì sheet "Payroll_Luong" lại tự trả về như file đính kèm "Sau"
Vấn đề của em là như vậy ạ!
Giúp em sau khi Đặt công thức (thủ công) bên sheet "Payroll_Luong"xong, mỗi khi em Update_List thì công thức lại bị xóa sạch và em lại phải đặt lại từ đầu ạ!
Chỉ riêng những cột nào em dùng Vlookup và lấy dữ liệu vùng bên Sheet "Chamcong" là bị ảnh hưởng (ví dụ như cột "N; O; P; Q; R; S và AB; AC; AD; AE; AF")
Anh chị lỡ thương thì thương em cho trót ạ, xin được giúp đỡ ạ
Chân thành cảm ơn anh chị!
Anh chị vui lòng giúp em với ạ!
 
Upvote 0
Dạ, nhưng không hiểu sao khi em đặt công thức như tại cột "C" sheet "Payroll_luong" (như dòng số 7) (file đính kèm "truoc") và fill xuống thì sau khi em nhấn lệnh "Update List" bên Sheet "chamcong" thì sheet "Payroll_Luong" lại tự trả về như file đính kèm "Sau"
Vấn đề của em là như vậy ạ!
Giúp em sau khi Đặt công thức (thủ công) bên sheet "Payroll_Luong"xong, mỗi khi em Update_List thì công thức lại bị xóa sạch và em lại phải đặt lại từ đầu ạ!
Chỉ riêng những cột nào em dùng Vlookup và lấy dữ liệu vùng bên Sheet "Chamcong" là bị ảnh hưởng (ví dụ như cột "N; O; P; Q; R; S và AB; AC; AD; AE; AF")
Anh chị lỡ thương thì thương em cho trót ạ, xin được giúp đỡ ạ
Chân thành cảm ơn anh chị!
Chắc là bác "PacificPR" bận việc rồi, mình mong chờ sự giúp đỡ từ tất cả các anh chị trong GPE ạ
Chân thành cảm ơn
 
Upvote 0
Chắc là bác "PacificPR" bận việc rồi, mình mong chờ sự giúp đỡ từ tất cả các anh chị trong GPE ạ
Chân thành cảm ơn
Cái công thức này có vấn đề rồi VLOOKUP(B9;ChamCong!$B$6:$BJ$6;2;0) sao bạn không để như thế này VLOOKUP(B9;ChamCong!$B$6:$BJ$1000;2;0) có mất mát gì đâu :D
 

File đính kèm

Upvote 0
Dạ. Đúng rồi. Anh (chị) vui lòng mở file đính kèm. Em cũng để VLOOKUP(B9;ChamCong!$B$6:$BJ$1000;2;0) Sau đó nhấn nút updatelist thì bên sheet payroll luong tu động chuyển về VLOOKUP(B9;ChamCong!$B$6:$BJ$6;2;0). Anh chị thử đặt lại vlookup bên sheet payroll va trở về sheet chamcong nhấn nút updatelist sẽ thấy vấn đề ạ
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom