Sửa code của macro

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

ditimdl

Thành viên thường trực
Tham gia
11/10/06
Bài viết
378
Được thích
107
Giới tính
Nam
Nghề nghiệp
Pharmacist
PHP:
Sub Macro1()
'
' Macro1 Macro
'
'
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C2"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C3"
    Range("c1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C4"
    Range("d1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C5"
End Sub

Em ghi macro trên để lấy thông tin từng ô trong 1file. Vậy code trên có thể viết lại như thế nào mà vẫn đáp ứng được công việc như trên?
 
PHP:
Sub Macro1()
'
' Macro1 Macro
'
'
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C2"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C3"
    Range("c1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C4"
    Range("d1").Select
    ActiveCell.FormulaR1C1 = "=[BENHAN_BAOHIEM.xlsx]BENHAN!R5C5"
End Sub
Em ghi macro trên để lấy thông tin từng ô trong 1file. Vậy code trên có thể viết lại như thế nào mà vẫn đáp ứng được công việc như trên?
PHP:
Sub ThayThe()
with sheets("BENHAN_BAOHIEM")
range("A1").value=.cells(5,2)
range("B1").value=.cells(5,3)
range("C1").value=.cells(5,4)
range("D1").value=.cells(5,5)
end with
end sub
Đó là cách dễ hiểu nhất
Còn không
PHP:
Sub ThayThe()
with sheets("BENHAN_BAOHIEM")
fot i = 1 to 4
Cells(1,i)=.Cells(5,i+1)
next
end with
end sub
 
Upvote 0
BENHAN_BAOHIEM là 1file không được mở ra. Em ghi macro để lấy dữ liệu từ file BENHAN_BAOHIEM? Code của Anh ThuNghi là thao tác trên sheet? Với macro trên nếu em copy công thức A1, B1, C1,..Xuống A10, B10, C10... thì phải thêm như thế nào? (Em tập ghi macro và đối chiếu với code các anh chị edit và thêm vào để học hỏi thêm)
 
Lần chỉnh sửa cuối:
Upvote 0
Gọn nhất là vầy:
PHP:
Sub Thaythe()
    SourceFile = ThisWorkbook.Path & "\BENHAN_BAOHIEM.xls"
    Workbooks.Open Filename:=SourceFile
    ThisWorkbook.Sheets(1).Range("A1:D1").FormulaArray = "=[BENHAN_BAOHIEM.xls]Benhan!R5C2:R5C5"
    Windows("BENHAN_BAOHIEM.xls").Close (False)
End Sub
(Giã sử rằng file nguồn và đích cùng 1 thư mục)
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng là file nguồn và đích nằm cùng 1 thư mục. Nếu em muốn copy vùng A1:D1 xuống A10:D10 thì phải sửa thêm thế nào vậy?
 
Upvote 0
Đúng là file nguồn và đích nằm cùng 1 thư mục. Nếu em muốn copy vùng A1:D1 xuống A10:D10 thì phải sửa thêm thế nào vậy?
Có phải ý bạn là kéo fill công thức xuống không? Vậy sao bạn không record macro thử xem code viết thế nào?
Thú thật là tôi vẩn còn kém vụ VBA này lắm, nhất là việc lấy dử liệu từ 1 file khác
(dù đã đọc code của rất nhiều cao thủ nhưng vẩn chưa nắm bắt được cốt lổi vấn đề)
 
Upvote 0
Em fill thì nó ghi lại như sau:
PHP:
range("A1:D1").select
selection.autofill destination:= range("A10:D10")
Có cách viết khác mà vẫn cho ra kết quả như trên ko?
 
Upvote 0
Em fill thì nó ghi lại như sau:
PHP:
range("A1:D1").select
selection.autofill destination:= range("A10:D10")
Có cách viết khác mà vẫn cho ra kết quả như trên ko?
Chả hiểu câu lệnh trên, hay bạn làm Ex2007.
Còn không nếu Copy A1:D1 sang A10:D10
thì chỉ cần
Range("A1:D1").Value=Range("A10:D10").Value
thì sửa như sau
Range("A10:D10").Formula = Range("A1:D1").Formula
 
Upvote 0
Chả hiểu câu lệnh trên, hay bạn làm Ex2007.
Còn không nếu Copy A1:D1 sang A10:D10
thì chỉ cần
Range("A1:D1").Value=Range("A10:D10").Value
Nhưng đây đang nói copy công thức mà ThuNghi
???
Mà nếu bạn ditimdl muốn file công thức xuống 9 dòng nữa thì tại sao không ghi vào code ở trên luôn? Chẳng hạn:

Mã:
Sub Thaythe()
    SourceFile = ThisWorkbook.Path & "\BENHAN_BAOHIEM.xls"
    Workbooks.Open Filename:=SourceFile
    ThisWorkbook.Sheets(1).Range("A1:D[COLOR=Red][B]10[/B][/COLOR]").FormulaArray = "=[BENHAN_BAOHIEM.xls]Benhan!R5C2:R[B][COLOR=Red]14[/COLOR][/B]C5"
    Windows("BENHAN_BAOHIEM.xls").Close (False)
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dựa vào code trên cho em hỏi tiếp 1 xíu. Giả sử em có 2file (File1 và File2)
Em muốn copy vùng A1:D100 trong sheet1 của file1(File này đang đóng) và paste vào ô A1 của sheet1 trong file2 thì viết code như thế nào?
Cảm ơn!
 
Upvote 0
Web KT

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

Back
Top Bottom