Page 1 of 1

Code VB กำหนดจำนวนครั้งของการเปิดไฟล์

Posted: Fri Oct 24, 2025 8:54 pm
by tigerwit
จากไฟล์ที่แนบมา

Code: Select all

Private Sub Workbook_Open()
    Dim openCount As Integer
        Const MAX_OPEN_COUNT As Integer = 3
        If openCount < MAX_OPEN_COUNT Then ' ตรวจสอบว่าได้เปิดไฟล์เกินจำนวนครั้งที่กำหนดหรือไม่
            openCount = openCount + 1    ' เพิ่มจำนวนครั้งที่เปิด
            MsgBox "เปิดไฟล์สำเร็จ. คุณได้เปิดไฟล์แล้ว " & openCount & " ครั้ง" ' แสดงข้อความว่าเปิดไฟล์ได้สำเร็จ
        Else
            MsgBox "ไม่สามารถเปิดไฟล์ได้อีก เนื่องจากเปิดครบจำนวนครั้งแล้ว", vbCritical  ' แสดงข้อความเตือนเมื่อเปิดเกินจำนวนครั้ง
            Activeworkbook.close
        End If
End Sub
ต้องการกำหนดให้ไฟล์เปิดขึ้นมาใช้งานได้เพียง 3 ครั้ง หากเกินสามครั้งให้ปิดไฟล์นั้นลง
จะต้องปรับโค๊ดอย่างไรครับ

Re: Code VB กำหนดจำนวนครั้งของการเปิดไฟล์

Posted: Sat Oct 25, 2025 7:04 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub Workbook_Open()
    Dim rsp_Reset As VbMsgBoxResult
    With Worksheets(1).Range("a1") '<~~ Change cell address on your needed.
        If .Value >= 3 Then
            MsgBox "Can't open more than 3 times"
            rsp_Reset = MsgBox(prompt:="Click Yes to reset", _
                Buttons:=vbYesNo + vbQuestion, Title:="Reset?")
            If rsp_Reset = vbYes Then
                .Value = 0
            End If
            'Other code
        Else
            .Value = .Value + 1
            'Other code
        End If
    End With
    ThisWorkbook.Save
End Sub
การเก็บจำนวนครั้งที่เปิดไฟล์นั้น ๆ ด้วย Open Event จัดการโดยการเก็บค่าในการเปิดไว้ในไฟล์นั้น ๆ จะสะดวกในการจัดการมากกว่า ดังตัวอย่าง Code ด้านบน

หากไม่ต้องการให้ผู้ใช้เห็นเซลล์ที่เก็บค่านั้นให้เปิดชีตขึ้นมาใหม่ ซ่อนแบบ VeryHidden เพื่อป้องกันการยกเลิกการซ่อนได้จากคลิกขวาบนแถบชีตครับ