Nhờ cả nhà kiểm tra giúp em code sai chỗ nào ạ. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Nguyễn Thị Én

Thành viên mới
Tham gia
6/7/17
Bài viết
12
Được thích
1
Giới tính
Nữ
Cả nhà ơi, em nhờ chút ạ. Em mới vào học VBA nên chưa hiểu nhiều lắm.
Em có đoạn code này, cả nhà xem giúp em sai ở đâu mà sao em không chạy được ạ.
Em gửi cả file đính kèm ạ.

Sub FILL_PASTE_DELETE()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Columns("A:B").Select
Selection.UnMerge
sh.Range("A2:B2").SelectSelection.Copy
sh.Range("A2:B" & sh.Cells(sh.Rows.Count, "C").End(xlUp).Row).select
ActiveSheet.Paste
sh.Columns("H:H").Select
Application.CutCopyMode = False
Selection.Cut
sh.Columns("E:E").Select
Selection.Insert Shift:=xlToRight
sh.Columns("H:H").Select
Selection.Insert Shift:=xlToRight
sh.Range("G2:G" & sh.Cells(sh.Rows.Count, "C").End(xlUp).Row).Formula = "=$N$2"
Next sh
End Sub

Cái này em muốn làm cùng 1 thao tác trên nhiều sheet, em dùng macro để tạo ra các lệnh đó và copy vào trong code của mình, Vì em mới bắt đầu vào tập viết code nên không hiểu mình sai ở đâu cả. Mong cả nhà chỉ bảo. Em gửi cả file kèm theo code này ạ.
Cả nhà giúp em với. Em cảm ơn cả nhà nhiều ạ.
 

File đính kèm

Cả nhà ơi, em nhờ chút ạ. Em mới vào học VBA nên chưa hiểu nhiều lắm.
Em có đoạn code này, cả nhà xem giúp em sai ở đâu mà sao em không chạy được ạ.
Em gửi cả file đính kèm ạ.

Sub FILL_PASTE_DELETE()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Columns("A:B").Select
Selection.UnMerge
sh.Range("A2:B2").SelectSelection.Copy
sh.Range("A2:B" & sh.Cells(sh.Rows.Count, "C").End(xlUp).Row).select
ActiveSheet.Paste
sh.Columns("H:H").Select
Application.CutCopyMode = False
Selection.Cut
sh.Columns("E:E").Select
Selection.Insert Shift:=xlToRight
sh.Columns("H:H").Select
Selection.Insert Shift:=xlToRight
sh.Range("G2:G" & sh.Cells(sh.Rows.Count, "C").End(xlUp).Row).Formula = "=$N$2"
Next sh
End Sub

Cái này em muốn làm cùng 1 thao tác trên nhiều sheet, em dùng macro để tạo ra các lệnh đó và copy vào trong code của mình, Vì em mới bắt đầu vào tập viết code nên không hiểu mình sai ở đâu cả. Mong cả nhà chỉ bảo. Em gửi cả file kèm theo code này ạ.
Cả nhà giúp em với. Em cảm ơn cả nhà nhiều ạ.
Thay gì tìm code sai chổ nào thì sao bạn không mô tả mục đích của bạn là gì? Lúc này anh em sẽ dễ giúp đỡ hơn có khi code sẽ nhanh hơn của bạn nhiều.
 
Upvote 0
Cảm ơn bạn nhiều.
Tất cả các sheet của mình đều có cấu trúc giống nhau:
1. Bỏ mailmerge ở côt A và B, copy thông tin từ dòng A2 và B2 xuống các dòng có thông tin khác. Ví dụ ở sheet C9-K5: mình muốn copy dữ liệu từ ô A2 và B2 xuống đến ô A6 và B6.
2. Chuyển cột chiều dài một thanh sang bên cạnh cột đường kính (mm)
3. Thêm 1 cột ở giữa cột số thanh /1 cấu kiện và tổng số thanh. Giá trị của các ô của cột thêm vào bằng giá trị của ô M2.
4. Sau đó copy dữ liệu của tất cả các sheet trong worksheet này sang 1 worksheet mới khác khác.
Mình gửi file đính kèm, nhờ mọi người giúp mình nhé.
 

File đính kèm

Upvote 0
Và mình muốn làm thao tác trên tất cả các sheet giống như các thao tác mình vừa ghi ở trên
 
Upvote 0
Bạn chạy macro này xem có thỏa $01 của bạn chưa?
PHP:
Sub FILL_PASTE_DELETE()
 Dim Sh As Worksheet
 Dim Rws As Long
 For Each Sh In ActiveWorkbook.Worksheets
    With Sh
        Rws = .[b1].CurrentRegion.Rows.Count - 1
'        Sh.Columns("A:B").Select   '
'        Selection.UnMerge  '
        .Columns("A:B").UnMerge
'        .Range("A2:B2").SelectSelection.Copy   '
'         .Range("A2:B2").Copy  '
'        .Range("A2:B" & Sh.Cells(Sh.Rows.Count, "C").End(xlUp).Row).Select '
         .[a2].Resize(Rws).Value = [a2].Value
         .[B2].Resize(Rws).Value = [B2].Value
'        ActiveSheet.Paste  '
'        Sh.Range("A2:B" & Sh.Cells(Sh.Rows.Count, "C").End(xlUp).Row).Select   '
'        ActiveSheet.Paste  '

        GoTo GPE
       
        Sh.Columns("H:H").Select
        Application.CutCopyMode = False
        Selection.Cut
        Sh.Columns("E:E").Select
        Selection.Insert Shift:=xlToRight
        Sh.Columns("H:H").Select
        Selection.Insert Shift:=xlToRight
        Sh.Range("G2:G" & Sh.Cells(Sh.Rows.Count, "C").End(xlUp).Row).Formula = "=$N$2"
GPE:
    End With
 Next Sh
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom