Xác định độ rộng ô

Liên hệ QC

le tin

Học mãi
Tham gia
22/10/07
Bài viết
722
Được thích
560
Chào các bạn
Tôi muốn tự động chỉnh độ rộng cell (cột) sao cho chứa vừa đủ một số chữ (kể cả khoảng trắng) có các định dang (đậm , hoa ,thường , cỡ ,..) tùy ý . Nhờ các bạn xem giúp
Cảm ơn
 
Chào các bạn
Tôi muốn tự động chỉnh độ rộng cell (cột) sao cho chứa vừa đủ một số chữ (kể cả khoảng trắng) có các định dang (đậm , hoa ,thường , cỡ ,..) tùy ý . Nhờ các bạn xem giúp
Cảm ơn
Bạn rê chuột về đầu cột, sao cho chuột hiện 2 mũi tên và double click vào đó, dòng cũng thế
 
Cụ thể là mình muốn thế này , tính toán số chữ trong A1 có độ rộng, ví dụ cọng dồn =7
Thì trong code viết nó sẽ là
[A1].ColumnWidth = 7
Như bạn làm thì không còn tự động nữa
Sao bạn không dùng .AutoFit để thực hiện đều này.
 
Em có một đoạn code như dưới đây. Ký tự nhập vào từ textbox của UserForm được gán vào cột A. Bài toán đặt ra là muốn cho dữ liệu nhập vào tự động căn chỉnh độ rộng của ô thì làm như thế nào ạ.

Private Sub CmdOk_Click()
Sheets("Nhaplieu").Activate
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Cells(NextRow, 1) = txtname.Text
txtname.Text = ""
txtname.SetFocus
End Sub
 
Em có một đoạn code như dưới đây. Ký tự nhập vào từ textbox của UserForm được gán vào cột A. Bài toán đặt ra là muốn cho dữ liệu nhập vào tự động căn chỉnh độ rộng của ô thì làm như thế nào ạ.

Private Sub CmdOk_Click()
Sheets("Nhaplieu").Activate
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Cells(NextRow, 1) = txtname.Text
txtname.Text = ""
txtname.SetFocus
End Sub


Bạn thêm thủ tục này vào cuối thủ tục của bạn:

Columns("A:A").EntireColumn.AutoFit
 
Cells(NextRow, 1) = txtname.Text
Cells(NextRow, 1).Columns.AutoFit
txtname.Text = ""

Bạn thêm đoạn này
 
Em có một đoạn code như dưới đây. Ký tự nhập vào từ textbox của UserForm được gán vào cột A. Bài toán đặt ra là muốn cho dữ liệu nhập vào tự động căn chỉnh độ rộng của ô thì làm như thế nào ạ.

À, lưu ý với bạn khi dùng AutoFit, phải đảm bảo rằng cột A không định dạng là Wrap Text thì mới chạy đúng theo ý của mình.
 
Nếu thêm đoạn code giống của bạn thì sẽ thành:

Private Sub CmdOk_Click()
Sheets("Nhaplieu").Activate
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Cells(NextRow, 1) = txtname.Text
txtname.Text = ""
Cells(NextRow, 1).Columns.AutoFit
txtname.SetFocus
End Sub


Nhưng tôi thử sử dụng thì thấy rằng sau mỗi lần nhập dữ liệu thì thủ tục này sẽ tự động điều chỉnh độ rộng cho dữ liệu vừa nhập vào thôi. Làm thể nào để nó tự động điều chỉnh độ rộng cột theo dữ liệu có số ký tự dài nhất được nhập vào không?
 
Nếu thêm đoạn code giống của bạn thì sẽ thành:

Private Sub CmdOk_Click()
Sheets("Nhaplieu").Activate
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Cells(NextRow, 1) = txtname.Text
txtname.Text = ""
Cells(NextRow, 1).Columns.AutoFit
txtname.SetFocus
End Sub


Nhưng tôi thử sử dụng thì thấy rằng sau mỗi lần nhập dữ liệu thì thủ tục này sẽ tự động điều chỉnh độ rộng cho dữ liệu vừa nhập vào thôi. Làm thể nào để nó tự động điều chỉnh độ rộng cột theo dữ liệu có số ký tự dài nhất được nhập vào không?

Không phải nó điều chỉnh theo độ rộng của giá trị mới nhập vào, mà nó điều chỉnh ở giá trị có Len dài nhất tại cột đó thôi.
 
Tôi làm thì không được như vậ bạn àh. Bạn xem ví dụ của tôi theo file tôi gửi kèm theo để giúp tôi khắc phục nhé: http://www.mediafire.com/?d7k3zb0hz5jzdf5

Sao kỳ vậy? Tôi tải về và nhập một chuỗi có giá trị dài hơn chuỗi đang có thì nó fit độ rộng của cột mà?


À, hiểu rồi, tại bạn dùng cells, nên có tình trạng như vậy, bạn phải dùng là columns chứ!

Mã:
Private Sub CmdOk_Click()
Sheets("Nhaplieu").Activate
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Cells(NextRow, 1) = txtname.Text
If OptMale Then Cells(NextRow, 2) = "Male"
If OptFemale Then Cells(NextRow, 2) = "Female"
If OptUnknown Then Cells(NextRow, 2) = "Unknown"
txtname.Text = ""
[COLOR=#ff0000][B]Columns("A:A").EntireColumn.AutoFit[/B][/COLOR]
OptionUnknown = True
txtname.SetFocus
End Sub
 
Lần chỉnh sửa cuối:
Không phải nó điều chỉnh theo độ rộng của giá trị mới nhập vào, mà nó điều chỉnh ở giá trị có Len dài nhất tại cột đó thôi.


Cảm ơn bạn đã chỉ. Tôi làm được rồi!!! Những kiến thức này thật là quý báu. Tiếc là mình không đủ sức tìm hiểu được hết.
 
Lần chỉnh sửa cuối:
Không phải nó điều chỉnh theo độ rộng của giá trị mới nhập vào, mà nó điều chỉnh ở giá trị có Len dài nhất tại cột đó thôi.
Cảm ơn bạn đã chia sẻ. Bạn minhthien321 có thể cho mình một sồ file excel có chứa code và userform để mình tham khảo được không ạ. Thankyou very much!
 
Cảm ơn bạn đã chia sẻ. Bạn minhthien321 có thể cho mình một sồ file excel có chứa code và userform để mình tham khảo được không ạ. Thankyou very much!

UserForm thì có đầy trên diễn đàn, nhưng nếu bạn muốn tham khảo một trong những file có chứa form của tôi thì có thể theo link dưới đây để tải về mà xem nhé:
http://www.giaiphapexcel.com/forum/...N-GiaiphapExcel.Com-lần-5&p=323317#post323317
 
Web KT
Back
Top Bottom