Page 1 of 1

ไม่ให้ hide หรือ unhide sheet

Posted: Thu Apr 03, 2025 10:18 am
by wisitsakbenz
เรียน อาจารย์

1. อยากให้เวลา login เข้ามาแล้ว ให้เหลือแค่ Sheet "Home"
2. log Sheet "Login" และ "User" ไม่ให้ hide หรือ unhide sheet
ต้องปรับ Code อย่างไรครับ ขอบคุณครับ

Code: Select all

Sub Login()
    Dim ws As Worksheet
    Dim userSheet As Worksheet
    Dim username As String
    Dim password As String
    Dim validLogin As Boolean
    Dim i As Integer
       
       ThisWorkbook.Sheets("Home").Unprotect password:="yourpassword"
       
    ' กำหนดชื่อตัวแปร
    Set userSheet = ThisWorkbook.Sheets("user")
    username = Sheets("Login").Range("B1").Value
    password = Sheets("Login").Range("B2").Value
    ThisWorkbook.Sheets("Home").Visible = xlSheetHidden
    ThisWorkbook.Sheets("user").Visible = xlSheetHidden
    validLogin = False
    
    ' ตรวจสอบว่าผู้ใช้และรหัสผ่านถูกต้องหรือไม่
    For i = 2 To 5 ' สมมุติว่าเก็บข้อมูลในแถว 2 ถึง 5 ของ Sheet "user"
        If userSheet.Cells(i, 1).Value = username And userSheet.Cells(i, 2).Value = password Then
            validLogin = True
            Exit For
        End If
    Next i
    
    If validLogin Then
        ' ซ่อน Sheet อื่น ๆ
        Sheets("Home").Range("H4").Value = username
        'ThisWorkbook.Sheets("Login").Visible = xlSheetVisible
        ThisWorkbook.Sheets("Home").Visible = xlSheetVisible
        MsgBox "Login successful! Welcome, " & username, vbInformation
        Sheets("Home").Activate
    Else
        ' หากการล็อกอินผิดพลาด ให้แสดงข้อความผิดพลาด
        'MsgBox "Invalid Username or Password!", vbCritical, "Login Failed"
        MsgBox "Invalid username or password. Please try again.", vbCritical
        ThisWorkbook.Sheets("Login").Range("B2").ClearContents
        ThisWorkbook.Sheets("Login").Range("B1").ClearContents
        ThisWorkbook.Sheets("Login").Range("B1").Select
    End If
End Sub

Re: ไม่ให้ hide หรือ unhide sheet

Posted: Thu Apr 03, 2025 11:04 am
by snasui
:D ในโอกาสถัดไปจะต้องอธิบายมาให้ทราบว่า Code ปัจจุบันเกิดปัญหาอะไร และต้องลำดับวิธีการทดสอบเพื่อให้ทราบปัญหานั้นมาด้วยจะได้ลดเวลาในการทดสอบครับ

ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub Login()
    Dim ws As Worksheet
    Dim userSheet As Worksheet
    Dim username As String
    Dim password As String
    Dim validLogin As Boolean
    Dim i As Integer
       
    ThisWorkbook.Sheets("Home").Unprotect password:="yourpassword"
     
    ' กำหนดชื่อตัวแปร
    Set userSheet = ThisWorkbook.Sheets("user")
    username = Sheets("Login").Range("B1").Value
    password = Sheets("Login").Range("B2").Value
    ThisWorkbook.Sheets("Home").Visible = xlSheetHidden
    ThisWorkbook.Sheets("user").Visible = xlSheetHidden
    validLogin = False
    
    ' ตรวจสอบว่าผู้ใช้และรหัสผ่านถูกต้องหรือไม่
    For i = 2 To 5 ' สมมุติว่าเก็บข้อมูลในแถว 2 ถึง 5 ของ Sheet "user"
    If userSheet.Cells(i, 1).Value = username _
         And userSheet.Cells(i, 2).Value = password Then
            validLogin = True
            Exit For
    End If
    Next i
    
    If validLogin Then
        ' ซ่อน Sheet อื่น ๆ
        Sheets("Home").Range("H4").Value = username
        ThisWorkbook.Sheets("Home").Visible = xlSheetVisible
        ThisWorkbook.Sheets("Login").Visible = xlSheetVeryHidden
        MsgBox "Login successful! Welcome, " & username, vbInformation
        Sheets("Home").Activate
    Else
        ' หากการล็อกอินผิดพลาด ให้แสดงข้อความผิดพลาด
        'MsgBox "Invalid Username or Password!", vbCritical, "Login Failed"
        MsgBox "Invalid username or password. Please try again.", vbCritical
        ThisWorkbook.Sheets("Login").Range("B2").ClearContents
        ThisWorkbook.Sheets("Login").Range("B1").ClearContents
        ThisWorkbook.Sheets("Login").Range("B1").Select
    End If
End Sub


Sub LogOut()
    ' แสดงหน้า Login
    ThisWorkbook.Sheets("Login").Visible = xlSheetVisible
    
    ' ซ่อนหน้า Home
    ThisWorkbook.Sheets("Home").Visible = xlSheetHidden
    
    ' ล้างข้อมูลที่กรอกในฟอร์ม Login (username, password)
    ThisWorkbook.Sheets("Login").Range("B1").ClearContents
    ThisWorkbook.Sheets("Login").Range("B2").ClearContents
    
    ' ให้ผู้ใช้สามารถเลือกกรอกใหม่จากช่อง Username
    ThisWorkbook.Sheets("Login").Range("B1").Select
End Sub


Re: ไม่ให้ hide หรือ unhide sheet

Posted: Thu Apr 03, 2025 12:01 pm
by wisitsakbenz
เรียน อาจารย์ snasui

รับทราบครับ และมีอีกปัญหาครับ
หลังจาก login เหลือ Sheet "Home" หากมีการคลิกปุ่ม Button 1 แล้ว ให้กลับไป Sheet "Log in" และซ่อน Sheet "Home" กับ User"

ต้องปรับ Code อย่างไรครับ ขอบคุณครับ

Code: Select all

Sub LogOut()
    ' ซ่อนหน้า Home
    ThisWorkbook.Sheets("Home").Visible = xlSheetVeryHidden
    
    ' แสดงหน้า Login
    ThisWorkbook.Sheets("Login").Visible = xlSheetVisible
    
    ' ล้างข้อมูลที่กรอกในฟอร์ม Login (username, password)
    ThisWorkbook.Sheets("Login").Range("B1").ClearContents
    ThisWorkbook.Sheets("Login").Range("B2").ClearContents
    
    ' ให้ผู้ใช้สามารถเลือกกรอกใหม่จากช่อง Username
    'ThisWorkbook.Sheets("Login").Range("B1").Select
End Sub

Re: ไม่ให้ hide หรือ unhide sheet

Posted: Thu Apr 03, 2025 5:07 pm
by snasui
:D ผมตอบไว้แล้วใน Post ด้านบนครับ :aru: