eror 1004

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

MinhK

Thành viên mới
Tham gia
12/1/08
Bài viết
38
Được thích
7
Sub Macro3()
Dim firstnum As Variant, secnum As Variant
firstnum = Sheets("LookUp").[A176]
secnum = Sheets("LookUp").[B176]
Sheets("Sheet1").Select
lRow = [c65432].End(xlUp).Row
Range("A%firstnum%:A%secnum%").Copy Destination:=Sheets("Sheet2").[A%firstnum%] <--- error 1004
End Sub

Xin các bạn dành chút xíu thơi gian sữa lại đoạn code trên

Cảm ơn các ban trươc
 
Mã:
Sub Macro3()
 Dim firstnum As Variant, secnum As Variant
 firstnum = Sheets("LookUp").[A176]
 secnum = Sheets("LookUp").[B176]
 Sheets("Sheet1").Select
 lRow = [c65432].End(xlUp).Row
 Range("A%firstnum%:A%secnum%").Copy Destination:=Sheets("Sheet2").[A%firstnum%] [COLOR="Blue"]' <--- error 1004[/COLOR]
End Sub
Xin các bạn dành chút xíu thơi gian sữa lại đoạn code trên
Cảm ơn các ban trươc

Bạn xem đoạn Code sau & đối chiếu với những gì của bạn!
PHP:
Option Explicit
Sub Macro35()
1 Dim lRow As Long
 Dim SecNum As Range
 Set SecNum = Sheets("LookUp").[B16]
4 Sheets("Sheet1").Select
5 lRow = [c65432].End(xlUp).Row
6 Set SecNum = Union(SecNum, Sheets("Lookup").[A16])
 
 SecNum.Copy Destination:=Sheets("Sheet2").[A16]
 
End Sub
 
Upvote 0
Chào anh Sa_DQ
code
Sub Macro3()
Dim lRow As Long
Dim SecNum As Range, FirstNum As Range
Set FirstNum = Sheets("LookUp").[A176]: MsgBox FirstNum
Set SecNum = Sheets("LookUp").[B176]
Sheets("Sheet2").Select
lRow = [c65432].End(xlUp).Row
Set SecNum = Union(SecNum, Sheets("Lookup").[B176])
Set FirstNum = Union(SecNum, Sheets("Lookup").[B176])
FirstNum.Copy Destination:=Sheets("Sheet2").[A176]
SecNum.Copy Destination:=Sheets("Sheet2").[A176]
End Sub

Rất cảm on anh trả lời sớm, code chạy rồi.

MinhK
 
Upvote 0
Bạn xem đoạn Code sau & đối chiếu với những gì của bạn!
PHP:
Option Explicit
Sub Macro35()
1 Dim lRow As Long
 Dim SecNum As Range
 Set SecNum = Sheets("LookUp").[B16]
4 Sheets("Sheet1").Select
5 lRow = [c65432].End(xlUp).Row
6 Set SecNum = Union(SecNum, Sheets("Lookup").[A16])
 
 SecNum.Copy Destination:=Sheets("Sheet2").[A16]
 
End Sub


Oh, bác SA nên giải thích rõ đi

đến tgtg và nhiều TV # trong choáng hi iiiiiiiiii

cám ơn bác SA trước
 
Upvote 0
Ang Sa_Dq ơi
chạy code thì không bi chi cả.. nhưng sai ý tôi rối !

Range("A%firstnum%:A%secnum%").Copy Destination:=Sheets("Sheet2").[A%firstnum%] : copy range trong khoảng finủm va secnum
Mong anh giup dở cho trót
Xin Cám ón anh lần nữa.
 
Upvote 0
Ang Sa_Dq ơi
chạy code thì không bi chi cả.. nhưng sai ý tôi rối !
Range("A%firstnum%:A%secnum%").Copy Destination:=Sheets("Sheet2").[A%firstnum%] : copy range trong khoảng finủm va secnum
Mong anh giup dở cho trót.
Đến máy nó còn không hiểu nữa là mình; nên mình đoán mò & viết đoạn Code cho máy hiểu mà thôi;
Sau đây mình diễn dịch đoạn Code của mình; Sau đó bạn cho biết í đồ của bạn;
Mà có khi mình dịch xong đoạn Code của mình, thì bạn sẽ tự sửa đoạn Code của bạn để được như í cũng nên;

Câu lệnh 1 là khai báo 1 biến dạng Long, vì biến này mình & bạn xài để xác định số dòng trong CSDL; mà số dòng có khi vượt quá Integer, nên chắc ăn nhứt là khai báo kiểu Long (Tuy mất thêm 1 ít tài nguyên!)
Câu lệnh 2 của bạn khai báo 2 biến loại Object; Như vậy là phí phạm tài nguyên;
Các biến này làm việc với Range, nên cụ thể ta nên khai báo loại Range mà thôi;
Hơn nữa, mình biết phương thức Union() nên khai 1 biến thôi; Trong trường hợp bạn chưa biết phương thức này, thì nên là:
*/ Để biết thêm về phương thức Union() bạn bấm vô phần từ Union của chữ ký của mình;
*/ Bạn có thể dùng lệnh:
Mã:
Set SecNum = Sheets("LookUp").Range("A176:B176")
chân phương để thay thế;
*/ Câu lệnh 4,5 & 1 nữa, bạn & tôi chưa dùng làm gì cả, bạn hãy cho biết í đồ.
Nói rõ thêm; trên workBook của bạn đang có 3 sheets, 1 sheets thứ 3 có tên, 'LooKup'; còn 2 sheets kia có tên mặc định; Như trong chương trình của bạn thì bạn chép từ ô 'A176:B176' (theo mình hiểu) từ sheets("sheet1") sang ô 'A' tương ứng của Sheets("Sheet2")

(Bạn hãy cho biết mình dịch như vậy đúng í bạn chưa, Thân ái & vui vẽ!)
 
Upvote 0
Chào anh Sa_DQ
Xin tạm giải thích nhu sau

Sub Macro3()
Dim firstnum As Variant, secnum As Variant
firstnum = Sheets("LookUp").[A176]
secnum = Sheets("LookUp").[B176]
'1--- Hai câu lệnh trên đọc cell A176 và cell B176 ở sheet "loockup", là 2 tham số cho biết ở từ dòng nào ( firstnum) đến dòng nào ( secnum) cần cập nhật (update) cho sheet2 từ sheet1.
'ví dụ "đọc" đươc firstnum=5000 và secnum 5010. ta có A5000 và A5010
'2--- qua sheet1 để copy và paste vào sheet2 ở cell "A_firstnum" (với thí dụ trên là A5000)
Sheets("Sheet1").Select
' với thí du trên code có thể viết : Range(A5000:A5010).Copy Destination:=Sheets("Sheet2").[A5500]
vì không biết nên code : Range("A%firstnum%:A%secnum%").Copy Destination:=Sheets("Sheet2").[A%firstnum%] bị error 1004
'
End Sub

(cũng có khí 2, 3 columns liền nhau)

Xin lổi đã làm mất thòi giờ anh của một ngày chủ nhãt đẹp.

MinhK
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy thì chỉ thế này là xong thôi, bạn í ơi!

PHP:
Option Explicit
Sub Macro5()
 Dim lRow0 As Long, lRow9 As Long

 lRow0 = Sheets("LookUp").[A16]
 lRow9 = Sheets("LookUp").[B16]
 
3 Sheets("Sheet1").Range("A" & lRow0 & ":A" & lRow9).EntireRow.Copy _
    Destination:=Sheets("Sheet2").Range("A" & lRow0) 
 
End Sub

Còn đây là phần mình 'khuyến mãi':
Dòng lệnh 3 là chép nguyên các dòng từ 'A' & lRow0 cho đến 'iV" & lRow9 sang sheet2

Nhưng trong thực tế, không cần chép nguyên dòng, mà chỉ cần chép vài chục cột, thậm chí vài cột thôi;
Lúc đó ta sửa lại dòng lệnh 3 cho phù hợp, như sau:

1*/ Nếu chỉ cần chép từ cột 'A' đến cột 'H' thì sẽ là:
PHP:
31 Sheets("Sheet1").Range("A" & lRow0 & ":H" & lRow9).Copy _
    Destination:=Sheets("Sheet2").Range("A" & lRow0)
hay là:

PHP:
32 Sheets("Sheet1").Range("A" & lRow0).Resize(lRow9-lRow0,8).Copy _
    Destination:=Sheets("Sheet2").Range("A" & lRow0) 
 ' (Số 8 trong Resize là số cột kể từ ''A'' cần chép)'

2*/ Mình nghỉ rằng với trường hợp chép không bắt đầu từ cột 'A' mà từ cột (VD 'T') bạn sẽ tự ên được!?!
 
Lần chỉnh sửa cuối:
Upvote 0
Chao Anh Sa_DQ
Vân còn Error 1004:

Sheets("Sheet1").Range("A" & lRow0 & ":A" & lRow9).EntireRow.Copy _
Destination:=Sheets("Sheet2").Range("A" & lRow0)

Tôi đang chay lại
 
Upvote 0
Chao Anh Sa_DQ
Tôi khai báo sai ở cột column A là char,---> Gen.

Sheets("Sheet1").Range("A" & lRow0 & ":A" & lRow9).Copy _
Destination:=Sheets("Sheet2").Range("A" & lRow0)

Cãm Ơn anh thật nhiếu.

MinhK
 
Upvote 0
Xin phép Bác Sa tí nhé!
Căn cứ vào code cũ bị lỗi 1004 và bài giải thích mục đích của MinhK, thì đại khái code cũ của MinhK có thể sửa tí tỉnh như sau:
Mã:
Sub Macro3()
Dim FirstNum As [COLOR=red]Long[/COLOR], SecNum As [COLOR=red]Long[/COLOR], lRow As [COLOR=red]Long[/COLOR]
1 FirstNum = Sheets("LookUp").[A176]
2 SecNum = Sheets("LookUp").[B176]
3 Sheets("Sheet1").Select
4 lRow = Sheets("Sheet2").[A65432].End(xlUp).Row [COLOR=red]+ 1[/COLOR]
5 Range("A" [COLOR=red]&[/COLOR] FirstNum [COLOR=red]&[/COLOR] ":A" [COLOR=red]&[/COLOR] SecNum).Copy Destination:=Sheets("Sheet2").Range("A" [COLOR=red]& lRow[/COLOR])
End Sub

(chỗ màu đỏ là sửa, loại biến là Long theo ý của Bác Sa)
Như vậy câu lệnh 3 dùng cho câu lệnh 5, câu lệnh 4 cũng có chỗ dùng.
-----------
Ôi chậm chân rồi!
 
Lần chỉnh sửa cuối:
Upvote 0
Chào anh ptm0412

Cũng xin cảm ơn anh cho thêm 1 câu code. không có gì là "châm mất" vì học biết bao giớ mới xong. Trí óc luôn có chổ chứa cho ..chuyên mới..cũ, không có mới bỏ củ.

Minhk
 
Upvote 0
Chào anh SA_DQ
qua cac code anh Khuyến Mại có 1 đoạn quan trong :

Sheets("Sheet1").Range("A" & lRow0).Resize(lRow9-lRow0,8).Copy _
Destination:=Sheets("Sheet2").Range("A" & lRow0)
' (Số 8 trong Resize là số cột kể từ ''A'' cần chép)'

Nhu vậy nếu muốn copy/paste thì có thể thêm code gì cho:
1-- fomat
2-- Value
3-- fomulas


Ví dụ:
(mong anh đừng cười nhe, chỉ tượng tương mà thối)

Sheets("Sheet1").Range("A" & lRow0).Format .Copy _
Destination
:=Sheets("Sheet2").Range("A" & lRow0)


Sheets("Sheet1").Range("A" & lRow0).Value.Copy _
Destination
:=Sheets("Sheet2").Range("A" & lRow0)


Một cách đơn giãn với code trên nếu muốn copy và paste theo Value , Format hay Fomulas mà thôi thì phải viết như thế nào ?

Cảm ơn anh trước

MinhK
 
Upvote 0
Chú hãy nhờ bộ thu ghi lại những cữ chỉ của chú, nha!

Ghi macro với 3 hành vi:
*/ Copy & paste Special =>> Value
*/ Copy & paste Special =>> Formula
*/ Copy & paste Special =>> Formats
Và nghiền ngẫm những gì VBE đưa ra cho chú!
Chúc vui!
 
Upvote 0
Chao anh SA_Dq

Mảco record:

Sheets("Sheet1").Select
Range("K3205").Select
Selection.Copy
Range("K3208").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Nếu sữ dụng câu này thì dài quá so vói đoạn code
Sheets("Sheet1").Range("A" & lRow0).Resize(lRow9-lRow0,8).Copy _
Destination:=Sheets("Sheet2").Range("A" & lRow0)

Đang suy ngẫm.

Có bạn nào giải cứ tôi không nhỉ. (hì hì. Thầy cho bài khó quá)

Hẹn găp lai anh

MinhK
 
Upvote 0
Chào anh SA_DQ

Sub Macro5()
Dim lRow0 As Long, lRow9 As Long
lRow0 = Sheets("LookUp").[A1]
lRow9 = Sheets("LookUp").[B1]

Sheets("Sheet1").Range("C" & lRow0 & ":C" & lRow9).Copy
Sheets("Sheet2").Range("C" & lRow0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

ngắn hơn thí
Sub Macro6()
Dim lRow0 As Long, lRow9 As Long
lRow0 = Sheets("LookUp").[A1]
lRow9 = Sheets("LookUp").[B1]

Sheets("Sheet1").Range("C" & lRow0 & ":C" & lRow9).Copy
Sheets("Sheet2").Range("C" & lRow0).PasteSpecial Paste:=xlPasteValues
End Sub

ngắn hơn nữa thì B...I Sắc.

Anh mợ lương từ bi nhe
Đương link hay quá, Many Thanks

MinhK
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom