2013-06-06 40 views
6

Rất mới đối với VBA trong Excel, được yêu cầu thực hiện một số xác nhận về thay đổi ô và bị kẹt một chút.Tính toán dừng VBA của các ô

Vì vậy, người dùng cần phải nhập một giá trị tiền tệ vào một ô, giả sử D16, vì vậy tôi nghĩ rằng tôi muốn móc vào sự kiện _Change trên Bảng tính hoạt động khá tốt.

Tuy nhiên, tôi cần phần còn lại của trang tính để không hoàn thành phép tính khi một mục nhập được gửi vào D16, về cơ bản, khi nhập 500000, các ô khác được cập nhật với các giá trị từ trang tính khác.

Mã của tôi

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target = Range("D16") Then 

     Dim numeric 
     numeric = IsNumeric(Target) 


     If numeric = False Then 

      MsgBox "error" 
      Exit Sub 

      /// this is where I need to "stop" the calculations from firing 

     End If 

    End If 

End Sub 
+0

@Santosh, vâng, không ai trong số này giải quyết được vấn đề của chúng tôi. Chúng tôi đã kết thúc việc tìm kiếm từng sự kiện và gọi sự kiện Worksheet_Change trong mỗi sự kiện. Kịch bản kỳ lạ, tôi biết, tôi không thể giải thích tại sao, nhưng nó hoạt động. – JadedEric

Trả lời

13

Tôi hy vọng mã dưới đây sẽ giúp bạn. Bạn cần dán phần này vào phần mã.

Private Sub Worksheet_Change(ByVal Target As Range) 

    On Error Resume Next 

    Application.EnableEvents = False 
    Application.Calculation = xlCalculationManual 

    Dim rng As Range 
    Set rng = Range("D16") 

    If Not Intersect(Target, rng) Is Nothing And IsNumeric(Target) Then 

     If Target.Value >= 500000 Then 
      MsgBox "Value is greater than 500000" 
     End If 


    End If 


    Application.EnableEvents = True 
    Application.Calculation = xlCalculationAutomatic 
End Sub 
9

Sử dụng Application.Calculation = xlCalculationManual.

Đừng quên bật lại tính năng này: Application.Calculation = xlCalculationAutomatic.

Các vấn đề liên quan