+. Đúng là có nhiều bài nói về chủ đề này. Nhưng việc giãn dòng có 2 đặc điểm chính:
+. Cảm ơn sự quan tâm của bạn !.@lenolim Bạn tham khảo bài viết mới bên này, việc co giãn dòng sẽ trở nên đơn giản với hàm viết bằng VBA
Siêu hàm Excel - Tự động co giãn dòng tối ưu nhất cho Văn bản và Biên bản
Hôm nay tôi lại chia sẻ cho các bạn một Hàm VBA UDF có chức năng tự động co giãn dòng khi giá trị trong bảng tính thay đổi, thì quá trình co giãn dòng cũng tự động thay đổi theo. Code bên dưới là phiên bản đầu nên có thể gặp một số lỗi nhất định, nên khi tham khảo thì các bạn nên kiểm trước, nếu...giaiphapexcel.com
+. Mình đang xem có áp dụng được cho yêu cầu của mình không.@lenolim Bạn tham khảo bài viết mới bên này, việc co giãn dòng sẽ trở nên đơn giản với hàm viết bằng VBA
Siêu hàm Excel - Tự động co giãn dòng tối ưu nhất cho Văn bản và Biên bản
Hôm nay tôi lại chia sẻ cho các bạn một Hàm VBA UDF có chức năng tự động co giãn dòng khi giá trị trong bảng tính thay đổi, thì quá trình co giãn dòng cũng tự động thay đổi theo. Code bên dưới là phiên bản đầu nên có thể gặp một số lỗi nhất định, nên khi tham khảo thì các bạn nên kiểm trước, nếu...giaiphapexcel.com
Bạn dùng sub này trong module:Nhờ mọi người trợ giúp:
- Giãn dòng khi hòa ô để dữ liệu vừa khít với vùng đã chọn.
- Nội dung đính kèm theo file
Sub MergeCellFit(ByVal MergeCells As Range)
Dim Diff As Single
Dim FirstCell As Range, MergeCellArea As Range
Dim Col As Long, ColCount As Long, RowCount As Long
Dim FirstCellWidth As Double, FirstCellHeight As Double, MergeCellWidth As Double
If MergeCells.Count = 1 Then
Set MergeCellArea = MergeCells.MergeArea
Else
Set MergeCellArea = MergeCells
End If
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
With MergeCellArea
ColCount = .Columns.Count
RowCount = .Rows.Count
.WrapText = True
If RowCount = 1 And ColCount = 1 Then
.EntireRow.AutoFit
GoTo ExitSub
End If
Set FirstCell = .Cells(1, 1)
FirstCellWidth = FirstCell.ColumnWidth
Diff = 0.75
For Col = 1 To ColCount
MergeCellWidth = MergeCellWidth + .Cells(1, Col).ColumnWidth + Diff
Next
.MergeCells = False
FirstCell.ColumnWidth = MergeCellWidth - Diff
.EntireRow.AutoFit
FirstCellHeight = FirstCell.RowHeight
.MergeCells = True
FirstCell.ColumnWidth = FirstCellWidth
FirstCellHeight = FirstCellHeight / RowCount
.RowHeight = FirstCellHeight
End With
ExitSub:
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A130")) Is Nothing Then
MergeCellFit Target
Target.HorizontalAlignment = xlJustify
' Target.HorizontalAlignment = xlLeft
End If
End Sub
Bạn đọc qua bài viết đấy.+. Mình đang xem có áp dụng được cho yêu cầu của mình không.
+. Tuy nhiên: Vẫn Nhờ bạn xem và giúp đỡ bài của mình.
*. Với yêu cầu của mình có 2 nội dung chính:
1. Chọn và gán những ô (vùng ô) vào bảng mẫu. Lưu lại những tùy chọn này.
2. Dùng Code để giãn dòng các ô (vùng ô) đã chọn. (Các ô, vùng ô khác trong bảng vẫn giữ nguyên mặc định (Nói chung là Code không tác động vào các vùng không được chọn))
Xin được cảm ơn bạn !
Để mình theo dõi bài viết này. Mình sẽ tổng hợp các câu hỏi để hỏi sau.Bạn đọc qua bài viết đấy.
Xong bạn tải tệp tin ví dụ về, có Ví dụ ở Sheet Biên Bản.
Nếu đọc xong và xem ví dụ xong mà chưa hiểu thì bạn hãy tiếp tục đăng câu hỏi.
Bản cập nhật tiếp theo sẽ có tính năng giãn Trang, như các mục, chỉ mục, vừa khớp với Trang hoặc dịch chuyển mục, chỉ mục xuống Trang mới nếu cần thiết.
Bạn theo dõi bài viết để biết cập nhật mới.
Xin cảm ơn sự quan tâm của bạn.Bạn dùng sub này trong module:
Rich (BB code):Sub MergeCellFit(ByVal MergeCells As Range) Dim Diff As Single Dim FirstCell As Range, MergeCellArea As Range Dim Col As Long, ColCount As Long, RowCount As Long Dim FirstCellWidth As Double, FirstCellHeight As Double, MergeCellWidth As Double If MergeCells.Count = 1 Then Set MergeCellArea = MergeCells.MergeArea Else Set MergeCellArea = MergeCells End If Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual With MergeCellArea ColCount = .Columns.Count RowCount = .Rows.Count .WrapText = True If RowCount = 1 And ColCount = 1 Then .EntireRow.AutoFit GoTo ExitSub End If Set FirstCell = .Cells(1, 1) FirstCellWidth = FirstCell.ColumnWidth Diff = 0.75 For Col = 1 To ColCount MergeCellWidth = MergeCellWidth + .Cells(1, Col).ColumnWidth + Diff Next .MergeCells = False FirstCell.ColumnWidth = MergeCellWidth - Diff .EntireRow.AutoFit FirstCellHeight = FirstCell.RowHeight .MergeCells = True FirstCell.ColumnWidth = FirstCellWidth FirstCellHeight = FirstCellHeight / RowCount .RowHeight = FirstCellHeight End With ExitSub: Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Và sub sự kiện sau trong sheet code cần tự động giãn dòng:
Rich (BB code):Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A130")) Is Nothing Then MergeCellFit Target Target.HorizontalAlignment = xlJustify ' Target.HorizontalAlignment = xlLeft End If End Sub
Căn chỉnh Justify hay left là tùy bạn.
Đã biết vùng tác động thì bạn sửa lại địa chỉ để dùng chứXin cảm ơn sự quan tâm của bạn.
Mình đã xem và cho chạy thử Code. Nhưng có vấn đề chưa thỏa mãn yêu cầu của mình:
+. Mình muốn Code chỉ tác động ở những vùng ô được gán trong mẫu (Mẫu này tùy biến theo từng Sheet khác nhau).
***. Trong Code của bạn, nó lại tác động hết (Những ô đã chọn (A1:A130))
Mong bạn xem lại và nhận được sự giúp đỡ !
Bài viết, có phần hướng dẫn tận dụng hàm, bạn đọc qua giúp tôi.Xin cảm ơn sự quan tâm của bạn.
Mình đã xem và cho chạy thử Code. Nhưng có vấn đề chưa thỏa mãn yêu cầu của mình:
+. Mình muốn Code chỉ tác động ở những vùng ô được gán trong mẫu (Mẫu này tùy biến theo từng Sheet khác nhau).
***. Trong Code của bạn, nó lại tác động hết (Những ô đã chọn (A1:A130))
Mong bạn xem lại và nhận được sự giúp đỡ !
Hic! Bạn ấy nói tôi đấy.Bài viết, có phần hướng dẫn tận dụng hàm, bạn đọc qua giúp tôi.
Đọc bài hướng dẫn mà không hiểu thì tôi không còn cách hướng dẫn nào khác.
Và tôi cũng có để tệp hướng dẫn.
Viết từng hàm cho từng dòng có ô gộp, nha bạn, không phải một hàm cho A1:A130.
Nếu không được thì bạn nên chờ thành viên khác giúp bạn.