Page 1 of 1

VBA ป้องกันการปิด user form ไปเฉยๆ โดยไม่ใส่ค่าครับ

Posted: Mon Jun 02, 2014 6:08 pm
by DhitiBank
เรียนอาจารย์ และสวัสดีเพื่อนๆ ครับ

ผมต้องการกำหนดสิทธิ์ผู้ใช้ที่จะเลือกใส่ค่าในเซลล์ A1 เฉพาะผู้ที่มีรหัส admin เท่านั้นจึงแก้ไขค่าได้ เขียนโค้ดโดยการสั่งให้เมื่อมีการแก้ไขค่าในเซลล์ A1 แล้ว ให้เรียก user form ออกมาเพื่อใส่รหัสให้ถูกต้อง หากใส่ผิด ค่าในเซลล์ A1 จะกลับไปเป็นค่าปกติ (คือ M1) แต่ผมเจอปัญหาคือ หากผู้ใช้ปิด user form (กดปุ่ม x) โดยที่ไม่จำเป็นต้องกรอกรหัส ค่าใน A1 ก็ยังจะอยู่ตามที่พิมพ์เอาไว้ ผมจะป้องกันไม่ให้ผู้ใช้ปิด user form ได้อย่างไรครับ

โค้ดที่ใช้ตามด้านล่างครับ
ที่ Sheet1;

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        If Cells(1, 1).Text = "M1" Then
                Exit Sub
            Else
                Pasform1.Show
        End If
    End If
End Sub
ที่ User Form (ชื่อ Pasform1);

Code: Select all

Private Sub CommandButton1_Click()
    If Pasform1.TextBox1.Text = "admin" Then
            MsgBox "Password is correct ;)"
            Unload Pasform1
        Else
            MsgBox "Password is incorrect!!"
            Unload Pasform1
            Sheets("sheet1").Cells(1, 1).Value = "M1"
    End If
End Sub
ขอบคุณครับ

Re: VBA ป้องกันการปิด user form ไปเฉยๆ โดยไม่ใส่ค่าครับ

Posted: Mon Jun 02, 2014 6:33 pm
by bank9597
:D ลองใช้ใช้โค๊ดนี้ดูครับ

Code: Select all

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
        Cancel = True
        MsgBox "คุณไม่สามารถปิดฟอร์มได้", vbCritical
    End If
End Sub

Re: VBA ป้องกันการปิด user form ไปเฉยๆ โดยไม่ใส่ค่าครับ

Posted: Mon Jun 02, 2014 10:19 pm
by DhitiBank
ขอบคุณคุณ bank9597 มากครับ ตรงตามความต้องการเลยครับ