Set chiều rộng Động theo tỉ lệ cho trước trên từng Cột của ListBox (1 người xem)

  • Thread starter Thread starter hcm2015
  • Ngày gửi Ngày gửi
Liên hệ QC

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

hcm2015

Thành viên mới
Tham gia
17/12/15
Bài viết
11
Được thích
0
Chào các bạn GPE!

Tôi có vấn đề với ListBox thế này (trên Sheet chứ không phải xài Listbox cho UserForm nha), nhờ các bạn giải giúp hộ tôi.

Tôi dùng 1 cái ListBox để hiển thị dữ liệu vào đó. Và độ Rộng của listbox = chính độ rộng của Cột trên sheet mà có Cell đang active. (Ví dụ độ rộng của cột là 380 pt hiện tại)
Và Listbox của tôi có 5 cột....Tôi muốn là .ColumnWidths của từng côt trong 5 cột này được set với số Pt động theo tỉ lệ hiện có (lấy độ rộng của Listbox chia cho tỷ lệ hiện có mà tôi đã giả định)

Ví dụ tôi set như sau: .ColumnWidths = "20;150;70;60;80" => tổng độ rộng giả định = 380 pt (gần tương đương với độ rộng của cột đang active, vì cột mình dùng chuột kéo ra ,kéo lại nên độ rộng sẽ có số lẻ.) Tôi giả định mình set trong .ColumnsWidths không có số lẻ

Với số liệu set ở trên thì tôi có tỉ lệ sau: 0.05; 0.39; 0.18; 0.16; 0.22 (tôi làm tròn 2 số lẻ): Lấy tỉ lệ này làm chuẩn (tổng của chúng coi như là 1 = 100%)

Giờ tôi Kéo rộng cột đang đang active ra, hoặc thu hẹp lại. Tiến hành chạy Code bên dưới. Tôi muốn cho dòng màu đỏ .ColumnWidths = "20;150;70;60;80" mình có thể set các kích thước động theo tỷ lệ bên trên. Mục đích để từng cột có trong listbox nó tự dãn theo độ rộng của nó (gần bằng)...Vì thực tế tôi xài sự kiện cho code này...tại cột mong muốn, thường hay kéo ra, kéo vào cái cột ấy.

Tôi loay hoay hoài mà chưa biết set như thế nào cho cái ColumnWidths = "20;150;70;60;80" này theo tỉ lệ động

Độ rộng của ListBox chính là dòng này .Width = ActiveCell.Offset(1).Width
(Lấy dòng này chia lại cho tỷ lên trên)


Xin trân trọng cảm ơn các bạn!

Mã:
Sub Test_ListBox2()
With ActiveSheet.ListBox2
    .Left = ActiveCell.Offset(1).Left
    .Top = ActiveCell.Offset(1).Top
    .Height = 200
    .Width = ActiveCell.Offset(1).Width
    .ColumnCount = 5
[COLOR=#ff0000][B]    .ColumnWidths = "20;150;70;60;80"[/B][/COLOR]
    .ListFillRange = "=Sheet2!A2:E11"
End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
có tỉ lệ sẵn rồi thì ráp vào chuỗi thôi mà
ví dụ có 2 cột tỉ lệ 0.4 ; 0.6 thì ráp chuỗi
.columnwidths = 0.4*.width & ";" & 0.6* .width
 
Upvote 0
có tỉ lệ sẵn rồi thì ráp vào chuỗi thôi mà
ví dụ có 2 cột tỉ lệ 0.4 ; 0.6 thì ráp chuỗi
.columnwidths = 0.4*.width & ";" & 0.6* .width

Hóa ra là ghép lại thôi. Thế mà tôi cứ nghỉ gì xa lắm. (Thú thực thì cũng đã thử cách này rồi nhưng tôi lại viết là thêm cái dấu nháy kép ở đầu & đuôi nên không được...mới mạo mụi lập topic hỏi: """ & 0.4*.width & ";" & 0.6* & ......& """ )
Đúng là hiểu sai về chuỗi khổ thật!
Một lân nữa Cảm ơn bạn thật nhiều!
 
Upvote 0
Web KT

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

Back
Top Bottom