Sửa dùm em đoạn code

  • Thread starter Thread starter NH_DK
  • Ngày gửi Ngày gửi
Liên hệ QC

NH_DK

Let's patience
Tham gia
29/7/10
Bài viết
865
Được thích
1,203
Nghề nghiệp
Kế toán
A/C xem và sửa dùm em đoạn code này nhé:

PHP:
n = [a50000].End(xlUp).Row + 4
   Range("A" & n & ":G" & n + 10).ClearContents
   With Cells(n - 1, "B").Offset(2, 0)
       .FormulaR1C1 = "=TKHO":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "B").Offset(3, 0)
       .FormulaR1C1 = "=KY01":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "D").Offset(2, 0)
       .FormulaR1C1 = "=KTT":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "D").Offset(3, 0)
       .FormulaR1C1 = "=KY01":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "F").Offset(2, 0)
       .FormulaR1C1 = "=GDO":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "F").Offset(3, 0)
       .FormulaR1C1 = "=KY02":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With

Không hiểu sai chỗ nào mà nó cứ cập nhật lung tung lắm. Em đã kiểm tra nhưng chưa phát hiện ra chỗ sai.
A/C chỉ dùm em nhé!
 

File đính kèm

A/C xem và sửa dùm em đoạn code này nhé:

PHP:
n = [a50000].End(xlUp).Row + 4
   Range("A" & n & ":G" & n + 10).ClearContents
   With Cells(n - 1, "B").Offset(2, 0)
       .FormulaR1C1 = "=TKHO":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "B").Offset(3, 0)
       .FormulaR1C1 = "=KY01":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "D").Offset(2, 0)
       .FormulaR1C1 = "=KTT":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "D").Offset(3, 0)
       .FormulaR1C1 = "=KY01":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "F").Offset(2, 0)
       .FormulaR1C1 = "=GDO":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "F").Offset(3, 0)
       .FormulaR1C1 = "=KY02":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
Không hiểu sai chỗ nào mà nó cứ cập nhật lung tung lắm. Em đã kiểm tra nhưng chưa phát hiện ra chỗ sai.
A/C chỉ dùm em nhé!
Đoạn code này có sai gì đâu mà bạn Post lên đây. Cái sai là bạn đặt đoạn code này trong vòng lặp. Đưa nó ra ngoài vòng lặp là được.
 
Upvote 0
huuthang_bd ơi, mình hỏi thêm nhé!
Mình đã cho ra ngoài vòng lặp và đã thành công rồi. Nhưng có điều này mình hỏi thêm nhé. Tại sao định dạng dữ liệu không như ý mình vậy? Mình đã định dạng từng vùng rồi mà!?
Bạn vui lòng chỉ thêm nhé!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Theo mình thì bạn nên thay toàn bộ đoạn code trên bởi đoạn code
PHP:
   Range("A" & j + 1 & ":G65536").ClearContents
   Cells(j + 2, "B").FormulaR1C1 = "=TKHO"
   Cells(j + 3, "B").FormulaR1C1 = "=KY01"
   Cells(j + 2, "D").FormulaR1C1 = "=KTT"
   Cells(j + 3, "D").FormulaR1C1 = "=KY01"
   Cells(j + 2, "F").FormulaR1C1 = "=GDO"
   Cells(j + 3, "F").FormulaR1C1 = "=KY02"
   With Range("B" & j + 2 & ":F" & j + 3)
        .Font.Name = "Times New Roman"
        .Font.Size = 13
        .HorizontalAlignment = xlCenter
   End With
   Range("B" & j + 2 & ":F" & j + 2).Font.Bold = True
   Range("B" & j + 3 & ":F" & j + 3).Font.Italic = True
hoặc nếu bạn vẫn muốn giữ nguyên đoạn code trên thì thay câu lệnh n = [a50000].End(xlUp).Row + 4 bởi câu lệnh n=j+1
 
Upvote 0
Phần này là copy cái footer vào dưới mỗi trang sổ, sao không làm một name tên Footer thôi gồm KTT, GD ...và copy vào dòng n + ...
Nhưng có vấn đề là n sẽ luôn khác nhau với từng báo cáo nên .ClearContents không ổn. Nên .Clear thôi và định dạng lại các dòng -> n.
Tôi thì dùng kiểu khác. Dự trù max dòng của sổ, phần footer gắn vào dòng cuối, còn những dòng trống thì hide cho khoẻ. Hiển nhiên là dùng code.
 
Upvote 0
Phần này là copy cái footer vào dưới mỗi trang sổ, sao không làm một name tên Footer thôi gồm KTT, GD ...và copy vào dòng n + ...
Nhưng có vấn đề là n sẽ luôn khác nhau với từng báo cáo nên .ClearContents không ổn. Nên .Clear thôi và định dạng lại các dòng -> n.
Tôi thì dùng kiểu khác. Dự trù max dòng của sổ, phần footer gắn vào dòng cuối, còn những dòng trống thì hide cho khoẻ. Hiển nhiên là dùng code.

Anh ơi, cái này em chưa biết làm. Anh làm dùm cho em 1 ví dụ luôn cho bài này để em tham khảo?
 
Upvote 0
Anh ơi, cái này em chưa biết làm. Anh làm dùm cho em 1 ví dụ luôn cho bài này để em tham khảo?
Ví dụ như thế này:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i, n, j As Long
Application.ScreenUpdating = False
If Target.Address <> "$F$1" Then Exit Sub
Range("a17:g50000").Clear
j = 17
For i = 6 To Sheet9.[a50000].End(xlUp).Row
If Sheet9.Cells(i, 12) = Target Then
Cells(j, 1) = Sheet9.Cells(i, 2)
Cells(j, 2) = Sheet9.Cells(i, 1)
Cells(j, 3) = Cells(j, 1)
Cells(j, 4) = Sheet9.Cells(i, 13)
Cells(j, 5) = Sheet9.Cells(i, 16)
Cells(j, 6) = Sheet9.Cells(i, 18)
Cells(j, 7) = Cells(j - 1, 7) + Cells(j, 5) - Cells(j, 6)
j = j + 1
End If
Next
   Range("A17:A" & j & ",C17:C" & j).NumberFormat = "dd/mm/yyyy"
   n = [a50000].End(xlUp).Row + 4
   Range("A" & n & ":G" & n + 10).ClearContents
   With Cells(n - 1, "B").Offset(2, 0)
       .FormulaR1C1 = "=TKHO":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "B").Offset(3, 0)
       .FormulaR1C1 = "=KY01":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "D").Offset(2, 0)
       .FormulaR1C1 = "=KTT":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "D").Offset(3, 0)
       .FormulaR1C1 = "=KY01":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "F").Offset(2, 0)
       .FormulaR1C1 = "=GDO":      .Font.Bold = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With
   With Cells(n - 1, "F").Offset(3, 0)
       .FormulaR1C1 = "=KY02":      .Font.Italic = True
       .Font.Name = "Times New Roman":        .Font.Size = 13
       .HorizontalAlignment = xlCenter
   End With

End Sub
 
Upvote 0
Mình tham gia phần chân các báo cáo:
Trên 1 file dạng này sẽ có rất nhiều báo cáo, mỗi báo cáo ta lại có đoạn code tạo chân báo cáo, định dạng tính toán rất phúc tạp và rầy rà.
Mình thường làm như sau và rất nhanh:
1/Tạo chân trang bằng tay màu sắc, Font chữ, công thức đầy đủ.
2/Thêm 1 sheet temp lưu các dạng chân trang tại đó( Vì không có dữ liệu và chép lên đầu cột nên các công thức hầu như không chạy)
3/Khi chạy Code xong ta chép chân trang và chuyển công thức thành giá trị là OK
4/Nếu có cả đầu trang thì không cần thiết tồn tại các báo cáo. Xem xong xoá đi. Khi cần Add sheet--Chép đầu trang--Chạy Code--Chép chân trang--OK. Như vậy cấu trúc File rất gọn và nhẹ nhàng.
 
Upvote 0
Web KT

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

Back
Top Bottom