Nhờ giải thích lỗi code

Liên hệ QC

tuan_anhbm

Thành viên thường trực
Tham gia
16/7/09
Bài viết
253
Được thích
1,605
Mấy anh em cho tôi hỏi code sau bị lỗi gì. Nhìn vào code chắc các bạn có thể hiểu được much đích nên tôi chỉ miêu tả lỗi: Khi chạy, dòng lệnh tô đậm cho kết quả sai (do chỉ số i biến thiên không đúng). Thay bởi dòng lệnh bên dưới thì lại OK. Không hiểu sao nữa.
Mã:
[FONT=Tahoma]Sub Macro1()[/FONT]
[FONT=Tahoma]Sheets("PTVT").Select[/FONT]
[FONT=Tahoma]   For Each Rg In [B7].Resize(30000).SpecialCells(2)[/FONT]
[FONT=Tahoma]       i = Rg.Offset(0, -1).End(xlUp).Row[/FONT]
[B][FONT=Tahoma]       [B]'Rg(1, 6) = "=ROUND(R[" & -i & "]C[-2]*RC[-1],3)"[/B][/FONT][/B]
[FONT=Tahoma]       Rg(1, 6) = "=ROUND(E" & i & "*F" & Rg.Row & ",3)"[/FONT]
[FONT=Tahoma]   Next[/FONT]
[FONT=Tahoma]End Sub[/FONT]
Mong được chỉ giáo, cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn tìm giùm Rg(1,6) nằm ở đâu? (Sai cú pháp rồi, có lẽ bạn định viết Rg.Cells(i,6)
 
Upvote 0
To Sealand: Rg(1, 6) là đúng ý tôi bạn à, không phải i đâu, Rg(1, 6) là những ô có dữ liệu thuộc cột B (dịch qua G), theo tuần tự từ trên xuống dưới, vì câu lệnh dưới nó cho kết quả đúng mà?
Thử thay Rg(1, 6) bởi Rg.Offset(0, 5) xem có phải do sai cú pháp không cũng vẫn vậy.
Nhờ bạn xem lại giúp.
 
Lần chỉnh sửa cuối:
Upvote 0
Mấy anh em cho tôi hỏi code sau bị lỗi gì. Nhìn vào code chắc các bạn có thể hiểu được much đích nên tôi chỉ miêu tả lỗi: Khi chạy, dòng lệnh tô đậm cho kết quả sai (do chỉ số i biến thiên không đúng). Thay bởi dòng lệnh bên dưới thì lại OK. Không hiểu sao nữa.
Mã:
[FONT=Tahoma]Sub Macro1()[/FONT]
[FONT=Tahoma]Sheets("PTVT").Select[/FONT]
[FONT=Tahoma]   For Each Rg In [B7].Resize(30000).SpecialCells(2)[/FONT]
[FONT=Tahoma]       i = Rg.Offset(0, -1).End(xlUp).Row[/FONT]
[B][FONT=Tahoma]       [B]'Rg(1, 6) = "=ROUND(R[" & -i & "]C[-2]*RC[-1],3)"[/B][/FONT][/B]
[FONT=Tahoma]       Rg(1, 6) = "=ROUND(E" & i & "*F" & Rg.Row & ",3)"[/FONT]
[FONT=Tahoma]   Next[/FONT]
[FONT=Tahoma]End Sub[/FONT]
Mong được chỉ giáo, cảm ơn.
Cái này:
Rg(1, 6) = "=ROUND(R[" & -i & "]C[-2]*RC[-1],3)"
sửa thành vầy mới đúng
Rg(1, 6) = "=ROUND(R" & i & "C[-2]*RC[-1],3)"
 
Upvote 0
Cái này:
Rg(1, 6) = "=ROUND(R[" & -i & "]C[-2]*RC[-1],3)"
sửa thành vầy mới đúng
Rg(1, 6) = "=ROUND(R" & i & "C[-2]*RC[-1],3)"

Sao em load file của bạn tuan_anhbm về vẫn chạy bình thường (không báo lỗi)- Chỉ cho kết quả không đúng. Sau đó copy đoạn code sư phụ sửa vẫn không lỗi (cho kết quả đúng)?
 
Lần chỉnh sửa cuối:
Upvote 0
Sao em load file của bạn tuan_anhbm về vẫn chạy bình thường (không báo lỗi)- Chỉ cho kết quả không đúng. Sau đó copy đoạn code sư phụ sửa vẫn không lỗi (cho kết quả đúng)?
Thì vấn đề nằm ở chổ KẾT QUẢ KHÔNG ĐÚNG thôi (do tham chiếu sai) chứ code trên chẳng lỗi gì cả!
Tác giả nói rõ vầy rồi còn gì:
miêu tả lỗi: Khi chạy, dòng lệnh tô đậm cho kết quả sai (do chỉ số i biến thiên không đúng).
 
Upvote 0
Tôi đã hiểu... Thêm 1 bài học mới. Cảm ơn sư phụ NDU thật nhiều. Chúc sư phụ dồi dào sức khỏe!
---------
Cho hỏi thêm sau khi đã check file:
Code sau khi sửa cho công thức trong cột G có kèm theo dấu $, ví dụ ô G10: =ROUND(E$8*F10;3)
Có cách nào bỏ dấu $ được không? Vì tôi chỉ muốn kết quả là: =ROUND(E8*F10;3) như kết quả của dòng code bên dưới.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đã hiểu... Thêm 1 bài học mới. Cảm ơn sư phụ NDU thật nhiều. Chúc sư phụ dồi dào sức khỏe!
---------
Cho hỏi thêm sau khi đã check file:
Code sau khi sửa cho công thức trong cột G có kèm theo dấu $, ví dụ ô G10: =ROUND(E$8*F10;3)
Có cách nào bỏ dấu $ được không? Vì tôi chỉ muốn kết quả là: =ROUND(E8*F10;3) như kết quả của dòng code bên dưới.
Không được nếu dùng tham chiếu kiểu R1C1
Muốn như bạn thì đành viết code theo kiểu 2 vậy
 
Upvote 0
Web KT

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

Back
Top Bottom