Xin được giúp nhờ chỉnh sửa code giãn dòng

Liên hệ QC

vc_đi chơi

Thành viên hoạt động
Tham gia
21/9/19
Bài viết
159
Được thích
32
Em có tham khảo đoạn code để dãn dòng Trên GPE và áp dụng:
Trong sheet"Bang" được lấy dữ liệu từ sheet"Nguon".
+ Sub Dandong() em copy vào sheet"Bang" nhu sau":
Mã:
Sub Dandong()
Dim cll As Range
    On Error Resume Next
    For Each cll In Range("F11", Range("F" & Rows.Count).End(xlUp))
If cll <> Empty Then MergeCellFit cll.Offset(, -3)
    Next
End Sub
+ Sub MergeCellFit(ByVal MergeCells As Range) em copy vào module1:
Mã:
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
Khi Cuộn dữ liệu em không thấy tác dụng giãn dòng trên các vùng ô được gộp của sheet "Bang"
Cách copy code vào vị trí vậy đã đúng chưa ạ?
Nhờ các anh, chị giúp em xem còn lỗi gì mà không giãn dòng được ạ?
Mong anh, chị giúp đỡ. Em cảm ơn!
0000000000.png
 

File đính kèm

  • Test Thu.xlsm
    31.7 KB · Đọc: 8
Em có tham khảo đoạn code để dãn dòng Trên GPE và áp dụng:
Trong sheet"Bang" được lấy dữ liệu từ sheet"Nguon".
+ Sub Dandong() em copy vào sheet"Bang" nhu sau":
Mã:
Sub Dandong()
Dim cll As Range
    On Error Resume Next
    For Each cll In Range("F11", Range("F" & Rows.Count).End(xlUp))
If cll <> Empty Then MergeCellFit cll.Offset(, -3)
    Next
End Sub
+ Sub MergeCellFit(ByVal MergeCells As Range) em copy vào module1:
Mã:
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
Khi Cuộn dữ liệu em không thấy tác dụng giãn dòng trên các vùng ô được gộp của sheet "Bang"
Cách copy code vào vị trí vậy đã đúng chưa ạ?
Nhờ các anh, chị giúp em xem còn lỗi gì mà không giãn dòng được ạ?
Mong anh, chị giúp đỡ. Em cảm ơn!
View attachment 228449
Tôi không sửa lại code của người khác, mà thêm code mới bạn tự kiểm tra thử.
 

File đính kèm

  • Test Co Gian Dong .xls
    64.5 KB · Đọc: 25
Tôi không sửa lại code của người khác, mà thêm code mới bạn tự kiểm tra thử.
Cám ơn anh!
Làm phiền anh chút xíu:
Để những dòng không có dữ liệu (tô nền vàng) tự đổng ẩn đi: có thể áp dụng định dạng có điều kiện để làm được không anh?
Hay là phải dùng vba ạ?
Em nhờ anh giúp em vấn đề còn lại này nhé!

kim.png
 

File đính kèm

  • Test Co Gian Dong An Cell.xls
    72 KB · Đọc: 21
Thêm 1 đoạn code nữa, bạn xem thử.
Đoạn code anh viết giúp em: ở Module "M_CoGian"
Em thêm 02 sheet là "Dulieu" và sheet"LayDL"
"LayDL" được lấy dữ liệu sang từ "Dulieu" vậy trong codoe của sheet "LayDL" em sửa như sau:
Mã:
Option Explicit
Private Sub SpinButton1_Change()
Application.ScreenUpdating = False
Dim CotD As Range
    With ActiveSheet
        Range("H2").Value = SpinButton1.Value
        SpinButton1.Max = 5
        SpinButton1.Min = 1
        SpinButton1.SmallChange = 1
    Call CogianDong
    End With
    For Each CotD In Range("E6:F11")
            If CotD.Value = "0" Then
                CotD.EntireRow.Hidden = True
            End If
        Next CotD
Application.ScreenUpdating = True
End Sub
Còn trong module phải sửa như thế nào vậy anh: để tự co giãn dòng và dòng trống không có dữ liệu được ẩn đi giống như vấn đề em nêu ở bài 3 mà anh đã giúp em.
Anh giúp em hoàn thiện nốt lần này anh nhé! cám ơn anh!


them.png
 

File đính kèm

  • Them.xlsm
    37.9 KB · Đọc: 8
Đoạn code anh viết giúp em: ở Module "M_CoGian"
Em thêm 02 sheet là "Dulieu" và sheet"LayDL"
"LayDL" được lấy dữ liệu sang từ "Dulieu" vậy trong codoe của sheet "LayDL" em sửa như sau:
Mã:
Option Explicit
Private Sub SpinButton1_Change()
Application.ScreenUpdating = False
Dim CotD As Range
    With ActiveSheet
        Range("H2").Value = SpinButton1.Value
        SpinButton1.Max = 5
        SpinButton1.Min = 1
        SpinButton1.SmallChange = 1
    Call CogianDong
    End With
    For Each CotD In Range("E6:F11")
            If CotD.Value = "0" Then
                CotD.EntireRow.Hidden = True
            End If
        Next CotD
Application.ScreenUpdating = True
End Sub
Còn trong module phải sửa như thế nào vậy anh: để tự co giãn dòng và dòng trống không có dữ liệu được ẩn đi giống như vấn đề em nêu ở bài 3 mà anh đã giúp em.
Anh giúp em hoàn thiện nốt lần này anh nhé! cám ơn anh!


View attachment 228551
Giải thích tôi không hiểu, cần giải thích cụ thể rỏ ràng hơn. Cụ thể là sửa code để áp dụng co giản dòng chung cho các sheet, ví dụ:
1/ Mỗi lần in thì áp dụng code co giản dòng riêng cho 1 sheet đang hoạt động (hiện đang mở).
2/ In cùng lúc 3 sheet thì áp dụng code co giản dòng lặp qua cho cả 03 sheet cùng lúc "Bang", "Dulieu" và "LayDL".
 
Giải thích tôi không hiểu, cần giải thích cụ thể rỏ ràng hơn. Cụ thể là sửa code để áp dụng co giản dòng chung cho các sheet, ví dụ:
1/ Mỗi lần in thì áp dụng code co giản dòng riêng cho 1 sheet đang hoạt động (hiện đang mở).
2/ In cùng lúc 3 sheet thì áp dụng code co giản dòng lặp qua cho cả 03 sheet cùng lúc "Bang", "Dulieu" và "LayDL".
Chúc thầy ngày mới vui vẻ!
Thầy đã giúp em co giãn và ẩn dòng trống khi an sheet"Bang" được lấy dữ liệu từ Sheet"Nguon"
Giờ em muốn sheet"layDL" cũng ẩn dòng trống và co giãn dòng khi in ra, sheet"layDL" này được lấy dữ liệu từ sheet"Dulieu"
Theo ý thứ nhất thầy nêu: "1/ Mỗi lần in thì áp dụng code co giản dòng riêng cho 1 sheet đang hoạt động (hiện đang mở)" và đồng thời ẩn dòng trống trong sheet đó!
File em tải kèm bài 6, thầy xem giúp em để em có thể áp dụng.
Cảm ơn thầy!
 
Chúc thầy ngày mới vui vẻ!
Thầy đã giúp em co giãn và ẩn dòng trống khi an sheet"Bang" được lấy dữ liệu từ Sheet"Nguon"
Giờ em muốn sheet"layDL" cũng ẩn dòng trống và co giãn dòng khi in ra, sheet"layDL" này được lấy dữ liệu từ sheet"Dulieu"
Theo ý thứ nhất thầy nêu: "1/ Mỗi lần in thì áp dụng code co giản dòng riêng cho 1 sheet đang hoạt động (hiện đang mở)" và đồng thời ẩn dòng trống trong sheet đó!
File em tải kèm bài 6, thầy xem giúp em để em có thể áp dụng.
Cảm ơn thầy!
Tôi sửa code trong Module và trong sheet layDL lại một tí, bạn kiểm tra lại thử.
 

File đính kèm

  • Them.xlsm
    39.5 KB · Đọc: 15
Tôi sửa code trong Module và trong sheet layDL lại một tí, bạn kiểm tra lại thử.
Anh ơi, nhờ anh giúp em để có thể in được theo 2 trường hợp:
1/ In theo số thứ tự liên tục (ví dụ từ 1 đến 3)
2/ In Theo số chọn ngẫu nhiên (ví dụ chọn số cần in: 2,5,6)
Mà khi in có thể lắp đoạn code giãn và ẩn dòng anh đã giúp em o bài #8 vào để khi in có thể tự co giãn, ẩn dòng trống đó được không ạ?
Anh giúp em mới nhé! có cần thiết phải lập chủ đề mới không anh?
Cám ơn anh!
 
Web KT
Back
Top Bottom