sonthanhnguyen0601
Thành viên mới

- Tham gia
- 4/3/07
- Bài viết
- 1
- Được thích
- 0
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
Ngoài cách của anh Sealand ra, cách nhanh nhất là gán rowsource cho ListBox, thì không cần phải dùng thủ tục nào cả, chỉ cần định dạng sẳn trong sheet như thế nào, thì listbox sẽ ra như thế đó.
Bạn làm như thế nào mà nói là giống tôi vậy? Vừa làm List, vừa add RowSource?Bạn Nghĩa ơi, mình làm theo cách của bạn nhưng sao bị báo lỗi là Run-time error '70': Permission denied nhỉ.
Bạn giúp mình với
Tôi nghi lắm mà! Khi bạn dùng RowSource thì làm ơn xóa cái này đi cái!Bạn Nghĩa xem file đính kèm giúp mình nhé. Nhân tiện mình muốn nhờ bạn xem có cách gì để trên listbox mình có thể định dạng cột số liệu thì canh phải còn cột chỉ tiêu thì canh trái được không. Và nếu mình muốn một số dòng được tô đậm thì có thể làm được không. Mình cảm ơn bạn nhé
Có 1 cách làm giống như vậy đó là dùng mẹo để hiển thị, mẹo đó như thế này:
-Ta canh trái cho Listbox, cột nào cần canh phải thì ta bù cho nó khoảng trống bên phải về bên trái. Ví dụ cho dễ hiểu, cột có độ rộng 10 ký tự, nếu dữ liệu có 2 ký tự thì ta chèn cho nó 8 khoảng trống về bên trái.
-Nếu chỉ chèn như vậy vẫn chưa được vì các ký tự có độ rông khác nhau. Nhưng có font chữ Courier là có độ rộng bằng nhau. Ta set font cho Listbox là font này
Thử xem ví dụ nha
Sao không chỉnh hẳn trong ListBox khi thiết kế luôn đi, chỉnh trong code làm chi bạn?Cho em hỏi, em muốn chèn vô 1 cột nữa (cột thứ 3).
Trên listbox, em chỉnh độ rộng ColumnWidths các cột không được. Nhờ anh giúp đỡ
[GPECODE=vba]Private Sub UserForm_Initialize()
Dim Tm, i, Cw
Cw = Replace(Split(Me.ListBox1.ColumnWidths, ";")(2), "pt", "") * 1
Tm = Sheet1.[A227]
For i = 1 To UBound(Tm, 1)
Tm(i, 2) = Trim(Tm(i, 2))
Tm(i, 4) = Right(String(100, " ") & Format(Tm(i, 4), "#,##0"), Cw)
Next
Me.ListBox1.List() = Tm
End Sub
[/GPECODE]
Em gởi file lên. Nhờ anh xemBạn đưa file ví dụ lên đi, giải thích khó hơn làm ví dụ
Em gởi file lên. Nhờ anh xem
Trong file khi load form lên, không hiện thị được cột số tiền
https://drive.google.com/file/d/0Bz23-2tBuYb1MmhQYjh1MzZsZEE/view?usp=sharing
Em đã chỉnh cột 3 lên 300pt,Bạn kiểm tra code trong lúc loát form đó.
Cột 4 của mảng nạp vào list...bạn nối định dạng kiểu gì vậy??? nối gì mà right ở đây? chỉ cần định dạng cột này có ngăn cách phần ngàn là được rồi...
Chỉnh độ rộng cột 3 của listbox lên 300pt đi...
Bạn kiểm tra code trong lúc loát form đó.
Cột 4 của mảng nạp vào list...bạn nối định dạng kiểu gì vậy??? nối gì mà right ở đây? chỉ cần định dạng cột này có ngăn cách phần ngàn là được rồi...
Chỉnh độ rộng cột 3 của listbox lên 300pt đi...
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