Giúp mình chỉnh lại code cho ngắn gọn ?

MyVTV Add-ins

huynhphuong thcspt

Thành viên mới
Tham gia ngày
31 Tháng tám 2018
Bài viết
21
Được thích
4
Điểm
103
Tuổi
40
Đây là code mình viết, nhờ Anh Chị trên diễn đàn chỉnh lại cho gọn nhẹ. Xin cảm ơn:
Sub CHON_NH()
Application.ScreenUpdating = False

If Sheets("MN").Range("D5").Value = "2020" Then
Sheets("TK").Select
Range("D5") = "2020"
Range("E5") = "2019"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2021" Then
Sheets("TK").Select
Range("D5") = "2021"
Range("E5") = "2020"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2022" Then
Sheets("TK").Select
Range("D5") = "2022"
Range("E5") = "2021"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2023" Then
Sheets("TK").Select
Range("D5") = "2023"
Range("E5") = "2022"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2024" Then
Sheets("TK").Select
Range("D5") = "2024"
Range("E5") = "2023"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2025" Then
Sheets("TK").Select
Range("D5") = "2025"
Range("E5") = "2024"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2026" Then
Sheets("TK").Select
Range("D5") = "2026"
Range("E5") = "2025"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2027" Then
Sheets("TK").Select
Range("D5") = "2027"
Range("E5") = "2026"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2028" Then
Sheets("TK").Select
Range("D5") = "2028"
Range("E5") = "2027"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2029" Then
Sheets("TK").Select
Range("D5") = "2029"
Range("E5") = "2028"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • TK.xlsm
    20.7 KB · Đọc: 9

Maika8008

Thành viên cùi mía
Tham gia ngày
12 Tháng sáu 2020
Bài viết
1,377
Được thích
1,243
Điểm
568
Sub Fill_Data()
Dim arr, i As Long
arr = Sheets("TK").Range("D5:BL5")
arr(1, 1) = Sheets("MN").Range("D5")
For i = 1 To UBound(arr, 2) - 1
arr(1, i + 1) = arr(1, i) - 1
Next
Range("D5").Resize(1, UBound(arr, 2)).Value = arr
End Sub
 
Lần chỉnh sửa cuối:

Maika8008

Thành viên cùi mía
Tham gia ngày
12 Tháng sáu 2020
Bài viết
1,377
Được thích
1,243
Điểm
568
Cảm ơn bạn nhiều. Quá tuyệt vời luôn.
Đôi lời với bạn, hy vọng giúp ích cho bạn sau này khi tự viết code:
Bạn chọn cú pháp Autofill cũng được nhưng ý nghĩ về 2 cell khởi điểm của bạn chưa đúng. Đây là hướng đúng cho AutoFill của bạn:

1. Cho dù Sheets("MN").Range("D5").Value bằng bao nhiêu đi nữa thì bạn vẫn có thể đưa nó qua Sheets("TK") bằng câu:
Sheets("TK").Range("D5") = Sheets("MN").Range("D5")
Thế là bỏ được cả đống IF

2. Sau đó trừ bớt 1 của cell D5 là ra giá trị cho cell E5
Sheets("TK").Range("E5") = Sheets("TK").Range("D5") - 1

3. Cuối cùng là AutoFill thôi:
Sheets("TK").Activate
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
 
Top Bottom