Hỏi cách Insert dòng trong nhiều worksheet

  • Thread starter Thread starter MinhCong
  • Ngày gửi Ngày gửi
Liên hệ QC

MinhCong

Thành viên gắn bó
Tham gia
28/5/09
Bài viết
1,645
Được thích
1,806
Nghề nghiệp
Xây dựng Cầu đường
Do không thể tạo đề tại mới trong chuyên mục Hỏi đáp VBA được, nên mượn chuyên mục này vậy. Nếu có sai vị trí nhờ MOD chuyển giúp cho đúng nhé.

Tôi có 1 workbook, trong đó có nhiều worksheet. Tôi muốn Insert thêm 1 số dóng như đoạn macro bên dưới vào một số sheet được chọn 1 lần (VD: sheet2, sheet3,sheet4 chẳng hạn). Mong các Bạn giúp cho đoạn code để khi bấm chạy macro 1 cái thì toàn bộ những dòng được chọn trong tất cả các sheet ở trên được chèn thêm 1 dòng. Đoạn macro dưới chỉ chạy cho 1 sheet thôi.
Mã:
Sub Macro1()
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .RightMargin = Application.InchesToPoints(0)
    End With
    Range( _
        "46:46,91:91,136:136,181:181,226:226,271:271,316:316,361:361,406:406,451:451,496:496" _
        ).Select
    Range("A496").Activate
    Selection.Insert Shift:=xlDown
    [A1].Select
End Sub
 
Do không thể tạo đề tại mới trong chuyên mục Hỏi đáp VBA được, nên mượn chuyên mục này vậy. Nếu có sai vị trí nhờ MOD chuyển giúp cho đúng nhé.

Tôi có 1 workbook, trong đó có nhiều worksheet. Tôi muốn Insert thêm 1 số dóng như đoạn macro bên dưới vào một số sheet được chọn 1 lần (VD: sheet2, sheet3,sheet4 chẳng hạn). Mong các Bạn giúp cho đoạn code để khi bấm chạy macro 1 cái thì toàn bộ những dòng được chọn trong tất cả các sheet ở trên được chèn thêm 1 dòng. Đoạn macro dưới chỉ chạy cho 1 sheet thôi.
Mã:
Sub Macro1()
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .RightMargin = Application.InchesToPoints(0)
    End With
    Range( _
        "46:46,91:91,136:136,181:181,226:226,271:271,316:316,361:361,406:406,451:451,496:496" _
        ).Select
    Range("A496").Activate
    Selection.Insert Shift:=xlDown
    [A1].Select
End Sub
Bạn sửa thành:
PHP:
Sub Macro1()
        Const ShChon As String = ".Sheet2..Sheet3..Sheet4."
        Dim Sh As Worksheet
        For Each Sh In Worksheets
                If InStr(ShChon, "." & Sh.Name & ".") = 0 Then GoTo Tiep
                Sh.Activate
                Đoạn code của bạn
    Tiep:
        Next Sh
End Sub
 
Upvote 0
Tôi đã thử với đoạn mã sau

Sub Macro1()
Range("12:12,21:21").Select
Selection.Insert Shift:=xlDown
End Sub

Trước khi thực hiện, chọn một số sheet, sau thực hiện, các hàng đều được thêm vào các sheet đã chọn (tôi đã nhập đại dữ liệu vào A1:A30, và thấy bị dãn ra).

Nhưng cũng cứ nghĩ: 1 chương trình chỉ để thêm một số hàng cố định thì kém thông dụng. Sau đây là 1 cách có tính linh động hơn: bạn chọn ô bất kỳ, nhập vô, ví dụ 12:12,21:21 và chọn lại ô đó. Khi đó chạy chương trinh sau (trước đó có thể đặt phím nóng)

Sub Macro1()
' Keyboard Shortcut: Ctrl+q
a$ = ActiveCell.Value
Range(a$).Select
Selection.Insert Shift:=xlDown
End Sub

hoặc ngắn gọn hơn

Sub Macro1()
' Keyboard Shortcut: Ctrl+q
Range(ActiveCell.Value).Select
Selection.Insert Shift:=xlDown
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nhưng cũng cứ nghĩ: 1 chương trình chỉ để thêm một số hàng cố định thì kém thông dụng. Sau đây là 1 cách có tính linh động hơn: bạn chọn ô bất kỳ, nhập vô, ví dụ 12:12,21:21 và chọn lại ô đó. Khi đó chạy chương trinh sau (trước đó có thể đặt phím nóng)
End Sub
Do như vầy: Tôicũng chẳng hiểu sao, cũng cùng 1 máy in, lúc trước Tôi đã định dạng trang in trên, dưới, trái, phải thấy OK hết. Nhưng vừa rồi máy in nỗi chứng bị hỏng đem đi sủa lại về thì định dạng trên bảng tính excel nó bị thay đổi tất tần tật. Khổ nỗi Tôi có cả trăm file như thế (được cái là những file này Tôi đều định dạng như nhau). Nếu đem từng file ra định dạng thủ công từng sheet chắc tới cả tháng mới xong ấy Bạn.
Đoạn macro Tôi thực hiện theo chỉ dẫn của Bạn nghiaphuc, các Bạn có hướng nào rút gọn ngắn hơn hặc có cách nào giúp tăng tốc cho nó thêm 1 tí nữa được ko?
Mã:
Sub Macro1()
    Const ShChon As String = ".Daomong..BT4x6..VK,CT..BT..LMau..Xay..Dien..Nuoc..TBVS..Trat..Op..Dongtran..Son..Cua..Lopmai..Langnen..Latsan."
        Dim Sh As Worksheet
        For Each Sh In Worksheets
                If InStr(ShChon, "." & Sh.Name & ".") = 0 Then GoTo Tiep
                Sh.Activate
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .RightMargin = Application.InchesToPoints(0)
    End With
    Range( _
        "46:46,91:91,136:136,181:181,226:226,271:271,316:316,361:361,406:406,451:451,496:496" _
        ).Select
    Selection.Insert Shift:=xlDown
Tiep:
        Next Sh
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom