Giúp code Wrap text ô trộn (Merge cells)

Liên hệ QC

hanhpptc

Thành viên tiêu biểu
Tham gia
16/5/08
Bài viết
459
Được thích
320
Đối với ô không trộn, khi thực hiện căn chỉnh độ cao tự động của dòng thì ta chọn Wrap text là được. Tuy nhiên, với ô có dữ liệu là ô trộn (Merge cells), thì không tự động căn chỉnh độ cao của dòng được, cho dù đã đã thực hiện chọn Wrap text. Xin các bạn hướng dẫn Code tự động căn chỉnh giúp mình với.
 
Đối với ô không trộn, khi thực hiện căn chỉnh độ cao tự động của dòng thì ta chọn Wrap text là được. Tuy nhiên, với ô có dữ liệu là ô trộn (Merge cells), thì không tự động căn chỉnh độ cao của dòng được, cho dù đã đã thực hiện chọn Wrap text. Xin các bạn hướng dẫn Code tự động căn chỉnh giúp mình với.

Chắc còn cách khác hay hơn, nhưng cứ xài tạm cái này


PHP:
Sub wrap()
Dim dl, i
Set dl = [a1:a10]
For i = 1 To dl.Rows.Count
  dl(i, 1).WrapText = True
Next
End Sub
 
Upvote 0
Upvote 0
Cám ơn quanghai1969. Ý mình là đối với ô đã merge cột, chứ ô thường thì mình làm được
um nếu không đúng thì coi như thêm tí kinh nghiệm, nhưng khi mình gởi code lên cũng đã test rôi, khi gặp cell nào trộn thì sẽ wrap lại. Cái chính là code mẫu để tham khảo vì bạn có file đâu mà xác định đúng sai

Hay là mình lấy file này để kiểm chứng nha rồi bàn tiếp
 

File đính kèm

  • Book1.rar
    5.2 KB · Đọc: 60
Lần chỉnh sửa cuối:
Upvote 0
um nếu không đúng thì coi như thêm tí kinh nghiệm, nhưng khi mình gởi code lên cũng đã test rôi, khi gặp cell nào trộn thì sẽ wrap lại. Cái chính là code mẫu để tham khảo vì bạn có file đâu mà xác định đúng sai

Hay là mình lấy file này để kiểm chứng nha rồi bàn tiếp
Ý mình muốn là wrap text các ô trộn như trong ví dụ này
 

File đính kèm

  • VD Wap.xls
    22.5 KB · Đọc: 45
Upvote 0
Mình test rồi, code vẫn wrap text được mà, mình ví dụ trong [a1:a10], nếu dữ liệu của bạn là vùng khác thì sửa code lại chứ
Chắc là bạn chưa hiểu ý mình cần. Đối với các ô đã trộn (như ví dụ từ cột A đến cột C, tương ứng dòng 1 đến 10), khi dữ liệu trong ô vượt quá giới hạn ô đã trộn thì thực hiện tự động canh chiều cao của dòng để Wrap text cho phù hợp
Bạn test trong file VD của mình thử xem, sau khi thực hiện nó có giống các ô bên dưới đâu
 
Lần chỉnh sửa cuối:
Upvote 0
Chắc là bạn chưa hiểu ý mình cần. Đối với các ô đã trộn (như ví dụ từ cột A đến cột C, tương ứng dòng 1 đến 10), khi dữ liệu trong ô vượt quá giới hạn ô đã trộn thì thực hiện tự động canh chiều cao của dòng để Wrap text cho phù hợp
Bạn test trong file VD của mình thử xem, sau khi thực hiện nó có giống các ô bên dưới đâu

Mình thấy được mà, kiểm tra lại xem
 

File đính kèm

  • vidu.rar
    9.3 KB · Đọc: 57
Upvote 0
Chưa đực bạn à, khi bạn thay đổi chiều dài dữ liệu, thì dòng không từ động căn chỉnh sau khi thực hiện macro. Bạn thử đi

um mình hiểu ra vấn đề của bạn rồi, chưa làm cái này được. Merge cột thì khó ăn thiệt. Đợi xem có anh chi nào khác giúp không
 
Upvote 0
Mình cũng nghĩ ra được cách này, tuy hơi kỳ cục nhưng có thể chế biến xài tạm tạm chắc cũng được
PHP:
Sub wrap()
Application.ScreenUpdating = False
Dim dl, i
[a1:a20].Copy: [d1].PasteSpecial 3
Set dl = [a1:d20]
[d:d].ColumnWidth = [a:a].ColumnWidth + [b:b].ColumnWidth + [c:c].ColumnWidth + 1
  For i = 1 To dl.Rows.Count
    dl(i, 1).WrapText = True
      dl(i, 4).WrapText = True
        dl(i, 4).Rows.AutoFit
          dl(i, 1).RowHeight = dl(i, 4).RowHeight
  Next
[d:d].Clear
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Chả lẽ không có dòng này thì RowHeight dl(i, 1) khác RowHeight của dl(i, 4) sao?

Có thể anh chưa biết nguyên nhân, vì em phải lợi dụng cái autofit phía trên để lấy chiều cao cho các dòng của cột A, vì nếu không set chiều cao của cột A thì sau khi xoá dữ liệu ở cột D thì dòng của cột A sẽ co lại
 
Lần chỉnh sửa cuối:
Upvote 0
Có thể anh chưa biết nguyên nhân, vì em phải lợi dụng cái autofit phía trên để lấy chiều cao cho cột A, vì nếu không set chiều cao của cột A thì sau khi xoá cột D thì cột A sẽ co lại
Đúng là tà đạo! Có ai mà nghĩ ra chuyện set chiều cao 1 dòng bằng chính chiều cao dòng đó!
 
Upvote 0
Bởi vậy em mới nói cách này hơi kỳ cục, nhưng vì bí quá nên em mới dùng cách tà đạo này. Nhưng cũng là 1 cách để gở rối.

Cám ơn quanghai1969! Tuy cách của bạn mượn cột phụ D để set chiều cao của dòng nhưng chạy được. Trước mắt mình áp dụng chiêu này đã trước khi có thuật toán hay hơn. Một lần nữa cám ow3n bạn.
Còn cách của ndu96081631 (thực của anhtuan1966) chỉ áp dụng cho việc gõ trực tiếp (Target), mình không dùng được trong trường hợp này.
 
Upvote 0
Có thể đếm số ký tự tối đa trên 1 dòng, sau đó chia chiều dài chuỗi cho số đó, làm tròn lên (roundup), xong rồi ...
 
Upvote 0
Web KT

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

Back
Top Bottom