sonthanhnguyen0601
Thành viên mới
- Tham gia
- 4/3/07
- Bài viết
- 1
- Được thích
- 0
Với mình thì thà lấy 1 khoảng trống nào đó trên trang tính làm nguồn cho ListBox còn hơn mấy thủ thuật cao siêu này!
Mấy thủ thuật này mình cho là chỉ mang tính học thuật; Chả thực tế là mấy!
Ý của em là, khi thiết lập độ rộng của các cột trong ListBox, thì chỉnh hẳn ở form khi thiết kế luôn, khỏi mất công chạy code chi cho mệt.Nghĩa có giải pháp sử lý khi thiết kế thì cho anh em tham khảo với.
Mình thì mới bắt đầu tự tập tành VBA nhưng mình có ý này không biết có được không (chưa test) mong anh em chỉ giáo. VD mình muốn tạo listbox 5 cột thì tại sao mình không tạo 5 listbox cạnh nhau (dữ liệu lấy cùng 01 bảng trên sheet nhưng chia ra 5 phần là 05 cột). Khi đó list hiển thị "có lẽ" sẽ khớp dòng với nhau ở 5 listbox.Lại thêm cả bác Chanh có ý kiến thế này. Em nói thật, đây là thủ thuật em học lỏm được của cao thủ VB code bên VB 4rum đấy. Dù nó mang tính gì đi chăng nữa thì nó cũng giúp cho người dùng như dân kế toán bọn em khỏi nhầm lẫn khi đọc số trên Listbox. Mà nó hữu dụng thì em dùng và chia sẻ cùng anh em thôi.
Nói thật, em cũng mong ai sử lý được cách canh dữ liệu trên Listbox tùy ý từng cột cho em học hỏi với.
Option Explicit
Private Sub UserForm_Initialize()
Dim Tm, i
Tm = Sheet1.[A2:C27]
For i = 1 To UBound(Tm, 1)
Tm(i, 3) = Format(Tm(i, 3), "#,##0")
Next
Me.ListBox1.List() = Tm
End Sub
Bạn thử như sau:
Lưu ý việc canh phải trái trong Listbox tất cả các cột chung nhau
Cho mình hỏi xíu ạ !!
Trong code của bạn chỉ định dạng được cột 3, mình muốn định dạng thêm cột 4,5,6 thì mình sửa code như thế nào ạ !!!
Private Sub UserForm_Initialize()
Dim Tm, i, c As Long
Tm = Sheet1.[A2:F27]
For i = 1 To UBound(Tm, 1)
For c = 3 To 6
Tm(i, c) = Format(Tm(i, c), "#,##0")
Next c
Next i
Me.ListBox1.List() = Tm
End Sub