quoc nhat
Thành viên tiêu biểu

- Tham gia
- 8/3/12
- Bài viết
- 567
- Được thích
- 43
- Nghề nghiệp
- cán bộ ngành y tế
sớm giúp em với các anh chị ơi!
dạ thưa anh!
em đang vướng mắc ở chổ chọn dữ liệu cho listbox ở cái userform QLBH ấy. Em không biết phải thêm vào đoạn code như thế nào để listbox lấy toàn bộ dữ liệu ở Sheet 5 từ dòng số 10 đến hết dòng số 1000 được (vì nó có những dòng trống).
Vì kinh nghiệm lập trình về VBA của em kém quá nên không biết sửa ở đâu cả. Cái này em copy từ diễn đàn về anh ạ!
Private Sub nap()
Dim j, i As Long
ListBox1.Clear
i = 10
j = 0
''Do While Sheet5.Cells(i, 5) <> ""
For i = 10 To Sheet5.Cells(65000, 5).End(xlUp).Row ' 10000
If IIf(Me.CheckBox1, InStr(1, Sheet5.Cells(i, 2), TextBox1, 1) = 1, InStr(1, _
Sheet5.Cells(i, 5), TextBox1, 1) > 0) Then
ListBox1.AddItem (Sheet5.Cells(i, 2))
Me.ListBox1.List(j, 1) = Sheet5.Cells(i, 5)
Me.ListBox1.List(j, 2) = Sheet5.Cells(i, 6)
Me.ListBox1.List(j, 3) = Sheet5.Cells(i, 7)
Me.ListBox1.List(j, 4) = Sheet5.Cells(i, 8)
Me.ListBox1.List(j, 5) = Sheet5.Cells(i, 11)
j = j + 1
End If
Next i
''i = i + 1
'''Loop
End Sub
Sửa lại cách nạp listbox từ array. Hình như bạn làm chưa xong.dạ thưa anh!
em đang vướng mắc ở chổ chọn dữ liệu cho listbox ở cái userform QLBH ấy. Em không biết phải thêm vào đoạn code như thế nào để listbox lấy toàn bộ dữ liệu ở Sheet 5 từ dòng số 10 đến hết dòng số 1000 được (vì nó có những dòng trống).
Vì kinh nghiệm lập trình về VBA của em kém quá nên không biết sửa ở đâu cả. Cái này em copy từ diễn đàn về anh ạ!
Trước tiên cảm ơn anh đã chịu khó giúp em.
Anh thông cảm đây là file mà người ta đã quy định sẵn rồi nên em không thể sắp xếp lại được anh ạ!em cũng muốn thế lắm
Hì. Nếu có thể được bạn giúp mình được không. Mà mình quên giải thích với bạn là ở sheet 5 tại sao lại có nhũng dòng trống đó: là vì ở sheet 5 sẽ cập nhật từng đơn phiếu ở sheet1 " phiêuxuat in" mỗi khi mình bấm lệnh in phiếu.Giá như mình làm được code tự động chèn dòng thì sẽ không có việc mình để những dòng trống đó nhiều như vậy nên mong mong người nhưng đừng nhìn vào file của mình mà thấy buồn cười nhé! Cảm ơnhiii- Nếu ng ta quy định thế thì mình vẫn có thể chuyển nó về cách của mình - trước khi đi vào CODING
dĩ nhiên đó là việc của bạn, lựa chọn của bạn, song bạn vẫn bố trí thế thì hẳn nào mọi người ngại giúp
Sao cái của bạn gửi lên cho mình, mình kiểm tra( ví dụ như em đánh tên hay là mã số BHYT vào thì nó cứ nhảy ra cái gì ấy) Bạn kiểm tra lại giúp mình với!Sửa lại cách nạp listbox từ array. Hình như bạn làm chưa xong.
Và cái dòng cuối cột 5 sheet5 khó lấy quá. Nên xem lại data <> report
Hì. Nếu có thể được bạn giúp mình được không. Mà mình quên giải thích với bạn là ở sheet 5 tại sao lại có nhũng dòng trống đó: là vì ở sheet 5 sẽ cập nhật từng đơn phiếu ở sheet1 " phiêuxuat in" mỗi khi mình bấm lệnh in phiếu.Giá như mình làm được code tự động chèn dòng thì sẽ không có việc mình để những dòng trống đó nhiều như vậy nên mong mong người nhưng đừng nhìn vào file của mình mà thấy buồn cười nhé! Cảm ơn
Mà cho em hỏi lại với sao khi em load cái code khi nảy anh sửa giúp em thì nó không thể kiểm tra được vậy. Em giải thích lại cái đoạn code anh giúp em dùng để kiểm tra: khi em bấm vào TXT phía trên( có kèm theo checkbox) ví dụ 1 mã thẻ như HN4450500500678 thì lập tức ở listbox sẽ hiện ra số lần khám của người có mã thẻ BHYt đó.
em xin lỗi anh, em nhầm với bài của thunghi. Anh ơi cho em hỏi lúc anh sửa code giúp em anh có nói là nên xoá đoạn code so sánh gì đó, anh hướng dẫn em nên xoá đoạn nào được không? Cái này em mù tịt luôn, và có cách nào khi load Form lên đỡ nặng không anh?bạn nói CODE nào của ai ah?
nếu là code ở bài #7 thì lưu ý tôi không sửa gì code của bạn, ngoài thay DoWhile thành FOR và load hết các dòng dữ liệu như bạn muốn (hết) -- còn các cái khác trong sub NAP tôi để nguyên,
nên nếu là dùng code bài 7 đó THẤY SAI như bạn nói, thì bạn phải check lại thuật toán của mình
em xin lỗi anh, em nhầm với bài của thunghi. Anh ơi cho em hỏi lúc anh sửa code giúp em anh có nói là nên xoá đoạn code so sánh gì đó, anh hướng dẫn em nên xoá đoạn nào được không? Cái này em mù tịt luôn, và có cách nào khi load Form lên đỡ nặng không anh?
Private Sub nap()
Dim j, i As Long
ListBox1.Clear
i = 10
j = 0
[B][COLOR="#0000FF"]''Do While Sheet5.Cells(i, 5) <> ""[/COLOR][/B]
For i = 10 To Sheet5.Cells(65000, 5).End(xlUp).Row [COLOR="#0000FF"][B]' 10000[/B][/COLOR]
If IIf(Me.CheckBox1, InStr(1, Sheet5.Cells(i, 2), TextBox1, 1) = 1, InStr(1, _
Sheet5.Cells(i, 5), TextBox1, 1) > 0) Then
ListBox1.AddItem (Sheet5.Cells(i, 2))
Me.ListBox1.List(j, 1) = Sheet5.Cells(i, 5)
Me.ListBox1.List(j, 2) = Sheet5.Cells(i, 6)
Me.ListBox1.List(j, 3) = Sheet5.Cells(i, 7)
Me.ListBox1.List(j, 4) = Sheet5.Cells(i, 8)
Me.ListBox1.List(j, 5) = Sheet5.Cells(i, 11)
j = j + 1
End If
Next i
[B][COLOR="#0000FF"]''i = i + 1
'''Loop[/COLOR][/B]
End Sub
Cảm ơn anh vì đã nhiệt tình giúp đỡ em.Không xoá cũng không sao vì nó đã được đưa vào dấu nháy trên '
ý tôi là xoá những ghi chú lệnh DoWhile để lại -màu xanh sau
Mã:Private Sub nap() Dim j, i As Long ListBox1.Clear i = 10 j = 0 [B][COLOR=#0000FF]''Do While Sheet5.Cells(i, 5) <> ""[/COLOR][/B] For i = 10 To Sheet5.Cells(65000, 5).End(xlUp).Row [COLOR=#0000FF][B]' 10000[/B][/COLOR] If IIf(Me.CheckBox1, InStr(1, Sheet5.Cells(i, 2), TextBox1, 1) = 1, InStr(1, _ Sheet5.Cells(i, 5), TextBox1, 1) > 0) Then ListBox1.AddItem (Sheet5.Cells(i, 2)) Me.ListBox1.List(j, 1) = Sheet5.Cells(i, 5) Me.ListBox1.List(j, 2) = Sheet5.Cells(i, 6) Me.ListBox1.List(j, 3) = Sheet5.Cells(i, 7) Me.ListBox1.List(j, 4) = Sheet5.Cells(i, 8) Me.ListBox1.List(j, 5) = Sheet5.Cells(i, 11) j = j + 1 End If Next i [B][COLOR=#0000FF]''i = i + 1 '''Loop[/COLOR][/B] End Sub
evà có cách nào khi load Form lên đỡ nặng không anh?
Dạ! đúng là form QLBH đó anh. Nếu có thể anh giúp em với được không anh? Chứ trình độ của em chưa đủ để viết Array anh ạLoad form nào?
nếu là form QLBH thì bạn nên dùng Array để load -dữ liệu gốc vào, rồi lọc --> rồi mới gán vào listbox, như thế sẽ nhẹ hơn.
Lần tiếp lọc (fillter) thì không cần phải load lại từ sheet5 nữa, mà chỉ cần sử dụng Array gốc thôi