Tai sao Số dòng của Sheet thay đổi khi load lên ListBox

Liên hệ QC

manhhung12

Thành viên thường trực
Tham gia
20/3/08
Bài viết
232
Được thích
88
Tôi có tao 1 form để tìm/lọc data từ 1 sheet sau đó add vào 1 sheet khác nhưng không hiểu sao:
1/Số dòng trên Sheet thứ 2 này bi thay đổi kỳ lạ.
Khi tôi chọn 1 bản ghi (giả sử dòng thứ 4) trên LB1 sau đó nhấn Add để nó lưu vào Sheet2 và đồng thời load lên LB2. Nhưng kg hiểu sao khi lưu vào Sheet2 thì nó không lưu kế tiếp liên tục nhau theo mỗi lần nhấn Add mà nó lại lưu vào sh2 theo thứ tự dòng trên LB1(ListBox 1) các bạn kiểm tra giúp tôi trong code lỗi ở đâu (xem hình gửi kèm).
2/Tôi có tạo 1 nút ADD (command-button) nhưng không có Icon( dạng >> hay V (2 chữ V chồng nhau) để gắn vào nút này nên sử dụng chữ V (trông xấu quá). Bạn nào có bộ Icon đẹp cho tôi 1 vài cái với.
Xin cảm ơn trước
 

File đính kèm

Tôi có tao 1 form để tìm/lọc data từ 1 sheet sau đó add vào 1 sheet khác nhưng không hiểu sao:
1/Số dòng trên Sheet thứ 2 này bi thay đổi kỳ lạ.
Khi tôi chọn 1 bản ghi (giả sử dòng thứ 4) trên LB1 sau đó nhấn Add để nó lưu vào Sheet2 và đồng thời load lên LB2. Nhưng kg hiểu sao khi lưu vào Sheet2 thì nó không lưu kế tiếp liên tục nhau theo mỗi lần nhấn Add mà nó lại lưu vào sh2 theo thứ tự dòng trên LB1(ListBox 1) các bạn kiểm tra giúp tôi trong code lỗi ở đâu (xem hình gửi kèm).
2/Tôi có tạo 1 nút ADD (command-button) nhưng không có Icon( dạng >> hay V (2 chữ V chồng nhau) để gắn vào nút này nên sử dụng chữ V (trông xấu quá). Bạn nào có bộ Icon đẹp cho tôi 1 vài cái với.
Xin cảm ơn trước

Để tìm dòng cuối cùng của Sheet2, bạn viết:
Mã:
rc02 = Sheet2.Range("E:E").End(xlUp).Rows
Chỉnh lại:
Mã:
rc02 = Sheet2.Range("E65536").End(xlUp).Row
Thủ tục cho command cmAdd của bạn:
Mã:
Private Sub cmAdd_Click()
Dim nSh As Integer, i As Long
[COLOR=Red]rc02 = Sheet2.Range("E:E").End(xlUp).Rows[/COLOR]
With Me
  For i = 0 To .lbDs.ListCount - 1
    If .lbDs.Selected(i) = True Then
      Sheet2.Cells(rc02, 1) = .lbDs.List(i, 0)
      Sheet2.Cells(rc02, 2) = .lbDs.List(i, 1)
      Sheet2.Cells(rc02, 3) = .lbDs.List(i, 2)
      Sheet2.Cells(rc02, 4) = .lbDs.List(i, 3)
      Sheet2.Cells(rc02, 5) = .lbDs.List(i, 4)
      Sheet2.Cells(rc02, 6) = .lbDs.List(i, 5)
      .lbDs.Selected(i) = False
    End If
    [COLOR=Red]rc02 = rc02 + 1[/COLOR]
  Next
End With
UpdateDs1_List
End Sub
Cần chỉnh lại:
1. Bạn chỉnh rc02 như trên.
2. rc02 = rc02 + 1 đặt vị trí này là nguyên nhân tạo khoảng trống trên Sheet2. Vì .lbDs.Selected(i) = True hay False thì nó đều tăng rc02. Bạn phải chuyển nó vào If ... End If.
Mã:
Private Sub cmAdd_Click()
Dim nSh As Integer, i As Long
[COLOR=Red]rc02 = Sheet2.Range("E65536").End(xlUp).Row[/COLOR]
With Me
  For i = 0 To .lbDs.ListCount - 1
    If .lbDs.Selected(i) = True Then
      Sheet2.Cells(rc02, 1) = .lbDs.List(i, 0)
      Sheet2.Cells(rc02, 2) = .lbDs.List(i, 1)
      Sheet2.Cells(rc02, 3) = .lbDs.List(i, 2)
      Sheet2.Cells(rc02, 4) = .lbDs.List(i, 3)
      Sheet2.Cells(rc02, 5) = .lbDs.List(i, 4)
      Sheet2.Cells(rc02, 6) = .lbDs.List(i, 5)
      .lbDs.Selected(i) = False
      [COLOR=Red]rc02 = rc02 + 1
[/COLOR]    End If
  Next
End With
UpdateDs1_List
End Sub
 
Upvote 0
UpdateDs1_List
End Sub[/code]Cần chỉnh lại:
1. Bạn chỉnh rc02 như trên.
2. rc02 = rc02 + 1 đặt vị trí này là nguyên nhân tạo khoảng trống trên Sheet2. Vì .lbDs.Selected(i) = True hay False thì nó đều tăng rc02. Bạn phải chuyển nó vào If ... End If.
Mã:
Private Sub cmAdd_Click()
Dim nSh As Integer, i As Long
[COLOR=Red]rc02 = Sheet2.Range("E65536").End(xlUp).Row[/COLOR]
With Me
  For i = 0 To .lbDs.ListCount - 1
    If .lbDs.Selected(i) = True Then
      Sheet2.Cells(rc02, 1) = .lbDs.List(i, 0)
      Sheet2.Cells(rc02, 2) = .lbDs.List(i, 1)
      Sheet2.Cells(rc02, 3) = .lbDs.List(i, 2)
      Sheet2.Cells(rc02, 4) = .lbDs.List(i, 3)
      Sheet2.Cells(rc02, 5) = .lbDs.List(i, 4)
      Sheet2.Cells(rc02, 6) = .lbDs.List(i, 5)
      .lbDs.Selected(i) = False
      [COLOR=Red]rc02 = rc02 + 1
[/COLOR]    End If
  Next
End With
UpdateDs1_List
End Sub
Không được bạn à. Nếu để trong thì xảy ra hiện tượng:
Trong 1 phiên làm việc tôi di chuyển đến dòng khác trên LB1 và tiếp tục add nhưng trên sheet2 con trỏ không chịu di chuyển mà chỉ có duy nhất 1 bản ghi là bản ghi của lần add sau cùng.
Các bạn test trên fr cho mọi trường hợp giúp tôi tìm hướng khắc phục.
 
Upvote 0
A. Tôi đã làm được rồi. Không còn ngắt quãng và load được đủ các dòng từ sheet2 rồi
Bây giờ lại có vấn đề như sau:
Trên Sheet1 có 1 hay nhiều dòng trống (đây có thể là dòng cộng nhóm nhưng khi đưa lên Listbox thì kg cần vậy nên tôi có dùng 1 câu lệnh IF đẻ kiểm tra trước khi add iterm nhưng nó chỉ load được những dòng trước dòng trống thứ nhất. Bây giờ tôi kg dùng câu lệnh IF thì nó load được tất cả các dòng trên SHEET1 nhưng nhìn kg ưng ý bởi các dòng trống.
các bạn có biết tại sao kg? Giúp tôi với.
 
Upvote 0
A. Tôi đã làm được rồi. Không còn ngắt quãng và load được đủ các dòng từ sheet2 rồi
Bây giờ lại có vấn đề như sau:
Trên Sheet1 có 1 hay nhiều dòng trống (đây có thể là dòng cộng nhóm nhưng khi đưa lên Listbox thì kg cần vậy nên tôi có dùng 1 câu lệnh IF đẻ kiểm tra trước khi add iterm nhưng nó chỉ load được những dòng trước dòng trống thứ nhất. Bây giờ tôi kg dùng câu lệnh IF thì nó load được tất cả các dòng trên SHEET1 nhưng nhìn kg ưng ý bởi các dòng trống.
các bạn có biết tại sao kg? Giúp tôi với.
Có vẻ như mọi người kg quan tâm lắm???
Hỏi thêm mọi người rằng trên listbox có thể kéo thu hẹp hay mở rộng cột không vậy???
 
Upvote 0
Web KT

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

Back
Top Bottom