tìm và đặt giá trị vào dòng cuối cùng

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

giaosy

Thành viên thường trực
Tham gia
6/12/06
Bài viết
205
Được thích
144
các bác giải thích hộ em xem tại sao excel cứ báo lỗi ở dòng chữ đỏ với:

Sub update_dulieu()
Dim dongcuoi
Dim i As Integer
dongcuoi = Range("B13").End(xlDown).Row + 1
Range("B" & dongcuoi).Value = 1
End Sub

ý em là muốn nhập dữ liệu theo tiến trình, khi nhập, excel sẽ tự dò tìm và đưa giá trị vào dòng cuối cùng (dưới dòng đã có dữ liệu) trong bảng
cảm ơn các bác nhiều
 
Tôi không hiểu dữ liệu bạn bố trí như thế nào, nhưng bạn thử thay bằng công thức thế này xem sao
PHP:
Sheets("Sheet1").Select
dongcuoi = Range("B65500").End(xlUp).Row+1
Range("B" & dongcuoi).Value=1
 
Upvote 0
Bạn dùng excel 2003 thì nó chỉ có 65536 dòng thôi

dongcuoi = Range("B13").End(xlDown).Row + 1 = 65537
Range("B" & dongcuoi).Value = 1 => B65537

=> Báo lỗi


Làm gì có dòng B65537 nên nó báo lỗi.

bạn dùng code dưới xem.
Mã:
Range("B65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Value = 1
 
Lần chỉnh sửa cuối:
Upvote 0
đây là nguyên cái bảng em đang làm (cùng với code) nhưng không được, mong các bác xem và chỉ thêm cho em.
em muốn tìm dòng cuối cùng có chứa dữ liệu (chứ không phải dòng cuối cùng của sheet) để nhập giá trị vào dòng dưới.
Cảm ơn các bác
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Đoạn code trên sai một chi tiết nhỏ thôi.
dong_truoc = Range("G5").End(xlDown).Row
chỉnh lại thành:
dong_truoc = Range("G4").End(xlDown).Row
là hết lỗi.
----------------------------------------------------
Bổ sung: Xin lỗi bạn, mình nhầm. Ý kiến của bác anhphuong là đúng. Bạn xem lại cấu trúc của If....Then Else...End If...
 
Lần chỉnh sửa cuối:
Upvote 0
Mình rất hay chép các ví dụ, bài trên diễn đàn nhưng nay mình không biết chép của ai và chỗ nào. Mong tác giả thông cảm và tôi post lại giúp bạn nhé
 

File đính kèm

Upvote 0
em muốn tìm dòng cuối cùng có chứa dữ liệu, để nhập giá trị vào dòng dưới.
Cảm ơn các bác
Sub của bạn nên vầy:
PHP:
Sub copy_giaosy1()
    Dim DongCuoi As Long
       
2    DongCuoi = [A65432].End(xlUp).Row + 1
    With Range("A" & DongCuoi)
4      .Value = .Offset(-1) + 1
    End With
End Sub
1*/ Bạn chỉ nên xài 1 biến thôi; Không chỉ là tiết kiệm tài nguyên không thôi, mà 2 biến của bạn cách nhau chỉ có 1 đơn vị. Mà thường vậy là chúng có cùng kiểu biến!
Hơn nữa bạn nên tạo thói quen khai báo biến 1 cách mà người ta thường gọi là tường minh;
2*/ Tại sao tôi khuyên bạn nên xài (xlUp) mà rtrách (xlDown); Vì có khi xlDown chưa phải là dòng gần cuối, một khi trong cột có vài chỗ nào đó do vô tình hay hữu ý không chưa dữ liệu.
3*/ Xin giới thiệu & khuyến cáo bạn nên xài With. . . End With
Vì nó không chỉ làm cho ta dễ nhìn, kiểm soát các dòng lệnh, mà vì nó nhanh hơn đời thường
Câu lệnh gần cuối của bạn :
Mã:
Range("A" & dong_cuoi).Value = Range("A" & dong_truoc).Value + 1
giống như:
Từ phòng khách vô nhà bếp lấy cái muỗng;
Trở ra phòng khách, vô nhà bếp lấy cái thìa; Thìa và muỗng cùng quậy vô ly cá phê
Nếu dùng With . . . End With sẽ tránh được tình trạng này
Giống như kết cấu này làm cho ta trách được những hành động lặp lại ý mà; nôm na là thế & chúc bạn vui!
 
Upvote 0
Web KT

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

Back
Top Bottom