Hỏi đáp : lỗi 1004

Liên hệ QC

vn.danhmay

Thành viên mới
Tham gia
8/11/18
Bài viết
41
Được thích
3
Em có viết đoạn code để copy dữ liệu từ bảng công ty sang một sheet khác để tổng hợp. Nhưng nó bị lỗi 1004 ạ
Điều kiện là cho dòng cần lấy dữ liệu từ 2 tới 10 ạ
Em cám ơn ạ
Mã:
Sub Copy()

Dim i, j As Integer

For i = 2 To 10

Application.Sheets("phuluc").Select
Range("H2").Formula = i
Range("A1:F10").Select
Selection.Copy
Application.Sheets("congty").Select
With Sheets("congty")
Range(Cells(1, j)).Select
Range(Cells(1, j)).Pastespcial xlPasteValue
End With
j = j + 13
Next i

End Sub
 

File đính kèm

1. Lỗi xác định đối tượng,
Range( tên ô hoặc tham chiếu), code Range(Cells(1, j)) sẽ trả về Range(1 giá trị của Cells(1, j)), nếu Cells(1, j) có kết quả là tên ô hoặc tham chiếu thì Range thực thi, ngược lại xảy ra lỗi.
Đã xác định được Cells(1, j) thì có thể bỏ qua Range, code Cells(1, j).Select
2. Nên khai báo biến i
3. Biến j as Integer, giá trị mặc định là 0, nếu đưa vào Cells(1, j) = Cells(1, 0) => Lỗi. Vậy có thể truyền j = 1 (nếu muốn Cells(1, j) trả về ô A1 trước) thì đặt trước For. Nếu muốn Cells(1, j) trả về ô M1 thì đưa j = j + 13 về trước lệnh sử dụng biến j.
 
Upvote 0
Mã:
Sub Copy()

Dim i, j As Integer
j = 1

For i = 2 To 10

Application.Sheets("Phuluc").Select
Range("H2").Formula = i
Range("A1:F10").Select
Selection.Copy
Application.Sheets("congty").Select
ActiveSheet.Range("A1").Offset(j, 0).PasteSpecial xlPasteValue
j = j + 13
Next i

End Sub

Em sửa lại thế này vẫn bị lỗi :(
 
Upvote 0
Sử dụng phương thức PastSpecial cần khai báo đầy đủ.
Với yêu cầu của bạn, dựa trên code bạn viết, có thể tham khảo code sau:
Mã:
Sub Copy()
Dim i As Byte, j As Integer
For i = 2 To 10
    Sheets("phuluc").Range("G2") = i
    Sheets("phuluc").Activate
    Sheets("congty").Range("A1:F10").Offset(j) = Range("A1:F10").Value
    j = j + 13
Next i
Sheets("congty").Select
End Sub
 
Upvote 0
Mã:
Sub Copy()

Dim i, j As Integer
j = 1

For i = 2 To 10

Application.Sheets("Phuluc").Select
Range("H2").Formula = i
Range("A1:F10").Select
Selection.Copy
Application.Sheets("congty").Select
ActiveSheet.Range("A1").Offset(j, 0).PasteSpecial xlPasteValue
j = j + 13
Next i

End Sub

Em sửa lại thế này vẫn bị lỗi :(
Tại bạn lười kiểm soát lỗi chính tả code của mình.
Trong bài #1, bạn gõ nhầm tên phương thức: Pastespcial - đáng lẽ phải là Pastespecial
Trong bài #3, bạn chỉnh nó rồi nhưng vẫn còn nhầm hằng số tham: xlPasteValue - đáng lẽ phải là xlPasteValues
Vì xlPasteValue không hề được hệ thống khai báo là hằng cho nên nó được coi là một biến. Biến này là Empty cho nên phương thức PasteSpecial chết tại chỗ. Nếu bạn đăt thêm dòng Option Explicit sẽ thấy báo lỗi compile không được vì biến chưa khai báo.

Chú: nếu sửa lại xlPasteValues thì code sẽ chạy. Ra kết quả đúng hay sai thì tôi không biết.
 
Upvote 0
Nhìn chung chủ bài đăng đang cẩu thả, cả trong VBA lẫn công thức tính trên các trang.
1 Trong VBA: (Từ những "cái" rất nhỏ như: )
Khai báo biến:
Mã:
Dim i, j As Integer
Nên Là:
PHP:
Dim I As Integer, J As Integer
Tên trang tính thay vì 'phuluc' nên là 'PhuLuc' & 'congty' => 'CongTy'
Bỡi viết ẩu tả nên sai chính tả như bài trên đã nêu
Bạn cần thông suốt câu ông bà ta để lại: 'Sai con toán bán con trâu'
. . . .
2. Các công thức trên trang 'PhụLuc' đang báo lỗi tùm lum; vậy mà bạn không sửa hay bẫy lỗi & cứ thế đưa lên DĐ
Khi VBA gặp mấy công thức của bạn sẽ chê & bỏ chạy ngay tấp lự!
. . . . . .
(Đó là những câu từ cuối cùng trước khi mình bỏ chạy khỏi bài đăng của bạn!)

Chúc ngày cuối tuần vui vẻ!
 
Upvote 0
Nhìn chung chủ bài đăng đang cẩu thả, cả trong VBA lẫn công thức tính trên các trang.
1 Trong VBA: (Từ những "cái" rất nhỏ như: )
Khai báo biến:
Mã:
Dim i, j As Integer
Nên Là:
PHP:
Dim I As Integer, J As Integer
Tên trang tính thay vì 'phuluc' nên là 'PhuLuc' & 'congty' => 'CongTy'
Bỡi viết ẩu tả nên sai chính tả như bài trên đã nêu
Bạn cần thông suốt câu ông bà ta để lại: 'Sai con toán bán con trâu'
. . . .
2. Các công thức trên trang 'PhụLuc' đang báo lỗi tùm lum; vậy mà bạn không sửa hay bẫy lỗi & cứ thế đưa lên DĐ
Khi VBA gặp mấy công thức của bạn sẽ chê & bỏ chạy ngay tấp lự!
. . . . . .
(Đó là những câu từ cuối cùng trước khi mình bỏ chạy khỏi bài đăng của bạn!)

Chúc ngày cuối tuần vui vẻ!

Cám ơn bác đã góp ý. Phần lỗi bên code VBA em xin nhận. Còn File excel thì những công thức ấy bị Value thì không ảnh hưởng đến công thức VBA vì em đang làm file mẫu.
Bác góp ý kiểu xỉa xói cạnh khóe thì em thua. Cám ơn những lời vàng ngọc của bác :)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom