Sửa lại macro bị lỗi sửa công thức (1 người xem)

Liên hệ QC

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

excel_excel

Thành viên mới
Tham gia
12/3/13
Bài viết
4
Được thích
0
Thưa các pro, em có một đoạn mã macro bị lỗi mà không biết sửa thế nào nên đưa ra diễn đàn, rất mong các pro giúp đỡ.
Đây là ảnh trang excel, em gửi lên cho các pro dễ hình dung
untitled.JPG
Em có đoạn mã như sau
Mã:
'
[PHP]Dim i As Integer
i = ActiveCell.Offset(0, -2).Value

    ActiveCell.FormulaR1C1 = _
        "=('[Thuc pham T02.xlsx]i'!R87C6+'[Thuc pham T02.xlsx]i'!R88C6)/1000"[/PHP]
Công việc em muốn đoạn macro thực hiện là: thay đổi công thức ở ô hiện tại. Em muốn lấy dữ liệu tại sheet trùng với ngày tại côt A của dòng hiện tại (chính là cái biến i đó ạ). Nhưng em làm mà cứ bị báo lỗi ở dòng sửa công thức đó ạ. Em mới tập tành VB nên chưa biết gì, rất mong các pro đi trước giúp đỡ ạ. Hoặc pro nào có cách làm nào đoen giản không cần dùng macro để xử bài này thì càng tốt. Em xin cảm ơn cả nhà trước
 

File đính kèm

  • file anh.JPG
    file anh.JPG
    40.3 KB · Đọc: 7
  • Book1.xls
    Book1.xls
    29.5 KB · Đọc: 14
Đoạn mã
Dim i
As
Integeri = ActiveCell.Offset(0, -2).Value
làm gì có kiểu Integeri

Và cũng khôgn có cú pháp
Dim a as integer = <biểu thức>
 
Upvote 0
Đoạn mã
Dim i
As
Integeri = ActiveCell.Offset(0, -2).Value làm gì có kiểu Integeri

Và cũng khôgn có cú pháp
Dim a as integer = <biểu thức>

Dạ, cảm ơn bác đã quan tâm trả lời câu hỏi của em. Thật may quá không em tưởng câu hỏi của em nó mốc lên mất. --=0Thực ra lỗi đó là do lúc em up lên nó sai. Đúng ra macro trong máy em là
Mã:
[COLOR=#0000BB]Dim i [/COLOR][COLOR=#007700]As [/COLOR]Integer

[COLOR=#000000][COLOR=#0000BB]i [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]ActiveCell[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700], -[/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value[/COLOR][/COLOR]
Thiếu cái dấu cách ạ. Còn dòng lỗi của em khi chạy debug là dòng dưới đây cơ ạ.
Mã:
[/COLOR][/COLOR][COLOR=#000000][COLOR=#0000BB]ActiveCell[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]FormulaR1C1 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]_        [/COLOR][COLOR=#DD0000]"=('[Thuc pham T02.xlsx]i'!R87C6+'[Thuc pham T02.xlsx]i'!R88C6)/1000" [/COLOR][/COLOR]
[COLOR=#000000][COLOR=#0000BB]
Em muốn là khi ở dòng tương ứng với ngày nào thì sẽ lấy sheet của ngày đó (chính là giá trị i). Tức là ngày 1 thì lấy sheet 1, ngày 2 thì lấy sheet 2... thì phải làm thế nào ạ. Mong bác xem lại giúp em lần nữa ạ. Em cảm ơn bác trước %#^#$
 
Upvote 0
File bạn gửi phải có đoạn mã để tiện hiểu bạn muốn làm gì. Và có cả file liên kết
[Thuc pham T02.xlsx]

Tôi chỉ đoán:
- Có thể bạn mở file trong Excel 2003 thì 2003 không hiểu file của 2007 (có đuôi .xlsx) trong công thức.
- Cách viết
'[Thuc pham T02.xlsx]i'!R87C6
sẽ được Excel hiểu chữ i màu xanh đó là văn bản chứ nó không thay giá trị của biến i, vì nó nằm trong 2 nháy đơn
 
Lần chỉnh sửa cuối:
Upvote 0
File bạn gửi phải có đoạn mã để tiện hiểu bạn muốn làm gì. Và có cả file liên kết
[Thuc pham T02.xlsx]

Tôi chỉ đoán:
- Có thể bạn mở file trong Excel 2003 thì 2003 không hiểu file của 2007 (có đuôi .xlsx) trong công thức.
- Cách viết
'[Thuc pham T02.xlsx]i'!R87C6
sẽ được Excel hiểu chữ i màu xanh đó là văn bản chứ nó không thay giá trị của biến i, vì nó nằm trong 2 nháy đơn

Dạ, trước hết em rất cảm ơn bác và mọi người đã quan tâm trả lời câu hỏi của em. File gốc của em nặng nên em tạo file minh họa rồi gửi ạ. Điều em muốn là ở trong book1, cột thực phẩm nhân viên ngày 1 sẽ bằng '[Thucpham.xlsx]1'!$B$3+'[Thucpham.xlsx]1'!$B$4, ngày 2 ='[Thucpham.xlsx]2'!$B$3+'[Thucpham.xlsx]2'!$B$4.v.v. Tức là ngày nào thì lấy sheet ngày đó. Em dùng fill thì nó không đổi tên sheet. Em tính cho cái macro của em chạy với thuật toán là: khi đang ở cột C, dò sang cột A tìm giá trị ngày mấy rồi gán cho i, sau đó tìm đến sheet i. Nhưng có vẻ đúng như bác đoán, nó không nhận i là biến hay sao ấy bác ạ. Với lại thuật toán của em thì nó không tối ưu vì không cho chạy biến -+*/Em nghĩ không cần dùng macro chắc cũng giải quyết được bài này nhưng em không biết làm thế nào vì đang gà quá. Rất mong bác haonlh và mọi người quan tâm trả lời giúp em. Em cảm ơn các bác trước %#^#$
 
Upvote 0
Nếu bạn muốn sử dụng công thức trong file thì có thể chỉnh sửa lại code như thế này:
[GPECODE=vb]Sub Test()
Dim Cll As Range, Wb As Workbook
On Error Resume Next
Set Wb = Workbooks.Open(ThisWorkbook.Path & "\Thucpham.xlsx")
ThisWorkbook.Activate
For Each Cll In Sheets("Sheet1").Range("A9:A" & Sheets("Sheet1").[A65536].End(xlUp).Row)
Cll.Offset(, 2).FormulaR1C1 = "='[Thucpham.xlsx]" & Cll & "'!R3C2+'[Thucpham.xlsx]" & Cll & "'!R4C2"
Next
Wb.Close False
End Sub[/GPECODE]
Mà tôi nghĩ là đã sử dụng code thì chẳng có lý do gì mà ta lại đặt công thức vào file cả, cứ lấy giá trị từ file kia mà đưa qua có phải hay hơn không.
 
Upvote 0

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

Back
Top Bottom