Nhờ các anh/chị chỉnh sửa code trong VBA

Liên hệ QC

Bùi Thúy Thúy

Thành viên thường trực
Tham gia
2/7/18
Bài viết
289
Được thích
38
Em có fiel Excel gồm có Sheet "DM_HD" và các Sheet khác
Khi em nhập dữ liệu vào Sheet "DM_HD"(lần 01 kể từ khi mở file lên) thì sheet "DM_HD" không bắt nhập pass, sau đó em chạy dữ liệu (tác động đến các sheet khác), đến lần 02 tiếp tục nhập dữ liệu vào sheet "DM_HD" thì sheet đó lại bắt nhập pass.
Em xem thấy có đoạn code: thì thầy phần :Sheets("DM_HD").Unprotect Password:="******"
Nhờ anh chị bỏ giúp em phần thừa trong đoạn code để khi nhập dữ liêu vào sheet "DM_HD" thì không phải nhập Pass cho sheet.\
Đoạn code có chứa Sheets("DM_HD").Unprotect Password:="******"
Mã:
Sub CAMKET()
Dim Rng As Variant
Application.ScreenUpdating = False
Sheets("DM_HD").Unprotect Password:="******"
On Error Resume Next
  Set Rng = S_DM.Range("A14:A" & S_DM.[B65500].End(xlUp).Row).Find(Range("A1").Value, , , xlWhole)
If S_DM.Range("V" & Rng.Row).Value <> "" Then
   Range(Range("AP18").Value).Value = S_DM.Range("D5").Value & ", " & "ngày " & Day(S_DM.Range("V" & Rng.Row).Value) & " tháng " & Month(S_DM.Range("V" & Rng.Row).Value) & " n" & ChrW(259) & "m " & Year(S_DM.Range("V" & Rng.Row).Value)
Else
   Range(Range("AP18").Value).Value = S_DM.Range("D5").Value & ", " & "ngày ....... tháng ....... n" & ChrW(259) & "m 201......"
End If
   Range("A4") = WorksheetFunction.max(S_DM.Range("A15:A5500"))
   Range(Range("AQ1").Value).Value = "Kính g" & ChrW(7917) & "i: " & S_DM.Range("D2").Value
   Range(Range("AR1").Value).Value = S_DM.Range("D" & Rng.Row).Value
   Range(Range("AP2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 1, 1)
   Range(Range("AQ2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 2, 1)
   Range(Range("AR2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 3, 1)
   Range(Range("AS2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 4, 1)
   Range(Range("AT2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 5, 1)
   Range(Range("AU2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 6, 1)
   Range(Range("AV2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 7, 1)
   Range(Range("AW2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 8, 1)
   Range(Range("AX2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 9, 1)
   Range(Range("AY2").Value).Value = Mid((S_DM.Range("U" & Rng.Row).Value), 10, 1)
   Range(Range("AS1").Value).Value = "    3. S" & ChrW(7889) & " CMND/h" & ChrW(7897) & " chi" & ChrW(7871) & "u: " & S_DM.Range("H" & Rng.Row).Value
   Range(Range("AT1").Value).Value = "Ngày c" & ChrW(7845) & "p: " & Day(S_DM.Range("I" & Rng.Row).Value) & "/" & Month(S_DM.Range("I" & Rng.Row).Value) & "/" & Year(S_DM.Range("I" & Rng.Row).Value)
   Range(Range("AU1").Value).Value = "N" & ChrW(417) & "i c" & ChrW(7845) & "p: " & S_DM.Range("J" & Rng.Row).Value
   Range(Range("AV1").Value).Value = "    4. " & ChrW(272) & ChrW(7883) & "a ch" & ChrW(7881) & " c" & ChrW(432) & " trú: " & S_DM.Range("K" & Rng.Row).Value
   Range(Range("AW1").Value).Value = S_DM.Range("D2").Value
   Range(Range("AX1").Value).Value = "    Tôi cam k" & ChrW(7871) & "t r" & ChrW(7857) & "ng, trong n" & ChrW(259) & "m " & S_DM.Range("W" & Rng.Row).Value & " tôi ch" & ChrW(7881) & " có thu nh" & ChrW(7853) & "p duy nh" & ChrW(7845) & "t t" & ChrW(7841) & "i " & S_DM.Range("D2").Value & _
", nh" & ChrW(432) & "ng " & ChrW(432) & ChrW(7899) & "c tính t" & ChrW(7893) & "ng thu nh" & ChrW(7853) & "p không quá " & Format(Range("A12"), "#,###.#####") & " tri" & ChrW(7879) & "u " & ChrW(273) & ChrW(7891) & "ng " & ChrW(8220) & "Ghi b" & ChrW(7857) & "ng ch" & ChrW(7919) & ": " & _
VND(Sheet2.Range("A12")) & ChrW(8221) & " nên không " & ChrW(273) & ChrW(7871) & "n m" & ChrW(7913) & "c ph" & ChrW(7843) & "i n" & ChrW(7897) & "p thu" & ChrW(7871) & " TNCN. "
   Range(Range("AX1").Value).Characters(Start:=71, Length:=Len(S_DM.Range("D2").Value)).Font.FontStyle = "Bold"
   Range(Range("BA1").Value).Value = S_DM.Range("D" & Rng.Row).Value

   Sheets("DM_HD").Protect Password:="******", AllowFiltering:=True
End Sub
Mã:
Function UpperUni(uni) As String
UpperUni = UCase(uni)
End Function

Function ProperUni(uni As String) As String
Dim vt As Long
If Trim(uni) = "" Then
  ProperUni = uni
Else
  uni = LCase(uni)
  Mid(uni, 1, 1) = UCase(Mid(uni, 1, 1))
  Do
    vt = InStr(vt + 1, uni, " ")
    If vt = 0 Then Exit Do
    Mid(uni, vt + 1, 1) = UCase(Mid(uni, vt + 1, 1))
  Loop
  ProperUni = uni
End If
End Function

Sub CallNhapLieu()
        Sheets("Fo_HDLD").Select
        Sheets("DM_HD").Unprotect Password:="******"
        So_HDong = Range("G4").Value
        HoTen1 = Range("F5").Value
        ChucVu1 = Range("H5").Value
        HoTen2 = Range("E8").Value
        NgaySinh2 = Range("E9").Value
        NoiSinh2 = Range("E10").Value
        DChi_TTru2 = Range("E11").Value
        SoCMND2 = Range("E12").Value
        NgayCap2 = Range("E13").Value
        NoiCap2 = Range("E14").Value
       
        QuocTich2 = Range("G8").Value
        MST_CaNhan2 = Range("G9").Value
        NgheNghiep2 = Range("G10").Value
        MucLuong2 = Range("G11").Value
        CDanhCMon2 = Range("G12").Value
        CViecDGiao2 = Range("G13").Value
        CVuDGiao2 = Range("G14").Value
       
        Noi_LViec2 = Range("I8").Value
        HThuc_HDong2 = Range("I9").Value
        HD_KTuNgay2 = Range("I10").Value
        HD_KDenNgay2 = Range("I11").Value
        TViec_TuNgay2 = Range("I12").Value
        TViec_DenNgay2 = Range("I13").Value
        Ngay_CKet2 = Range("I14").Value
        Nam_CKet2 = Range("I15").Value
       
    If Range("G4") = "" Or Range("F5") = "" Or Range("E8") = "" Or Range("I10") = "" Then
        MsgBox "Du lieu chua nhap du" & Chr(13) & "Yeu cau kiem tra lai", , "Thong Bao"
       
    Exit Sub
    Else
        Sheets("DM_HD").Select
        n = Range("H1").Value
        Range("B1").Select
        ActiveCell.Offset(n + 3, 0).Value = So_HDong
        ActiveCell.Offset(n + 3, 1).Value = MucLuong2
        ActiveCell.Offset(n + 3, 2).Value = HoTen2
        ActiveCell.Offset(n + 3, 3).Value = NgheNghiep2
        ActiveCell.Offset(n + 3, 4).Value = NgaySinh2
        ActiveCell.Offset(n + 3, 5).Value = NoiSinh2
        ActiveCell.Offset(n + 3, 6).Value = SoCMND2
        ActiveCell.Offset(n + 3, 7).Value = NgayCap2
        ActiveCell.Offset(n + 3, 8).Value = NoiCap2
        ActiveCell.Offset(n + 3, 9).Value = DChi_TTru2
        ActiveCell.Offset(n + 3, 10).Value = QuocTich2
        ActiveCell.Offset(n + 3, 11).Value = CDanhCMon2
        ActiveCell.Offset(n + 3, 12).Value = CVuDGiao2
        ActiveCell.Offset(n + 3, 13).Value = CViecDGiao2
        ActiveCell.Offset(n + 3, 14).Value = HThuc_HDong2
        ActiveCell.Offset(n + 3, 15).Value = HD_KTuNgay2
        ActiveCell.Offset(n + 3, 16).Value = HD_KDenNgay2
        ActiveCell.Offset(n + 3, 17).Value = TViec_TuNgay2
        ActiveCell.Offset(n + 3, 18).Value = TViec_DenNgay2
        ActiveCell.Offset(n + 3, 19).Value = MST_CaNhan2
        ActiveCell.Offset(n + 3, 20).Value = Ngay_CKet2
        ActiveCell.Offset(n + 3, 21).Value = Nam_CKet2
        ActiveCell.Offset(n + 3, 22).Value = Noi_LViec2
        ActiveCell.Offset(n + 3, 23).Value = HoTen1
        ActiveCell.Offset(n + 3, 24).Value = ChucVu1
       
        Sheets("Fo_HDLD").Select
        Range("G4,E8:E14,G8:G14,I8:I14").Select
        Selection.ClearContents
        Range("C3").Select
       
        Sheets("DM_HD").Protect Password:="******", AllowFiltering:=True
        Call STT
        MsgBox "NHAP LIEU THANH CONG" & vbCrLf & "", vbInformation, "DA NHAP LIEU"
    End If
End Sub


Public Sub NhapLai()
Sheets("Fo_HDLD").Select

        Sheets("DM_HD").Unprotect Password:="******"
        So_HDong = Range("G4").Value
        HoTen1 = Range("F5").Value
        ChucVu1 = Range("H5").Value
        HoTen2 = Range("E8").Value
        NgaySinh2 = Range("E9").Value
        NoiSinh2 = Range("E10").Value
        DChi_TTru2 = Range("E11").Value
        SoCMND2 = Range("E12").Value
        NgayCap2 = Range("E13").Value
        NoiCap2 = Range("E14").Value
       
        QuocTich2 = Range("G8").Value
        MST_CaNhan2 = Range("G9").Value
        NgheNghiep2 = Range("G10").Value
        MucLuong2 = Range("G11").Value
        CDanhCMon2 = Range("G12").Value
        CViecDGiao2 = Range("G13").Value
        CVuDGiao2 = Range("G14").Value
       
        Noi_LViec2 = Range("I8").Value
        HThuc_HDong2 = Range("I9").Value
        HD_KTuNgay2 = Range("I10").Value
        HD_KDenNgay2 = Range("I11").Value
        TViec_TuNgay2 = Range("I12").Value
        TViec_DenNgay2 = Range("I13").Value
        Ngay_CKet2 = Range("I14").Value
        Nam_CKet2 = Range("I15").Value
       
        If Range("G4") = "" Then
        MsgBox "Du lieu chua nhap du" & Chr(13) & "Yeu cau kiem tra lai", , "Thong Bao"
       
    Exit Sub
    Else
        n = Val(Sheets("Fo_HDLD").Range("E4").Value) + 9
        Sheets("DM_HD").Select
        Range("B1").Select
        ActiveCell.Offset(n + 3, 0).Value = So_HDong
        ActiveCell.Offset(n + 3, 1).Value = MucLuong2
        ActiveCell.Offset(n + 3, 2).Value = HoTen2
        ActiveCell.Offset(n + 3, 3).Value = NgheNghiep2
        ActiveCell.Offset(n + 3, 4).Value = NgaySinh2
        ActiveCell.Offset(n + 3, 5).Value = NoiSinh2
        ActiveCell.Offset(n + 3, 6).Value = SoCMND2
        ActiveCell.Offset(n + 3, 7).Value = NgayCap2
        ActiveCell.Offset(n + 3, 8).Value = NoiCap2
        ActiveCell.Offset(n + 3, 9).Value = DChi_TTru2
        ActiveCell.Offset(n + 3, 10).Value = QuocTich2
        ActiveCell.Offset(n + 3, 11).Value = CDanhCMon2
        ActiveCell.Offset(n + 3, 12).Value = CVuDGiao2
        ActiveCell.Offset(n + 3, 13).Value = CViecDGiao2
        ActiveCell.Offset(n + 3, 14).Value = HThuc_HDong2
        ActiveCell.Offset(n + 3, 15).Value = HD_KTuNgay2
        ActiveCell.Offset(n + 3, 16).Value = HD_KDenNgay2
        ActiveCell.Offset(n + 3, 17).Value = TViec_TuNgay2
        ActiveCell.Offset(n + 3, 18).Value = TViec_DenNgay2
        ActiveCell.Offset(n + 3, 19).Value = MST_CaNhan2
        ActiveCell.Offset(n + 3, 20).Value = Ngay_CKet2
        ActiveCell.Offset(n + 3, 21).Value = Nam_CKet2
        ActiveCell.Offset(n + 3, 22).Value = Noi_LViec2
        ActiveCell.Offset(n + 3, 23).Value = HoTen1
        ActiveCell.Offset(n + 3, 24).Value = ChucVu1
       
        Sheets("Fo_HDLD").Select
        Range("G4,E8:E14,G8:G14,I8:I14").Select
        Selection.ClearContents
        Range("C3").Select
       
        Sheets("DM_HD").Protect Password:="******", AllowFiltering:=True
        MsgBox "NHAP LIEU THANH CONG" & vbCrLf & "", vbInformation, "DA NHAP LIEU"
    End If
End Sub

Public Sub STT()
Dim i As Long, lR As Long
lR = Sheets("DM_HD").Range("B" & Rows.Count).End(xlUp).Row
For i = 1 To lR - 13
Sheets("DM_HD").Range("A" & i + 13) = i
Next i
End Sub


Sub Xoa_Fo_HDLD()
Range("G4,E8:E14,G8:G14,I8:I14").Select
Selection.ClearContents
Range("G4").Select
End Sub

Public Sub aaa()

Dim Cll As Range, STT As Range, i As Long
Set STT = Sheets("DM_HD").Range("A14:A" & Sheets("DM_HD").Range("A2500").End(xlUp).Row)
For Each Cll In STT
    If Cll = Sheet4.Range("E4") Then
        With Sheet4
            For i = 1 To 1
                .Range("G" & i + 3) = Cll.Offset(0, i)
                Next i
            For i = 1 To 1
                .Range("F" & i + 4) = Cll.Offset(0, 23 + i)
                Next i
            For i = 1 To 1
                .Range("H" & i + 4) = Cll.Offset(0, 24 + i)
                Next i
            For i = 1 To 1
                .Range("E" & i + 7) = Cll.Offset(0, 2 + i)
                Next i
            For i = 1 To 2
                .Range("E" & i + 8) = Cll.Offset(0, 4 + i)
                Next i
            For i = 1 To 1
                .Range("E" & i + 10) = Cll.Offset(0, 9 + i)
                Next i
            For i = 1 To 3
                .Range("E" & i + 11) = Cll.Offset(0, 6 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 8) = Cll.Offset(0, 10 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 9) = Cll.Offset(0, 19 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 10) = Cll.Offset(0, 3 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 11) = Cll.Offset(0, 1 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 12) = Cll.Offset(0, 11 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 13) = Cll.Offset(0, 13 + i)
                Next i
             For i = 1 To 1
                .Range("G" & i + 14) = Cll.Offset(0, 12 + i)
                Next i
            For i = 1 To 1
                .Range("I" & i + 8) = Cll.Offset(0, 22 + i)
                Next i
            For i = 1 To 5
                .Range("I" & i + 9) = Cll.Offset(0, 14 + i)
                Next i
            For i = 1 To 1
                .Range("I" & i + 14) = Cll.Offset(0, 20 + i)
                Next i
               
        End With
    End If
Next Cll
End Sub

Public Sub lui()
Dim Cll As Range, STT As Range, i As Long, tt As Long
Set STT = Sheets("DM_HD").Range("A14:A" & Sheets("DM_HD").Range("A2500").End(xlUp).Row)
   Sheet4.Range("E4") = Sheet4.Range("E4") - 1
For Each Cll In STT
    If Cll = Sheet4.Range("E4") And Sheet4.Range("E4") > 0 Then
        With Sheet4
            For i = 1 To 1
                .Range("G" & i + 3) = Cll.Offset(0, i)
                Next i
            For i = 1 To 1
                .Range("F" & i + 4) = Cll.Offset(0, 23 + i)
                Next i
            For i = 1 To 1
                .Range("H" & i + 4) = Cll.Offset(0, 24 + i)
                Next i
            For i = 1 To 1
                .Range("E" & i + 7) = Cll.Offset(0, 2 + i)
                Next i
            For i = 1 To 2
                .Range("E" & i + 8) = Cll.Offset(0, 4 + i)
                Next i
            For i = 1 To 1
                .Range("E" & i + 10) = Cll.Offset(0, 9 + i)
                Next i
            For i = 1 To 3
                .Range("E" & i + 11) = Cll.Offset(0, 6 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 7) = Cll.Offset(0, 10 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 8) = Cll.Offset(0, 19 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 9) = Cll.Offset(0, 3 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 10) = Cll.Offset(0, 1 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 11) = Cll.Offset(0, 11 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 12) = Cll.Offset(0, 13 + i)
                Next i
             For i = 1 To 1
                .Range("G" & i + 13) = Cll.Offset(0, 12 + i)
                Next i
            For i = 1 To 1
                .Range("I" & i + 7) = Cll.Offset(0, 22 + i)
                Next i
            For i = 1 To 5
                .Range("I" & i + 8) = Cll.Offset(0, 14 + i)
                Next i
            For i = 1 To 1
                .Range("I" & i + 13) = Cll.Offset(0, 20 + i)
                Next i
               
        End With
    End If
Next Cll
End Sub
Public Sub tien()
Dim Cll As Range, STT As Range, i As Long, tt As Long
Set STT = Sheets("DM_HD").Range("A14:A" & Sheets("DM_HD").Range("A2500").End(xlUp).Row)
   Sheet4.Range("E4") = Sheet4.Range("E4") + 1
For Each Cll In STT
    If Cll = Sheet4.Range("E4") And Sheet4.Range("E4") > 0 Then
        With Sheet4
           For i = 1 To 1
                .Range("G" & i + 3) = Cll.Offset(0, i)
                Next i
            For i = 1 To 1
                .Range("F" & i + 4) = Cll.Offset(0, 23 + i)
                Next i
            For i = 1 To 1
                .Range("H" & i + 4) = Cll.Offset(0, 24 + i)
                Next i
            For i = 1 To 1
                .Range("E" & i + 7) = Cll.Offset(0, 2 + i)
                Next i
            For i = 1 To 2
                .Range("E" & i + 8) = Cll.Offset(0, 4 + i)
                Next i
            For i = 1 To 1
                .Range("E" & i + 10) = Cll.Offset(0, 9 + i)
                Next i
            For i = 1 To 3
                .Range("E" & i + 11) = Cll.Offset(0, 6 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 7) = Cll.Offset(0, 10 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 8) = Cll.Offset(0, 19 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 9) = Cll.Offset(0, 3 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 10) = Cll.Offset(0, 1 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 11) = Cll.Offset(0, 11 + i)
                Next i
            For i = 1 To 1
                .Range("G" & i + 12) = Cll.Offset(0, 13 + i)
                Next i
             For i = 1 To 1
                .Range("G" & i + 13) = Cll.Offset(0, 12 + i)
                Next i
            For i = 1 To 1
                .Range("I" & i + 7) = Cll.Offset(0, 22 + i)
                Next i
            For i = 1 To 5
                .Range("I" & i + 8) = Cll.Offset(0, 14 + i)
                Next i
            For i = 1 To 1
                .Range("I" & i + 13) = Cll.Offset(0, 20 + i)
                Next i
               
        End With
    End If
Next Cll
End Sub
 
Lần chỉnh sửa cuối:
Nếu không dùng Protect thì bạn bỏ đi, thêm dấu nháy đơn vào trước dòng 4 và 36 trong code
213835
 
Upvote 0
Trong Sub CAMKET() có 2 dòng cần bỏ, bạn tìm luôn trong Function UpperUni, có một số dòng Protect và UnProtect, bỏ luôn các dòng đó, nên sử dụng dấu nháy đơn (') trước dòng code đó để khi cần sử dụng Protect thì mở lại (bỏ nháy đơn).
 
Upvote 0
Web KT
Back
Top Bottom