Page 1 of 1

อยากทำ Worksheet Activate Select Case

Posted: Wed Oct 16, 2019 5:49 pm
by yangkodza

Code: Select all

Private Sub Worksheet_Activate()
Dim score As Integer, result As String
LRegion = Range("Q13").Value
Select Case LRegion
   Case "1/11"
            Call Module25.รหัสวิทย์ม1เทอม1
   Case "1/12"
            Call Module25.รหัสวิทย์ม1เทอม2
   Case "2/11"
            Call Module25.รหัสวิทย์ม2เทอม1
   Case "2/12"
            Call Module25.รหัสวิทย์ม2เทอม2
   Case "3/11"
            Call Module25.รหัสวิทย์ม3เทอม1
   Case "3/12"
            Call Module25.รหัสวิทย์ม3เทอม2
   Case "1/21"
            Call Module2.ปกติม1เทอม1
   Case "1/22"
            Call Module2.ปกติม1เทอม2
   Case "1/31"
            Call Module2.ปกติม1เทอม1
   Case "1/32"
            Call Module2.ปกติม1เทอม2
   Case "2/21"
            Call Module2.ปกติม2เทอม1
   Case "2/22"
            Call Module2.ปกติม2เทอม2
   Case "2/31"
            Call Module2.ปกติม2เทอม1
   Case "2/32"
            Call Module2.ปกติม2เทอม2
   Case "3/21"
            Call Module2.ปกติม3เทอม1
   Case "3/22"
            Call Module2.ปกติม3เทอม2
   Case "3/31"
            Call Module2.ปกติม3เทอม1
   Case "3/32"
            Call Module2.ปกติม3เทอม2
   End Select
End Sub
   
พยามยามทดลองทำแต่ก็ยังทำไม่ได้สักที
ถ้าเรากดแผ่นงานใบรายงานผลการเรียนแล้วให้ มาโครทำงานอัตโนมัติ จุดมุ่งหมายของผมคือกรณีมีการเปลี่ยนห้องแล้วพอเรามากดที่แผ่นงานใบรายงานผลการเรียนจะทำการเปลี่ยนรหัสวิชาให้เรา จากตัวงานเป็นห้อง ม.1/1 ค่าที่ Q13 จะเท่ากับ 1/11 ซึ่งก็ให้ Case "1/11" ทำงาน ก็จะไปเรียกใช้ Call Module25.รหัสวิทย์ม1เทอม1 แต่ผมทำแล้วโปรแกรมไม่ยอมรันผลให้จะค้าง แล้วก็ปิดตัวเองไปตลอด รบกวนช่วยตรวจสอบทีครับ
ไฟล์ตัวอย่าง.xls

Re: อยากทำ Worksheet Activate Select Case

Posted: Wed Oct 16, 2019 8:17 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub Worksheet_Activate()
    Dim score As Integer, result As String
    Application.EnableEvents = False
    'Other code
    Application.EnableEvents = True
End Sub

Re: อยากทำ Worksheet Activate Select Case

Posted: Wed Oct 16, 2019 9:56 pm
by yangkodza
snasui wrote: Wed Oct 16, 2019 8:17 pm :D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub Worksheet_Activate()
    Dim score As Integer, result As String
    Application.EnableEvents = False
    'Other code
    Application.EnableEvents = True
End Sub
ขอบคุณมากครับ ตรงตามที่ต้องการแล้วครับ
รบกวนอาจารย์อธิบายประกอบหน่อยครับว่าทำไมเราถึงสั่งแบบตรงๆไม่ได้

Re: อยากทำ Worksheet Activate Select Case

Posted: Wed Oct 16, 2019 10:05 pm
by snasui
:D Code นั้นเป็นการปิด Event เสียก่อน เนื่องจาก Code ที่เกี่ยวข้องมีการเลือกชีตที่เขียน Code นี้หลายรอบ เมื่อเลือกมันก็จะเกิด Event การเลือกและก็จะทำงานเดิมวนไปไม่รู้จบ จึงต้องปิด Event เสียก่อน เมื่อทำงานจบแล้วค่อยเปิดกลับมาใช้ใหม่ครับ

Re: อยากทำ Worksheet Activate Select Case

Posted: Wed Oct 16, 2019 10:11 pm
by yangkodza
จากหน้างานปกติที่ผมทำผมต้องสร้างปุ่มมาเพื่อกดให้รันรหัสวิชาเข้ามาก่อน แต่บางครั้งช่วยกันปรินหลายคน พอมาดูสรุปว่าลืมกดมาโครเปลี่ยนรหัสวิชา และปรากฏว่าปรินงานไปแล้วทั้งห้อง ทำให้ต้องคอยระวังตรงจุดนี้อย่างมาก ได้รับคำชี้แนะจากอาจารย์ทำให้งานสะดวกมากขึ้น ขอบคุณมากครับ :thup: