Hiển thị và tắt thông báo

Liên hệ QC

trungnt

Thành viên hoạt động
Tham gia
2/2/07
Bài viết
135
Được thích
88
Tôi đã làm 1 bảng tính Excel trong đó tôi có viết một số hộp thông báo sẽ tự động hiện lên khi kiểm tra các số liệu không đạt yêu cầu. Nhưng khi hộp thông báo hiện lên thì tôi phải kích 4 lần vào nút OK thì bảng thông báo mới tắt đi, tôi suy nghĩ mãi mà chưa có cách nào chỉ kích 1 lần thì bảng thông báo tắt đi? ..... nhờ các Pác trên diễn đàn giúp tôi với ...... tôi xin cám ơn nhìu nhìu. Code đơn giản mà tôi đã viết:

Private Sub Worksheet_Change(ByVal Target As Range)
If (Sheets("BTKCAU").Range("f59").Value < Sheets("BTKCAU").Range("f28").Value * Sheets("BTKCAU").Range("j60").Value) Then
MsgBox "Kết qua kiểm tra không đạt y/c ...!!!!", vbExclamation + vbOKOnly, "RESULT !"
Range("B62").Select
Else
If ((Sheets("BTKCAU").Range("f87").Value + Sheets("BTKCAU").Range("i89").Value) > (Sheets("BTKCAU").Range("h91").Value / Sheets("BTKCAU").Range("j96").Value)) Then
MsgBox "Kết qua kiểm tra không đạt y/c .....!!!!", vbExclamation + vbOKOnly, "RESULT !"
Range("A98").Select
Else
If (Sheets("BTKCAU").Range("f121").Value > (Sheets("BTKCAU").Range("j141").Value / Sheets("BTKCAU").Range("j135").Value) And Sheets("BTKCAU").Range("f133").Value > (Sheets("BTKCAU").Range("j142").Value / Sheets("BTKCAU").Range("j135").Value)) Then
MsgBox "Kết qua kiểm tra không đạt y/c .....!!!!", vbExclamation + vbOKOnly, "RESULT !"
Range("A146").Select
End If
End If
End If
End Sub
 
Lần chỉnh sửa cuối:
Tai sau moi cai kiem tra bạn phải cho nó thoát chứ và kết thúc if
Bạn thêm exit sub và end if.
 
Tôi cũng đã làm như anh yêu đời nhưng sao vẫn chưa được?... Anh còn cách nào khác nữa không, chỉ giúp cho tôi với...!!!
 
bạn có dùng thêm sự kiện Worksheet_SelectionChange không?, nếu có thì bạn phải dùng thêm phương thức
Application.EnableEvents = False trước khi If...then
đến khi End if thì bạn đặt lại
Application.EnableEvents = True

còn nếu không có thì bạn cho biết là câu thông báo xuất hiện xuất hiện như thế nào với đoạn code chỉnh sửa như sau:
Mã:
[color=darkblue]Private[/color] [color=darkblue]Sub[/color] Worksheet_Change([color=darkblue]ByVal[/color] Target [color=darkblue]As[/color] Range)
    [color=darkblue]If[/color] (Sheets("BTKCAU").Range("f59").Value < Sheets("BTKCAU").Range("f28").Value * Sheets("BTKCAU").Range("j60").Value) [color=darkblue]Then[/color]
        MsgBox "Thong bao 1", vbExclamation + vbOKOnly, "RESULT !"
        Range("B62").Select
    [color=darkblue]Else[/color]
        [color=darkblue]If[/color] ((Sheets("BTKCAU").Range("f87").Value + Sheets("BTKCAU").Range("i89").Value) > (Sheets("BTKCAU").Range("h91").Value / Sheets("BTKCAU").Range("j96").Value)) [color=darkblue]Then[/color]
            MsgBox "Thong bao 2", vbExclamation + vbOKOnly, "RESULT !"
            Range("A98").Select
        [color=darkblue]Else[/color]
            [color=darkblue]If[/color] (Sheets("BTKCAU").Range("f121").Value > (Sheets("BTKCAU").Range("j141").Value / Sheets("BTKCAU").Range("j135").Value) And Sheets("BTKCAU").Range("f133").Value > (Sheets("BTKCAU").Range("j142").Value / Sheets("BTKCAU").Range("j135").Value)) [color=darkblue]Then[/color]
                MsgBox "Thong bao 3", vbExclamation + vbOKOnly, "RESULT !"
                Range("A146").Select
            [color=darkblue]End[/color] [color=darkblue]If[/color]
        [color=darkblue]End[/color] [color=darkblue]If[/color]
    [color=darkblue]End[/color] [color=darkblue]If[/color]
End [color=darkblue]Sub[/color]

Bạn nên dùng Breakpoint và kết hợp Run Step by Step (F8) để debug lỗi của chương trình.

Code của bạn mình không nhận được lỗi như bạn miêu tả khi chạy code.
 
Bạn thử xem dạng viết này sẽ khả dĩ hơn không!

PHP:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim StrC As String
 With Sheets("Sheet3")
    If .Range("F5") < .Range("F8") + .Range("F6") Then
        StrC = "Thong Bao 1"
    ElseIf .Range("F8") + .Range("i8") > .Range("H8") + .Range("G8") Then
        StrC = "Thong bao 2"
    ElseIf .Range("F10") > .Range("J10") / .Range("H6") Then
        StrC = "Thong bao 3"
    End If
  End With
    MsgBox StrC, vbExclamation + vbOKOnly, "RESULT !"

End Sub
 
Lần chỉnh sửa cuối:
Cảm ơn Ý kiến của các Pác (hay và phong phú), nhưng vẫn còn 1 tí vướng mắc, sau đây tôi diễn giải rõ hơn để các a giúp đỡ thêm: Vấn đề mà tôi cần giải quyết như sau: tôi cần kiểm tra 6 trường hợp trong tổng số 3 điều kiện (tôi đặt thứ tự đk1, đk2, đk3), tức là có thể xảy ra 1 trong 6 trường hợp như sau:
+Chỉ có đk1 không đạt cho hiện thông báo số 1 hoặc
+Chỉ có đk2 không đạt cho hiện thông báo số 2 hoặc
+Chỉ có đk3 không đạt cho hiện thông báo số 3 hoặc
+Chỉ có đk1 và đk2 không đạt cho hiện thông báo số 4 hoặc
+Chỉ có đk1 và đk3 không đạt cho hiện thông báo số 5 hoặc
+Chỉ có đk2 và đk3 không đạt cho hiện thông báo số 6
Nhưng khi vận dụng ý kiến các Pác vào thì cũng hiện ra thông báo và chỉ kích 1 lần là tắt đi nhưng các thủ tục kiểm tra chưa chạy hết thì đã xuất hiện thông báo, ý của tôi là trong bảng tính của tôi chỉ có đk1 và đk3 là không đạt thì phải hiện ra thông báo số 5 nhưng lại hiện thông báo số 1 hoặc thông báo số 3 (nếu được đặt ở đầu) trong một số trường hợp cũng tương tự mặc dù cú pháp không sai nhưng vẫn không đúng yêu mà tôi đặt ra (trường hợp nào xảy ra thì phải hiện đúng thông báo của trường hợp đó). Tuy đã cố gắng chỉnh sửa nhưng vẫn chưa đạt ý mong muốn, mong các Qúi anh chị ra tay giúp đỡ thêm ........ tôi xin chân thành cám ơn.
 
Lần chỉnh sửa cuối:
trungnt đã viết:
Cảm ơn Ý kiến của các Pác (hay và phong phú), nhưng vẫn còn 1 tí vướng mắc, sau đây tôi diễn giải rõ hơn để các a giúp đỡ thêm: Vấn đề mà tôi cần giải quyết như sau: tôi cần kiểm tra 6 trường hợp trong tổng số 3 điều kiện (tôi đặt thứ tự đk1, đk2, đk3), tức là có thể xảy ra 1 trong 6 trường hợp như sau:
+Chỉ có đk1 không đạt cho hiện thông báo số 1 hoặc
+Chỉ có đk2 không đạt cho hiện thông báo số 2 hoặc
+Chỉ có đk3 không đạt cho hiện thông báo số 3 hoặc
+Chỉ có đk1 và đk2 không đạt cho hiện thông báo số 4 hoặc
+Chỉ có đk1 và đk3 không đạt cho hiện thông báo số 5 hoặc
+Chỉ có đk2 và đk3 không đạt cho hiện thông báo số 6
Nhưng khi vận dụng ý kiến các Pác vào thì cũng hiện ra thông báo và chỉ kích 1 lần là tắt đi nhưng các thủ tục kiểm tra chưa chạy hết thì đã xuất hiện thông báo, ý của tôi là trong bảng tính của tôi chỉ có đk1 và đk3 là không đạt thì phải hiện ra thông báo số 5 nhưng lại hiện thông báo số 1 hoặc thông báo số 3 (nếu được đặt ở đầu) trong một số trường hợp cũng tương tự mặc dù cú pháp không sai nhưng vẫn không đúng yêu mà tôi đặt ra (trường hợp nào xảy ra thì phải hiện đúng thông báo của trường hợp đó). Tuy đã cố gắng chỉnh sửa nhưng vẫn chưa đạt ý mong muốn, mong các Qúi anh chị ra tay giúp đỡ thêm ........ tôi xin chân thành cám ơn.

Thông thường với các cách này mình sẽ học Excel ở cách định nghĩa các nút lệnh của Msgbox
dim tongdk as int
If dk1 then tongdk = tongdk+1(2^0)
If dk2 then tongdk = tongdk+2(2^1)
If dk3 then tongdk = tongdk+4(2^2)

'tiep tuc bạn dùng Select case cho các trường hợp của tongdk

tongdk = 0 --------------> 3 dk đều false
tongdk = 1 --------------> chỉ có dk1 = true
tongdk = 2 --------------> chỉ có dk2 = true
tongdk = 3 --------------> chỉ có dk1,dk2 = true
tongdk = 4 --------------> chỉ có dk3 = true
tongdk = 5 --------------> chỉ có dk1,dk3 = true
tongdk = 6 --------------> chỉ có dk2,dk3 = true
tongdk = 7 --------------> 3 dk đều true

Thân.
 
Web KT
Back
Top Bottom