Tự động xuống dòng khi hết chiều rộng của cột? (1 người xem)

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

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

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

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.
 
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
Xem trên cuối TabHome có 2 nút lệnh On/Off với Setting ấy
+ On/Off để bật tắt chức năng sự kiện thao tác trên Sheet ( ở đây là sự kiện Click chuột vào ô với Chỉnh sửa nội dung ô)
+Setting để chuyển qua lại 2 chế độ:
Off :Chỉnh sửa nội dung ô
On :Click chuột vào ô (lưu ý: cái này nhiều công thức là cực chậm nhé)
 

File đính kèm

Lần chỉnh sửa cuối:
Xem trên cuối TabHome có 2 nút lệnh On/Off với Setting ấy
+ On/Off để bật tắt chức năng sự kiện thao tác trên Sheet ( ở đây là sự kiện Click chuột vào ô với Chỉnh sửa nội dung ô)
+Setting để chuyển qua lại 2 chế độ:
Off :Chỉnh sửa nội dung ô
On :Click chuột vào ô (lưu ý: cái này nhiều công thức là cực chậm nhé)
Mình test vẫn chưa chuẩn bạn à
Test thấy chức năng kích chuột vào ô thì đươc; Chức năng chỉnh sửa nội dung ô khác thì chưa được
Dữ liệu ô A5:E5=B4
Mình muốn khi sửa dữ liệu của B4 thì chiều cao dòng 5 tự động thay đổi
Có trường hợp nữa là A5:E5=Vlookup(A1;G5:K10;5;0)
Kể có thời gian anh em gặp nhau nhỉ, Mình đang ở Hà Nội, rất mong có cơ hội gặp bạn
 
Lần chỉnh sửa cuối:
Mình test vẫn chưa chuẩn bạn à
Test thấy chức năng kích chuột vào ô thì đươc; Chức năng chỉnh sửa nội dung ô khác thì chưa được
Dữ liệu ô A5:E5=B4
Mình muốn khi sửa dữ liệu của B4 thì chiều cao dòng 5 tự động thay đổi
Có trường hợp nữa là A5:E5=Vlookup(A1;G5:K10;5;0)
Kể có thời gian anh em gặp nhau nhỉ, Mình đang ở Hà Nội, rất mong có cơ hội gặp bạn
bạn thử như thế thì không được đúng rồi, code chỉ tác dụng khi thao tác trên chính ô cần chỉnh thôi mà.
Đầu tiên bạn bật On/Off (màu tối đi là bật)
Setting: màu sáng là khi chỉnh sửa nội dung trong ô rồi enter => sẽ chỉnh lại chiều cao
Setting: màu tối là khi click chuột chọn ô cần chỉnh => sẽ chỉnh lại chiều cao
còn bạn muốn chỉnh qua trung gian là những ô có công thức liên quan đến ô vừa chỉnh thì có thể chạy lâu nhé bạn
Thử với code sau nhé
 

File đính kèm

bạn thử như thế thì không được đúng rồi, code chỉ tác dụng khi thao tác trên chính ô cần chỉnh thôi mà.
Đầu tiên bạn bật On/Off (màu tối đi là bật)
Setting: màu sáng là khi chỉnh sửa nội dung trong ô rồi enter => sẽ chỉnh lại chiều cao
Setting: màu tối là khi click chuột chọn ô cần chỉnh => sẽ chỉnh lại chiều cao
còn bạn muốn chỉnh qua trung gian là những ô có công thức liên quan đến ô vừa chỉnh thì có thể chạy lâu nhé bạn
Thử với code sau nhé
Test vẫn chưa được như ý, Chẳng hiểu tại sao chắc tại test lúc say
Mình vẫn sử dụng Code bài #14 hiệu quả
Có điều mình cho thêm modul thay thế dấu = thành dấu = vào một modul trước khi in, vì mình in tự động
Test 4 trường hợp
Vấn đề này mình rất quan tâm, mình nghĩ mọi người cũng rất quan tâm, từ 2010 minh đã nguôi ngoai bảo thôi chác tại ông bin không cho như thầy PTM nói nên dị ứng với ông excel khi làm văn bản
 

File đính kèm

Test vẫn chưa được như ý, Chẳng hiểu tại sao chắc tại test lúc say
Mình vẫn sử dụng Code bài #14 hiệu quả
Có điều mình cho thêm modul thay thế dấu = thành dấu = vào một modul trước khi in, vì mình in tự động
Test 4 trường hợp
Vấn đề này mình rất quan tâm, mình nghĩ mọi người cũng rất quan tâm, từ 2010 minh đã nguôi ngoai bảo thôi chác tại ông bin không cho như thầy PTM nói nên dị ứng với ông excel khi làm văn bản
rốt cuộc bạn muốn gì mình vẫn chưa hiểu. bạn muốn khi chỉnh sửa B4 thì các công thức có liên quan đến B4 sẽ tự chỉnh, thì nó đã tự chỉnh đấy thôi.
còn tại sao bạn muốn thay dấu bằng "=" thành dấu bằng "=" <= để làm gì vậy? có tác dụng gì không?
bạn cần nêu rõ yêu cầu kèm theo file kèm theo, từng bước thực hiện và kết quả mong muốn.
bạn gửi file word qua thì làm được gì.
 
e ko biết VBA các bác xem giúp e cái file BBNT dưới với . e muốn cái dòng tiêu chuẩn màu đỏ kia tự động giãn dòng khi dữ liệu dài và mất đi khi ko có dữ liệu gì . và cho e xin cái in tự động cho nó nhanh ạ, e cam ơn
 

File đính kèm

Các bác cho em hỏi với ạ:
Em chọn Chế độ xuống dòng tự động bằng wrap text trong Format cell nhưng khi xuống dòng lại ngắt vào giữa 1 chữ.
Vd: Trường trung học phổ thông
kết quả là: Trường trung h
ọc phổ thông
Bác nào biết chỉ giúp em với.
Cảm ơn các bác nhiều!
 
@sonctkhoabinh : Có thể sau khi đánh đến chữ h bạn nhấn nhầm Alt+Enter chăng? Mặc dù cell vẫn được định dạng là Wrap Text?
 

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

Back
Top Bottom