Listbox không hiện thị phân cách hàng nghìn (1 người xem)

Liên hệ QC

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

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Ế
E chào các AC trong diễn đàn !
E có một Form với listbox như file đính kèm. Nhưng listbost lại không hiện thị được dấu phân cách hàng nghìn. Nhờ các AC xem giúp e với ạ, e cảm ơn !
 

File đính kèm

Muons Listbox có phân cách phần nghìn thì bạn nên lấy Source từ trên sheet thì nó sẽ định dạng giống như định dạng trong sheet thôi
 
Upvote 0
Trên sheet e định dạng chuẩn #.##0 rùi ạ, mà sang listbox nó vẫn là 1000000 chứ k phải là 1.000.000 ạ. A có thể xem file giùm e với :(
 
Upvote 0
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...

A ơi cách chuyển như thế nào vậy ! Mong a giúp ạ
 
Upvote 0
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.
 
Upvote 0
vâng. Khi nào bác rảnh giúp e với ạ. E cảm ơn :)
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
 
Upvote 0
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 ạ .
 
Upvote 0
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 -\\/.-\\/.
 
Upvote 0
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 -\\/.-\\/.

Yên tâm đi bạn...Mình cũng thích anh giangleloi lắm...nghe đồn là anh í chạy cả xăng+ nhớt...(2 thì) nên không lo nóng máy đâu....nhưng mà bù lại hao xăng, lại hao thêm nhớt nữa...!!!--=0--=0--=0
 
Upvote 0
Dữ liệu của em hơn 8.000 dòng, cách của bác giangleloi hơi chậm nhưng vẫn sẽ lưu để tham khảo sau này, cách của hpkhuong nhanh hơn ^^. Thank 2 bác
 
Upvote 0
Web KT

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

Back
Top Bottom