keke355992
Thành viên thường trực




- Tham gia
- 19/1/08
- Bài viết
- 310
- Được thích
- 20
- Nghề nghiệp
- KẾ TOÁN THUẾ, TƯ VẪN THUẾ
Bạn đang dùng list thì không thể có định dạng được đâu... (ListBox1.List)
=> Cho nên chuyển qua Source như bạn #2 đã nói...thì sẽ có định dạng như trên sheet
Còn nếu vẫn muốn cố tình sử dụng list thì bạn bắt buộc phải code cái đoạn mảng cho List, định dạng riêng cho 3 cột số lượng đó có định dạng phân cách phần ngàn rồi nạp vao mảng. Sau đó nạp mảng này vào List thì mới có định dạng mong muốn được...
E cũng thử dùng format rùi, nhưng mà k bít dùng vào chỗ nào nó mới hiện thị đc a ạBạn dùng hàm format() là được mà. Duyệt qua từng phần tử rồi gán lại giá trị sau khi định dạng.
E cũng thử dùng format rùi, nhưng mà k bít dùng vào chỗ nào nó mới hiện thị đc a ạ
vâng. Khi nào bác rảnh giúp e với ạ. E cảm ơnTiếc là tôi đang comment trên điện thoại. Lúc nào về mở máy tính mới giúp bạn được.
Cách khác. Kiếm đoạn code này thêm 1 chút là được:vâng. Khi nào bác rảnh giúp e với ạ. E cảm ơn![]()
Private Sub UserForm_Initialize()
Dim i
Application.ScreenUpdating = False
With Sheets("KHO1")
pri_ArrData = .Range(.Range("B5"), .Range("J" & Rows.count).End(xlUp)).Value
End With
OptionButton1.Value = True
With ListBox1
.List = pri_ArrData
For i = 0 To .ListCount - 1
.List(i, 7) = (Format(Val(.List(i, 7)), "#,##0"))
.List(i, 8) = (Format(Val(.List(i, 8)), "#,##0"))
Next
End With
End Sub
Bạn sửa lại sub: Private Sub UserForm_Initialize() như sau:
Mã:Private Sub UserForm_Initialize() Application.ScreenUpdating = False With Sheets("KHO1") Data = .Range(.Range("B5"), .Range("J" & Rows.count).End(xlUp)) 'pri_ArrData = .Range(.Range("B5"), .Range("J" & Rows.count).End(xlUp)) ReDim pri_ArrData(1 To UBound(Data), 1 To UBound(Data, 2)) For I = 1 To UBound(Data) If Len(Data(I, 1)) Then K = K + 1 pri_ArrData(K, 1) = K For J = 2 To 6 pri_ArrData(K, J) = Data(I, J) Next J For J = 7 To 9 pri_ArrData(K, J) = Format(Data(I, J), "#,##0") Next J End If Next I End With OptionButton1.Value = True ListBox1.List = pri_ArrData End Sub
Cách khác. Kiếm đoạn code này thêm 1 chút là được:
Mã:Private Sub UserForm_Initialize() Dim i Application.ScreenUpdating = False With Sheets("KHO1") pri_ArrData = .Range(.Range("B5"), .Range("J" & Rows.count).End(xlUp)).Value End With OptionButton1.Value = True With ListBox1 .List = pri_ArrData For i = 0 To .ListCount - 1 .List(i, 7) = (Format(Val(.List(i, 7)), "#,##0")) .List(i, 8) = (Format(Val(.List(i, 8)), "#,##0")) Next End With End Sub
Cảm ơn 2 bác nhìu lắm ạ. Vấn đề của e đã đc giải quyết ! E có 1 chút thắc mắc là k bít sử dụng vòng lặp vậy có làm chậm đi nhìu tốc độ của listbox ko ạ .
dữ liệu có lèo tèo vài dòng thế thì chọn sao cũng được mà , không ảnh hưởng
Dữ liệu lớn thì cách của anh Giangleloi tỏ ra "yếu đuối" hơn của anh Hpkhuong 1 chút
vì anh Giangleloi sửa dữ liệu trên Listbox ngay trong vòng lặp nhằm làm cho code ngắn gọn nhưng phải trả giá bằng việc máy sẽ chạy "hao xăng" hơn .
Mình là fan hâm mộ của 2 anh Hpkhuong và Giangleloi , được nhìn thấy 2 anh í viết code thích thật . hi hi hi![]()