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!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
Gặp đồng môn rồi. Cảm ơn bác.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.Gặp đồng môn rồi. Cảm ơn bác.
Vấn đề là ở chổ cái "merge & center" còn trong 1 ô thì không vấn đề gì
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ượcChọn CÁC CELL trong khung nhìn, chọn Wrap Text và Format cell/Alignment/Horizontal/chọn Center Across Selection/OK.
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]
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
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.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]
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ó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
Thế thì mở fileNhờ 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ó
Anh hướng dẫn trật rồi, Code trên nó không phải nằm trong ModuleThế thì mở file
Alt+F11
Insert module
copy code trên vào
Alt+Q
Thử thành quả.
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ó
Mong bạn và mọi người chỉ giúptham 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
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)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
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 =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
bạn muốn code trong Sub ThayThe() chạy lúc nào thì cho nó vào lúc đó thô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
Xem trên cuối TabHome có 2 nút lệnh On/Off với Setting ấyTheo 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
Mình test vẫn chưa chuẩn bạn à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é)
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à.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
Test vẫn chưa được như ý, Chẳng hiểu tại sao chắc tại test lúc saybạ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é
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.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
Gửi file đang làm lên coi...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