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
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2