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
Đ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.
Đó cũng là 1 cách. Nhưng đơn giản nhất là thay vì target là ô chứa công thức, đổi target là ô chứa tham chiếu của công thức. Đánh từ gốc, không đánh ngọn.
 
Đó cũng là 1 cách. Nhưng đơn giản nhất là thay vì target là ô chứa công thức, đổi target là ô chứa tham chiếu của công thức. Đánh từ gốc, không đánh ngọn.
Thế này chắc là oánh từ gốc bác nhỉ?
Mã:
'Trong ThisWorkbook
Public pubValue

Private Sub Workbook_Activate()
    pubValue = Sheet1.Range("i5").Value
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Application.EnableEvents = False
    If pubValue <> Sheet1.Range("i5").Value Then
        LAM_MOI
        pubValue = Sheet1.Range("i5").Value
    End If
Application.EnableEvents = True
End Sub

'Trong Module1
Sub LAM_MOI()
    Range("AR4:BV19").Copy Range("G10")
    Application.CutCopyMode = False
End Sub
Chuyện là em có một đoạn mã macro tự động chạy khi giá trị trong ô có thay đổi
Nên sửa lại là "Chuyện là em có sưu tầm một đoạn mã ...".
Nếu gặp cao thủ thì họ biết code chuẩn, chứ thằng không biết code như mình nhìn cứ tưởng code tào lao (áy náy quá).

PS: Vẫn không được, mở thêm file excel khác là copy tè le luôn. Thôi ta đành bó tay, chúng tôi đã cố gắng hết sức.
 
Lần chỉnh sửa cuối:
Thế này chắc là oánh từ gốc bác nhỉ?
Mã:
'Trong ThisWorkbook
Public pubValue

Private Sub Workbook_Activate()
    pubValue = Sheet1.Range("i5").Value
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Application.EnableEvents = False
    If pubValue <> Sheet1.Range("i5").Value Then
        LAM_MOI
        pubValue = Sheet1.Range("i5").Value
    End If
Application.EnableEvents = True
End Sub

'Trong Module1
Sub LAM_MOI()
    Range("AR4:BV19").Copy Range("G10")
    Application.CutCopyMode = False
End Sub

Nên sửa lại là "Chuyện là em có sưu tầm một đoạn mã ...".
Nếu gặp cao thủ thì họ biết code chuẩn, chứ thằng không biết code như mình nhìn cứ tưởng code tào lao (áy náy quá).
Không khai báo rõ ràng thì nó chép rồi dán tùm lum khắp nơi đó.
 
Thế này chắc là oánh từ gốc bác nhỉ?
Bạn hiểu thế nào là gốc? Thế nào là tham chiếu của công thức?
I5 = A1*B1
I5 muốn thay đổi thì làm gì mà không đụng đến I5?
PS: Vẫn không được, mở thêm file excel khác là copy tè le luôn. Thôi ta đành bó tay, chúng tôi đã cố gắng hết sức.
Đọc lại bài 52 và gợi ý bài 54 (tại sao chạy hoài). Bạn có cái tật rất lớn là không đọc, hoặc đọc không kỹ. Làm thì không test rồi ý với ủa. Kết quả là viết linh tinh (bị xóa rất nhiều)
 
Lần chỉnh sửa cuối:
Bạn có cái tật rất lớn là không đọc, hoặc đọc không kỹ. Làm thì không test rồi ý với ủa. Kết quả là viết linh tinh (bị xóa rất nhiều)
Em chỉ đồng ý câu cuối thôi.
Còn 2 câu đầu em ghép lại thế này: em có đọc, đọc kỹ, có test nhưng test không kỹ.
Với lại mấy cái auto này hình như không undo được, chắc em không biết thêm code undo hoặc sai ở chỗ nào.
Và như trên đã viết: em bó tay và thôi chịu!!! :wallbash: :wallbash: :wallbash:
 
Em chỉ đồng ý câu cuối thôi.
Còn 2 câu đầu em ghép lại thế này: em có đọc, đọc kỹ, có test nhưng test không kỹ.
Có đọc, đọc kỹ mà không hiểu thì gọi là gì thì biết rồi á.
Tham chiếu của công thức là gì mà không biết?
Bảo "Sự kiện Calculation không có tham số target" mà không hiểu?
Bảo "đừng dùng calculation" mà cũng vẫn không hiểu?
Đổi target cũng không biết luôn?
 
Có đọc, đọc kỹ mà không hiểu thì gọi là gì thì biết rồi á.
Thường thì sẽ gọi là ngu, dốt. Cái này thì trên diễn đàn em cũng tự nhận suốt ấy mà, tự nhận thì em thoải mái, nhưng người khác nói thì cũng tự ái lắm.
Cơ mà cứ nói bóng gió thì em lại thấy bình thường, cứ thầm hiểu là được.

Mấy cái tham số ở dưới thì em chịu, em mà biết thì chỉ cần trong vòng 30 phút là xong. Tìm hiểu thì cũng được, nhưng càng tìm hiểu càng rối nên em chọn bỏ cuộc.
 
Mình thì còn hì hụi thử, chạy chưa ổn lại sửa, sửa đi thử lại mãi nhưng không lường được hết các trường hợp, vẫn hay sai nhiều nên mới lâu là vậy.
Vậy mới gần bá đạo thôi, cố tí nữa là bá đạo.
Thêm nữa là trém gió vừa thôi, khiêm tốn là tốt, nhưng khiêm tốn kiểu phi lý quá thì nó lại phi lý kiểu rất phi lý.
 
Vậy mới gần bá đạo thôi, cố tí nữa là bá đạo.
Thêm nữa là trém gió vừa thôi, khiêm tốn là tốt, nhưng khiêm tốn kiểu phi lý quá thì nó lại phi lý kiểu rất phi lý.
Thực tế là nhiều bạn hỏi một đằng, khi làm xong rồi thì lại bảo đấy chỉ là ví dụ thôi, thực tế không như thế. Vậy là lại công cốc, nhiều khi chán hẳn.
 
Thực tế là nhiều bạn hỏi một đằng, khi làm xong rồi thì lại bảo đấy chỉ là ví dụ thôi, thực tế không như thế. Vậy là lại công cốc, nhiều khi chán hẳn.
Dễ mà, vậy thì xử lý đúng theo bài 1, bài 1 chưa rõ bắt phải edit lại hoặc đăng bài mới, hủy bài cũ.
Nhiều khi những chủ đề 10, 20 trang mà mãi dưới vẫn còn yêu cầu khác nên rất khó để tìm được kết quả đúng để tham khảo. Xem hết từng đấy trang rồi phải xem lại để tìm bài chốt cuối cùng, ối giời thời gian thật là mênh mông. Xem thì bực mà không xem thì không biết cuối cùng nó thế lào. :wallbash: :wallbash: :wallbash:
 
Đó cũng là 1 cách. Nhưng đơn giản nhất là thay vì target là ô chứa công thức, đổi target là ô chứa tham chiếu của công thức. Đánh từ gốc, không đánh ngọn.
Có cái em không hiểu cho lắm. đổi target là ô chứa tham chiếu của công thức tức là ta đặt công thức tại một ô bất kì và tham chiếu nó tới ô "I5" phải không ạ?
 
Có cái em không hiểu cho lắm. đổi target là ô chứa tham chiếu của công thức tức là ta đặt công thức tại một ô bất kì và tham chiếu nó tới ô "I5" phải không ạ?
Nếu code Worksheet_Change có target là I5 thì sẽ không chạy vì I5 chứa công thức phải không?
Nếu I5 là công thức tham chiếu đến B3, C4 chẳng hạn như I5 = B3 + C4, thì khi thay đổi 1 trong 2 ô B3 và C4, I5 cũng thay đổi nhưng code không chạy.
Vậy tại sao không lấy 1 trong 2 ô (hoặc cả 2 ô) B3, C4 làm target?
------
Thay vì
If Not Intersect(Target, Range("I5") Is Nothing Then

Thì thay nguồn (gốc) của I5 vào câu lệnh đó?
Đơn giản lắm luôn mà.
--------
Không hiểu mà hỏi thì tôi sẵn sàng trả lời, còn nếu ai buông xuôi thì ráng chịu mang tiêng n
 
Nếu code Worksheet_Change có target là I5 thì sẽ không chạy vì I5 chứa công thức phải không?
Nếu I5 là công thức tham chiếu đến B3, C4 chẳng hạn như I5 = B3 + C4, thì khi thay đổi 1 trong 2 ô B3 và C4, I5 cũng thay đổi nhưng code không chạy.
Vậy tại sao không lấy 1 trong 2 ô (hoặc cả 2 ô) B3, C4 làm target?
------
Thay vì
If Not Intersect(Target, Range("I5") Is Nothing Then

Thì thay nguồn (gốc) của I5 vào câu lệnh đó?
--------
Không hiểu mà hỏi thì tôi sẵn sàng trả lời, còn nếu ai buông xuôi thì ráng chịu mang tiêng n
Vậy là một trong hai Ô "B3", "C4" phải có tác động thay đổi một cách thủ công phải không ạ. là click chuột vào để thay đổi giá trị của ô ? Nếu là như vậy thì không đúng mục đích ạ. vì "I4" là công thức thời gian tự thay đổi cơ ạ.
 
Nếu code Worksheet_Change có target là I5 thì sẽ không chạy vì I5 chứa công thức phải không?
Nếu I5 là công thức tham chiếu đến B3, C4 chẳng hạn như I5 = B3 + C4, thì khi thay đổi 1 trong 2 ô B3 và C4, I5 cũng thay đổi nhưng code không chạy.
Vậy tại sao không lấy 1 trong 2 ô (hoặc cả 2 ô) B3, C4 làm target?
------
Thay vì
If Not Intersect(Target, Range("I5") Is Nothing Then

Thì thay nguồn (gốc) của I5 vào câu lệnh đó?
Đơn giản lắm luôn mà.
--------
Không hiểu mà hỏi thì tôi sẵn sàng trả lời, còn nếu ai buông xuôi thì ráng chịu mang tiêng n
I5 là hàm month trả về tháng hiện tại bác ạ. Thế nên em mới thử calculate, chắc thêm tên workbook nữa sẽ được.
 
Web KT
Back
Top Bottom