Tự động xuống dòng khi hết chiều rộng của cột?

Liên hệ QC

dathl

Thành viên mới
Tham gia
10/12/07
Bài viết
8
Được thích
1
tự động xuống dòng khi hết chiệu rộng của cột

Tự động xuống dòng khi hết chiều rộng của ô
 
Bạn vào Format Cells, trong tab Alignment, đánh dấu mục Wrap text
 
Cách thứ 2 nếu bạn cần "cưỡng" ép xuống dòng
ALT+ENTER
 
Trường hợp mình là khi viết 1 dòng dài ở chế độ "merge & center" nhưng khi đến hết cột thì tự động xuống hàng và hàng tự chỉnh chiều cao để nhìn thấy all các chữ, cao thủ nào biết tư vấn giúp
t3sWg4f.png
 
Trường hợp mình là khi viết 1 dòng dài ở chế độ "merge & center" nhưng khi đến hết cột thì tự động xuống hàng và hàng tự chỉnh chiều cao để nhìn thấy all các chữ, cao thủ nào biết tư vấn giúp
Tôi nghĩ bỏ Merge & Center đi, chỉ dùng Wrap Text thì khi viết chữ dài quá chiều rộng cột sẽ được tự động xuống dòng!
 
Chọn CÁC CELL trong khung nhìn, chọn Wrap Text và Format cell/Alignment/Horizontal/chọn Center Across Selection/OK.
Cảm ơn bác đã tư vấn, nhưng có lẻ bác vẫn chưa hiểu hết ý của mình và bác trả lời hơi bị ngược
1/ Vấn đề bị ngược: Trước hết chọn vùng để "Megre & crnter", phải chuột chọn Format cell (Ctr + 1)/Alignment/Wrap Text/....
2/ Cái mình cần hỏi ở đây là, ví dụ như dòng chữ "cộng hòa xã hội chủ nghĩa việt nam" kia chỉ nằm trong hàng 1, cột A và B. Có nghĩa là khi mình gõ dòng chữ ấy đến vị trí gần hết cột B thì tự nó xuống dòng và đồng thời chiều cao của cột 1 cũng tự động điều chỉnh cho phù hợp với 2 dòng chữ ấy (ở đây là mình làm thủ công là là dùng "Alt + Enter" và kéo chuột tự điều chỉnh chiều cao hàng
Capture.jpg
- Trường hợp mình đã điều chỉnh như trên mà vẫn không được
Capture.jpg
Còn vấn đề bác nói dùng "Center Across Selection" chẳng liên quan gì đến vấn đề của mình cả, mà theo mình thì nó chỉ là canh giữa khi chọn "Merge & center" mà thôi
 
Do bạn contrucstion không hiểu cách của tôi và không biết thao tác tại máy của bạn thôi.
Chọn A6 đến C6, rồi định dạng như hình, xong gõ chữ thật dài dài để thấy kết quả có thấy chữ tự động xuống dòng khi dài quá chiều rộng cột C không!

Trường hợp của bạn là chọn A1 đến B1 nhỉ!
 
Do bạn contrucstion không hiểu cách của tôi và không biết thao tác tại máy của bạn thôi.
Chọn A6 đến C6, rồi định dạng như hình, xong gõ chữ thật dài dài để thấy kết quả có thấy chữ tự động xuống dòng khi dài quá chiều rộng cột C không!

Trường hợp của bạn là chọn A1 đến B1 nhỉ!
Rất vui vì được tranh luận cùng bác. Ơ trên mình nói còn sai cái vụ
Còn vấn đề bác nói dùng "Center Across Selection" chẳng liên quan gì đến vấn đề của mình cả, mà theo mình thì nó chỉ là canh giữa khi chọn "Merge & center" mà thôi]

Mình xin đính chính lại là
Còn vấn đề bác nói dùng "Center Across Selection" chẳng liên quan gì đến vấn đề của mình cả, mà theo mình thì nó chỉ là canh giữa vùng được chọn mà thôi

Còn vấn đề của bác là bắt buộc phải canh giữa vùng được chọn, còn vấn đề của mình là xuống dòng khi mặt định bên trái bắt đầu gõ, khi hết cột tự động xuống dòng, bác để ý kỷ thấy hình mình chụp rồi đấy
 
Còn vấn đề của bác là bắt buộc phải canh giữa vùng được chọn, còn vấn đề của mình là xuống dòng khi mặt định bên trái bắt đầu gõ, khi hết cột tự động xuống dòng, bác để ý kỷ thấy hình mình chụp rồi đấy[/COLOR]
Vậy thì chắc phải đợi thành viên khác viết code theo yêu cầu của bạn, vì tôi chỉ dùng cách đơn giản, thông dụng vậy thôi.
 
tham khảo code này bạn nhé. bạn wrap text và merge & center trước rồi canh giữa, trái phải sao đó tùy bạn. gõ text vào rồi en tơ xem hành quả.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range


With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0
Application.ScreenUpdating = True
End If
End With
End Sub
 
Lần chỉnh sửa cuối:
tham khảo code này bạn nhé. bạn wrap text và merge & center trước rồi canh giữa, trái phải sao đó tùy bạn. gõ text vào rồi en tơ xem hành quả.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range


With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0
Application.ScreenUpdating = True
End If
End With
End Sub
Nhờ bác hướng dẫn cách add code này vào luôn với, chứ trình em đến đây bác nói thế hơi khó
 
Nhờ bác hướng dẫn cách add code này vào luôn với, chứ trình em đến đây bác nói thế hơi khó
tham khảo code này bạn nhé. bạn wrap text và merge & center trước rồi canh giữa, trái phải sao đó tùy bạn. gõ text vào rồi en tơ xem hành quả.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range


With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
Application.ScreenUpdating = False
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.RowHeight = NewRwHt
cWdth = 0: MrgeWdth = 0
Application.ScreenUpdating = True
End If
End With
End Sub
Mong bạn và mọi người chỉ giúp
Code này mình thử thấy có tác dụng cho ô nhập dữ liệu trực tiếp thôi
Với các ô là công thức trả về giá trị có thể thay đổi thì không tự giãn chiều rộng ròng theo AutoFit được
Muốn Autofit được thì lại phải tác động vào bằng cách nhấn sửa và Enter
Trong File mình gửi
3 dòng 15,16, 17 đều lấy dữ liệu ở =B14 (dòng 14)
Tại sao dòng 16 và 17 có độ rộng dòng khác nhau
Từ 2010 mình đã nghe mọi người nói AutoFit này nó không tự động được
 

File đính kèm

  • Gop o tu dong dong.xls
    41.5 KB · Đọc: 48
Mong bạn và mọi người chỉ giúp
Code này mình thử thấy có tác dụng cho ô nhập dữ liệu trực tiếp thôi
Với các ô là công thức trả về giá trị có thể thay đổi thì không tự giãn chiều rộng ròng theo AutoFit được
Muốn Autofit được thì lại phải tác động vào bằng cách nhấn sửa và Enter
Trong File mình gửi
3 dòng 15,16, 17 đều lấy dữ liệu ở =B14 (dòng 14)
Tại sao dòng 16 và 17 có độ rộng dòng khác nhau
Từ 2010 mình đã nghe mọi người nói AutoFit này nó không tự động được
Vừa rồi anh Langtuchungtinh360 có làm 1 Code Autofit tốc độ rất nhanh. Anh thử tìm xem (Cái code trên có tác dụng ô trực tiếp mà tốc độ nó chậm nữa)
LinK: http://www.giaiphapexcel.com/diendan/threads/nhờ-tách-code-vba.124734/#post-781462
 
Vừa rồi anh Langtuchungtinh360 có làm 1 Code Autofit tốc độ rất nhanh. Anh thử tìm xem (Cái code trên có tác dụng ô trực tiếp mà tốc độ nó chậm nữa)
LinK: http://www.giaiphapexcel.com/diendan/threads/nhờ-tách-code-vba.124734/#post-781462
Theo mình thì có thể phát triển code của Langtuchungtinh360 ở bài #14 là được muốn Autofit thì nhấn đúp vào ô bị gộp rồi Enter cho nhanh; còn có nhiều ô thì cứ Ctrl+H thay thế dấu = lại là dấu =
Mình muốn thêm dòng lệnh
Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart, SearchOrder _
:=xlByRows
vào code của Langtuchungtinh360 ở bài #14 nhưng chưa biết bổ sung vào đoạn nào
Đọc bài theo Link bạn chỉ Code dài và khó áp dụng
Mỗi lần lại phải chạy code thì không ổn, mình muốn nó tự động chạy
Tạm thời mình đang dùng thêm một Module nữa để chạy
Sub ThayThe()
Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart, SearchOrder _
:=xlByRows

End Sub
 
Lần chỉnh sửa cuối:
Theo mình thì có thể phát triển code của Langtuchungtinh360 ở bài #14 là được muốn Autofit thì nhấn đúp vào ô bị gộp rồi Enter cho nhanh; còn có nhiều ô thì cứ Ctrl+H thay thế dấu = lại là dấu =
Mình muốn thêm dòng lệnh
Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart, SearchOrder _
:=xlByRows
vào code của Langtuchungtinh360 ở bài #14 nhưng chưa biết bổ sung vào đoạn nào
Đọc bài theo Link bạn chỉ Code dài và khó áp dụng
Mỗi lần lại phải chạy code thì không ổn, mình muốn nó tự động chạy
Tạm thời mình đang dùng thêm một Module nữa để chạy
Sub ThayThe()
Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart, SearchOrder _
:=xlByRows

End Sub
bạn muốn code trong Sub ThayThe() chạy lúc nào thì cho nó vào lúc đó thôi.
code Worksheet_Change chẳng tốt hơn gì đâu bạn. thứ nhất để chạy nó thì tất cả các sheet cần phải có. vì vậy hơi phiền nếu có nhiều sheet.
nếu bạn vẫn muốn sử dụng code cũ đó thì đợi tí tôi sửa thành Addins rồi gửi cho.
 
Web KT
Back
Top Bottom