Cho mình hỏi sub này dòng cuối sai ở đâu mà không chạy được ?

Liên hệ QC

hoi_joker

Thành viên mới
Tham gia
14/9/07
Bài viết
41
Được thích
17
MÌNH CÓ BẢNG TÍNH GỒM 16 SHEETS (ĐỊNH DẠNG VÀ DỮ LIỆU NHƯ NHAU). CỘT U TRONG CÁC SHEET ĐỂ ĐÁNH SỐ TT. MÌNH LÀM SUB NÀY ĐỂ ĐÁNH SỐ TT TẤT CẢ CÁC SHEET TRONG 1 LẦN NHƯNG KHÔNG CHẠY ĐƯỢC, XIN GIÚP ĐỠ HOẶC CÓ CÁCH NÀO ĐÁNH SỐ TT ĐƠN GIẢN HƠN KHÔNG:

Sub INSERT_STT()

Sheets(1).Select
Sheets(Array((1), (2), (3), (4), (5), (6), _
(7), (8), (9), (10), (11), (12), (13), _
(14), (15), (16))).Select
Sheets(1).Activate

Range("U2").Select
ActiveCell.FormulaR1C1 = "1"
Range("U3").Select
ActiveCell.FormulaR1C1 = "2"

Range("U2:U3").Select
Selection.AutoFill Destination:=Range([U2], [U2].End(xlDown))

End Sub
 
Selection.AutoFill Destination:=Range([U2], [U2].End(xlDown))

Câu lệnh này có lỗi:
1. Nếu trong cột U chưa có gì thì [U2].End(xlDown) chính là U3. Destination chính là selection. Code không chạy mà báo lỗi.
2. Nếu trong cột U đã có cái gì đó, thì code chạy, nhưng chỉ chạy đến ô chứa dữ liệu cuối cùng trước ô trống đầu tiên. Phía dưới còn gì nữa không được đánh. D(ó là đặc điểm của End(xlDown)


Khắc phục code này:

1. Nếu cột U trống, hãy lấy dòng cuối từ cột khác.
2. Lấy dòng cuối bằng End(xlUp), không dùng End(xlDown)

PHP:
Sub INSERT_STT()

Sheets(1).Select
Sheets(Array((1), (2), (3), (4), (5), (6), _
(7), (8), (9), (10), (11), (12), (13), _
(14), (15), (16))).Select
  Sheets(1).Activate

  Range("U2") = 1
  Range("U3") = 2

  Range("U2:U3").Select
  Selection.AutoFill Destination:=Range("U2:U" & [T65000].End(xlUp).Row)
End Sub

Viết code khác:

PHP:
Sub STT()
Range("U2:U" & [T65000].End(xlUp).Row) = Evaluate("=Row(R:R)")
End Sub
 
Upvote 0
Web KT
Back
Top Bottom