xin giúp đỡ sửa lỗi chạy code vba

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Em dán đúng nơi rồi nhưng khi chạy thì không được ạ. Khi chạy F8 nó không báo lỗi nhưng cũng không thực thi lệnh copy và dán mới. còn khi "I5" có giá trị thay đổi thì code cũng không hoạt động ạ.
Tên sheet của bạn có giống hình trên kia không. hay nó vẫn là tiếng việt thế
 
Ở máy tính mình chạy bình thường.
Vâng em cảm ơn bác. để em tìm cách mở fire wall để chạy được macro xem sao
Bài đã được tự động gộp:

Em cảm ơn các bác đã nhiệt tình giúp đỡ em ạ
Bài đã được tự động gộp:

Em tắt tường lửa nên đã mở được file nhưng cũng không chạy được ạ.:(
khi em nhập thủ công vào ô "I5" thì code mới hoạt động
 
Lần chỉnh sửa cuối:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("I5")) Is Nothing Then
LAM_MOI
End If
End Sub
Mình test code này trên file đầu tiên up lên. Chạy bình xường.
khi em nhập thủ công vào ô "I5" thì code mới hoạt động
Thì phải thay đổi I5 thì mới chạy mà. Phải có Change chứ.
 
Mình test code này trên file đầu tiên up lên. Chạy bình xường.

Thì phải thay đổi I5 thì mới chạy mà. Phải có Change chứ.
Em lại muốn không cần nhập dữ liệu vào ô "I5" cơ bác. Nếu nhập dữ liệu trực tiếp vào "I5" thì không có gì để nói. Trong file ô "i5" em để công thức báo số tháng khi tháng thay đổi thì sẽ tự động chạy macro ấy ạ. Nếu làm được code này thì ứng dụng vào nhiều cái hay hơn. Em cũng có thử mấy code có code thì chạy được nhưng không tự dừng.
Bài đã được tự động gộp:

Vẫn chưa rõ lắm bạn ấy vận hành thế nào, cứ diễn giải một đường, khi đưa file lên lại một nẻo.
Trong file ô "I5" của em là tháng tự thay đổi. Em muốn khi tháng thay đổi thì sẽ chạy code làm mới ấy ạ
 
Em lại muốn không cần nhập dữ liệu vào ô "I5" cơ bác. Nếu nhập dữ liệu trực tiếp vào "I5" thì không có gì để nói. Trong file ô "i5" em để công thức báo số tháng khi tháng thay đổi thì sẽ tự động chạy macro ấy ạ. Nếu làm được code này thì ứng dụng vào nhiều cái hay hơn. Em cũng có thử mấy code có code thì chạy được nhưng không tự dừng.
Bài đã được tự động gộp:


Trong file ô "I5" của em là tháng tự thay đổi. Em muốn khi tháng thay đổi thì sẽ chạy code làm mới ấy ạ
Mã:
Private Sub Worksheet_Calculate()
Set cels = ActiveCell
Application.EnableEvents = False
LAM_MOI
Application.EnableEvents = True
cels.Select
End Sub
Khỏi xóa luôn, auto dán.
 
Trong vòng 4 tiếng đồng hồ, gần 50 bài trao qua lại vẫn chưa thấy tới đâu.
Thớt này có kỹ năng diễn tả vấn đề siêu thật.
 
Có ba chuyện đọc code là thấy ngay:
1. Code này không lặp vô tận mới là chuyện lạ: Lúc nào mà chẳng True?
Mã:
Set Xrg = Range("I5")  
If Not Intersect(Xrg, Range("I5")) Is Nothing Then
2. Sự kiện Change của sheet chạy dựa trên sự thay đổi của target, nhưng không chạy khi giá trị target bị thay đổi bởi công thức. Chỉ chạy khi sửa trực tiếp vào target.
3. Sự kiện Calculate không có tham số target, bất cứ khi nào sheet được tính toán lại đều chạy. Hễ có thay đổi ở bất cứ ô nào, range nào, hễ có ít nhất 1 công thức trên sheet là code chạy. Ngoài ra khi mở file cũng chạy, khi lưu cũng chạy và khi đóng cũng chạy.
Nếu 3 việc này không biết thì có file cũng như không.
 
Có ba chuyện đọc code là thấy ngay:
1. Code này không lặp vô tận mới là chuyện lạ: Lúc nào mà chẳng True?
Mã:
Set Xrg = Range("I5") 
If Not Intersect(Xrg, Range("I5")) Is Nothing Then
2. Sự kiện Change của sheet chạy dựa trên sự thay đổi của target, nhưng không chạy khi giá trị target bị thay đổi bởi công thức. Chỉ chạy khi sửa trực tiếp vào target.
3. Sự kiện Calculate không có tham số target, bất cứ khi nào sheet được tính toán lại đều chạy. Hễ có thay đổi ở bất cứ ô nào, range nào, hễ có ít nhất 1 công thức trên sheet là code chạy. Ngoài ra khi mở file cũng chạy, khi lưu cũng chạy và khi đóng cũng chạy.
Nếu 3 việc này không biết thì có file cũng như không.
Có cách nào khắc phục được vấn đề không ạ. em không rõ về vba excel ạ
 
Có cách nào khắc phục được vấn đề không ạ. em không rõ về vba excel ạ
Tôi giải thích đúng chỗ "không rõ" rồi.
Tại sao lặp vô tận: đừng dùng câu lệnh đó nữa
Tại sao chạy hoài: Đừng dùng calculate nữa
Tại sao phải sửa tay mới chạy, thay đổi bằng công thức mới chạy: Thì đừng dùng ô chứa công thức làm target nữa
 
Tôi giải thích đúng chỗ "không rõ" rồi.
Tại sao lặp vô tận: đừng dùng câu lệnh đó nữa
Tại sao chạy hoài: Đừng dùng calculate nữa
Tại sao phải sửa tay mới chạy, thay đổi bằng công thức mới chạy: Thì đừng dùng ô chứa công thức làm target nữa
Vâng , em cảm ơn. em sẽ tìm hiểu hơn về code vba
 
Tại sao phải sửa tay mới chạy, thay đổi bằng công thức mới chạy: Thì đừng dùng ô chứa công thức làm target nữa
Cháu cũng từng góp ý với thớt thay cách khác. Thới nói thớt lười. Đó là lý do có vẻ sao sao ấy. Có lẽ để thớt từ tìm cách có khi hay hơn là cứ cố làm những thứ mà không kiểm soát được chính nó. Còn nếu đã không biết nhiều mà lại muốn dùng cách không thể kiểm soát được thì có vẻ hơi mạo hiểm
 
Mã:
Private Sub Worksheet_Calculate()
Set cels = ActiveCell
Application.EnableEvents = False
LAM_MOI
Application.EnableEvents = True
cels.Select
End Sub
Khỏi xóa luôn, auto dán.
Code này test kỹ chưa? Nhúc nhích 1 cái là chạy "LAM_MOI" copy dán. Chưa nói đến việc code đã chạy qua sheet khác copy dán ở sheet đó rồi, cels.Select không bị mắng mới là lạ.
 
Code này test kỹ chưa? Nhúc nhích 1 cái là chạy "LAM_MOI" copy dán. Chưa nói đến việc code đã chạy qua sheet khác copy dán ở sheet đó rồi, cels.Select không bị mắng mới là lạ.
Cứ 1 lệnh là chạy bác ạ, nên em mới Select cels, không thì nó chọn hết range paste, nhưng được cái là chạy liên tục, không phải lăn tăn change hay không. Chớp chớp tí nhưng chắc không sao.

Tác giả cần thì chắc biết sửa chỗ này bác ạ, em đào mộ tí ra ngay. Mấy cái auto này với em cứ loạn hết cả lên. Món này cũng ít bài thảo luận bác ạ.

Lúc đầu em còn set target = sheet1. Range("i5") thế mới máu, mà chưa thấy ai làm kiểu đấy. :wallbash: :wallbash: :wallbash:
 
Cứ 1 lệnh là chạy bác ạ, nên em mới Select cels, không thì nó chọn hết range paste, nhưng được cái là chạy liên tục, không phải lăn tăn change hay không. Chớp chớp tí nhưng chắc không sao.

Tác giả cần thì chắc biết sửa chỗ này bác ạ, em đào mộ tí ra ngay. Mấy cái auto này với em cứ loạn hết cả lên. Món này cũng ít bài thảo luận bác ạ.

Lúc đầu em còn set target = sheet1. Range("i5") thế mới máu, mà chưa thấy ai làm kiểu đấy. :wallbash: :wallbash: :wallbash:
Code vẫn chưa đúng với mục đích của em. ý định của em là chỉ khi ô "i5" công thức thay đổi sẽ làm mới. nhưng code này thì bất cứ em chỉnh sửa ô nào trên trang tính thì cũng làm mới mất rồi
 
Cứ 1 lệnh là chạy bác ạ, nên em mới Select cels, không thì nó chọn hết range paste, nhưng được cái là chạy liên tục, không phải lăn tăn change hay không. Chớp chớp tí nhưng chắc không sao.

Tác giả cần thì chắc biết sửa chỗ này bác ạ, em đào mộ tí ra ngay. Mấy cái auto này với em cứ loạn hết cả lên. Món này cũng ít bài thảo luận bác ạ.

Lúc đầu em còn set target = sheet1. Range("i5") thế mới máu, mà chưa thấy ai làm kiểu đấy. :wallbash: :wallbash: :wallbash:
Em làm được rồi ạ. em thêm vòng lặp mệnh đề điều kiện vào macro"LAM_MOI" trong macro này em thêm một bước copy ô "I5" và paste vào một ô khác để có dữ liệu tham chiếu. bây giờ bất cứ khi nào trong sheet 1 thay đổi thì code đều chạy. nếu giá trị ô "I5" khác với ô tham chiếu thì sẽ chạy macro "LAM_MOI" còn không thì else> Exit sub. em rất cảm ơn các bác đã giúp em hoàn thành bài toán khó này của em ạ. cảm ơn rất nhiều.:1a::1a::1a:
 
Em làm được rồi ạ. em thêm vòng lặp mệnh đề điều kiện vào macro"LAM_MOI" trong macro này em thêm một bước copy ô "I5" và paste vào một ô khác để có dữ liệu tham chiếu. bây giờ bất cứ khi nào trong sheet 1 thay đổi thì code đều chạy. nếu giá trị ô "I5" khác với ô tham chiếu thì sẽ chạy macro "LAM_MOI" còn không thì else> Exit sub. em rất cảm ơn các bác đã giúp em hoàn thành bài toán khó này của em ạ. cảm ơn rất nhiều.:1a::1a::1a:
Điều này mình cũng định làm rồi, nhưng bạn cứ khăng khăng là chỉ khi nào hết tháng, sang tháng sau code mới được chạy nên mình không ý kiến gì nữa.
 
Web KT
Back
Top Bottom