Lỗi khi ngắt vòng lặp For trên Userform

Liên hệ QC

duongvanminh33

Thành viên mới
Tham gia
16/3/19
Bài viết
31
Được thích
3
Dear MN,

Mình có một lỗi như thế này tuy nhiên mình vẫn chưa có cách khắc phục được nó.

Mã:
Private Sub CommandButton1_Click()

    If Me.Enabled = True Then
    Unload Me
    End If

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
    Cancel = False
     Application.DisplayAlerts = False
   ActiveWorkbook.Close SaveChanges:=False
   Application.DisplayAlerts = True
End If
End Sub

Dòng lệnh userfrom_queryclose : Ví dụ Khi hàm vòng lặp for i mình đang chạy từ 1-100 , tuy nhiên khi chạy được nữa chừng thì mình muốn hủy nó, thì mình sẽ bấm dấu X trên userfrom để close

Sau khi excel tắt và mình mở lại file thì biến tại button Spinner2 ( printTo = wbThis.Sheets("PAYSLIP").Range("I5").Value) thì sẽ hiện số đã bị close nữa chừng.Nhưng khi mình bấm button Spinner2 thì các hàm vlookup mình ko chạy được mà phải bấm save thì nó mới hiện - Bấm tới số mấy thì phải save nhiu lần số đó mới hiện.
Nếu run chạy lại thì nó sẽ chạy lại bình thường.

Mình không hiểu lắm. Có cách nào khắc phục không ạ.
 
Trước cái unload Me bạn cho câu lệnh Application.DisplayAlerts = True thử xem.
 
Upvote 0
Góp ý bạn nên đưa file lên nha Code một đằng mà hỏi một nẻo thì không ai giúp được bạn đâu !
 
Upvote 0
Nếu không sửa hết các lỗi đã được góp ý thì vụ này chắc lại đến Tết Tây.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Đây bạn ơi, file hình là ở trạng thái đang bị, vô click Spinner2 , dữ liệu không chạy.

Nếu chỉ đơn giản là click Spinner2 thì I7 cập nhật (dữ liệu chạy ???) thì chỉ cần thêm code sau vào Module5 của bạn:

Sub Spinner2_Change()
Range("I7").Value = "=RIGHT(VLOOKUP($I$5,VP!$A$8:$AV$1071,48,0),4)"
End Sub


Không biết đã đúng ý bạn hỏi chưa.
 
Upvote 0
Nếu chỉ đơn giản là click Spinner2 thì I7 cập nhật (dữ liệu chạy ???) thì chỉ cần thêm code sau vào Module5 của bạn:

Sub Spinner2_Change()
Range("I7").Value = "=RIGHT(VLOOKUP($I$5,VP!$A$8:$AV$1071,48,0),4)"
End Sub


Không biết đã đúng ý bạn hỏi chưa.
Hay quá bạn ơi, đúng là khi ghi đoạn code đó thì nó chạy được thật. Bạn có thế giải thích dùm mình tại sao lại bị như thế không ạ? , với lại không lẽ giờ lấy các công thức trong sheet "PAYSLIP" rồi đưa vô trong Spinner2_change() hết sao. Theo ý kiến của bạn , mình nên làm như thế nào thì mới tốt nhất. Cảm ơn bạn
 
Upvote 0
Hay quá bạn ơi, đúng là khi ghi đoạn code đó thì nó chạy được thật. Bạn có thế giải thích dùm mình tại sao lại bị như thế không ạ? , với lại không lẽ giờ lấy các công thức trong sheet "PAYSLIP" rồi đưa vô trong Spinner2_change() hết sao. Theo ý kiến của bạn , mình nên làm như thế nào thì mới tốt nhất. Cảm ơn bạn

Thực ra lý do chính nó không cập nhật là do bạn đã không trả Application.Calculation về để tự động cập nhật (mình tưởng bạn kiểm soát thông số này không muốn nó tự động cho cả bảng tính)
Nếu bạn muốn tất cả các công thức trong sheet "PAYSLIP" nó cập nhật thì chỉ cần kiểm soát Application.Calculation tự động cập nhật (Application.Calculation = xlCalculationAutomatic)
Bạn tự đổi Application.Calculation = xlCalculationAutomatic trong code của bạn nhé. Khi đó sự kiện Spinner2_change() cho trường hợp này là không cần nữa.
 
Upvote 0
Thực ra lý do chính nó không cập nhật là do bạn đã không trả Application.Calculation về để tự động cập nhật (mình tưởng bạn kiểm soát thông số này không muốn nó tự động cho cả bảng tính)
Nếu bạn muốn tất cả các công thức trong sheet "PAYSLIP" nó cập nhật thì chỉ cần kiểm soát Application.Calculation tự động cập nhật (Application.Calculation = xlCalculationAutomatic)
Bạn tự đổi Application.Calculation = xlCalculationAutomatic trong code của bạn nhé. Khi đó sự kiện Spinner2_change() cho trường hợp này là không cần nữa.
Đúng là như vậy thật bạn à, mình mất 3 ngày chỉ để tìm hiểu tại sao nó bị như vậy, mình mới tập viết VBA nên còn gà mờ lắm, chân thành cảm ơn bạn vì sự giúp đỡ này.
 
Upvote 0
Web KT
Back
Top Bottom