Llựa chọn nhiều dòng trong listbox và copy vào sheet (2 người xem)

  • Thread starter Thread starter phucto
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

phucto

Thành viên mới
Tham gia
14/10/07
Bài viết
7
Được thích
1
Các bạn có thể giúp mình về việc lựa chọn nhiều dòng trong listbox và copy vào sheets báo cáo như vấn đề mình nêu trong file đính kèm được không?

Xin chân thành cảm ơn!
 

File đính kèm

Bạn sửa lại đoạn code dưới đây cho phù hợp.
Mã:
Private Sub ListBox1_Change()
    Dim i&, dongBaoCao&
    dongBaoCao = 11 'rawmaterial
    With ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Sheet14.Cells(dongBaoCao, 2) = .List(i, 1)
                Sheet14.Cells(dongBaoCao, 3) = .List(i, 2)
                '...
                dongBaoCao = dongBaoCao + 1
            End If
        Next
    End With
End Sub
Một vài chú ý:
- Xóa dữ liệu cũ trong báo cáo trước khi điền dữ liệu mới.
- Đề phòng số dữ liệu được chọn vượt quá số dòng dành sẵn trong báo cáo. Nên dành nhiều hơn mức tối đa, tự động Hide các dòng trống.
- Đoạn code này để trong sự kiện _Change nên cứ mỗi lần chọn đều lặp lại (hơi vô lý). Bạn có thể chuyển sang sự kiện _KeyDown với KeyCode = 13 thì chỉ khi bạn nhấn phím Enter nó mới chạy...
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn jack nt rất nhiều và chúc năm mới hạnh phúc, thành công.
Phiền bạn hướng dẫn thêm cho mình một chút vì mình mới học VBA

1) Thủ tục để tự động mở rộng thêm các dòng mới trong file báo cáo và xóa các dòng trống trong báo cáo khi thừ. Vì mình muốn tất cả các sheets sẽ bị ẩn và người sử dụng chỉ làm trên userform thôi

2) Vì mình có nhiều listbox với heading khác nhau. Nếu mình muốn sử dụng trong một sheet14 thì mình muốn dòng tiêu đề sẽ thay đổi theo Listbox có được không?
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn jack nt rất nhiều và chúc năm mới hạnh phúc, thành công.
Phiền bạn hướng dẫn thêm cho mình một chút vì mình mới học VBA

1) Thủ tục để tự động mở rộng thêm các dòng mới trong file báo cáo và xóa các dòng trống trong báo cáo khi thừ. Vì mình muốn tất cả các sheets sẽ bị ẩn và người sử dụng chỉ làm trên userform thôi

2) Vì mình có nhiều listbox với heading khác nhau. Nếu mình muốn sử dụng trong một sheet14 thì mình muốndòng tiêu đề sẽ thay đổi theo Listbox có được không?

1/ Tui thấy các sheets của bạn là biểu mẫu báo cáo, sao lại ẩn nhỉ.
Bạn muốn thêm row/range thì dùng .Insert Shift:=xlDown còn muốn xóa thì dùng .Delete Shift:=xlUp.
2/ tui không hiểu dòng tiêu đề sẽ thay đổi là sao? . “dòng tiêu đề” ở đây được hiểu là dòng tiều đề trong báo cáo hay Caption của Listbox?
3/ vì bạn nói bạn là lính mới nên mạn phép góp ý mấy điều sau:
- Các đối tượng cần đặt tên cho dễ nhận biết: chẳng hạn bạn nói đến sheet14 thì không biết nó là sheet nào. Đặt là “SheetRawMaterials” sẽ dễ hình dung hơn.
- Nên khai báo một số địa chỉ, chẳng hạn:
Mã:
Const  R_FIRST_RAW_MATERIALS  = 11
Thay code
dongBaoCao = 11
Bằng code
dongBaoCao = R_FIRST_RAW_MATERIALS
Tại sao phải làm vậy?
Vì sau này có khi bạn thay đổi biểu mẫu, thêm/bớt dòng, thì bạn chỉ cần sửa mỗi cái khai báo đó thôi, không cần sửa code...
 
Upvote 0

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

Back
Top Bottom