:!: โปรดทราบ Image
    1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ดครับ Image
    2. การสมัครสมาชิกเพื่อโพสต์คำถาม ดาวน์โหลดไฟล์แนบไปศึกษา ทำตามขั้นตอนด้านล่างครับ
      1. สมัครสมาชิก ดูขั้นตอนตาม Link นี้ครับ => สมัครสมาชิก กรณีลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่นี่ครับ => Reset รหัสผ่านImage
      2. Login เข้าระบบโดยคลิก Login ตรงมุมขวาบนของหน้านี้ Image กรณีมีปัญหาในการเข้าใช้งาน คลิก Link นี้เพื่อแจ้งผู้ดูแลระบบครับ => ติดต่อผู้ดูแลระบบ
    3. เมื่อ Login แล้วสามารถกำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษได้ที่ Link นี้ครับ => ตั้งค่าส่วนตัว Image
    4. วิธีการตั้งและตอบกระทู้ดูได้ที่ Link นี้ครับ => วิธีการตั้งและตอบกระทู้ Image
    5. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ Link นี้ครับ => จัดรูปแบบตัวอักษร และสามารถกำหนดขนาดตัวอักษรใน Browser ได้ที่นี่ครับ ==> กำหนดขนาดตัวอักษรใน Browser Image

password (VBA)

ฟอรั่มถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถาม-ตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบ ต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. อธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. ควรแนบตัวอย่างไฟล์มาที่ฟอรั่มนี้เพื่อเพิ่มความสะดวกในการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่น นอกจากนี้ไม่ควรแนบไฟลที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. แจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

password (VBA)

#1

Postby Benmore » Thu Nov 02, 2017 11:30 am

ขอบสอบถามค่ะ ถ้าเมื่อกดปุ่มในหน้า Uniform_EGAS แล้วขึ้น Userform ให้กรอกรหัสต้องใส่โค้ดตรงไหนค่ะ
แล้วเมื่อเปิดไฟล์มาให้แสดงที่ชีท Uniform_EGAS แบบเต็มจอต้องเขียนโค้ดแบบไหนค่ะ
โค้ดด้านล่างถูกต้องไหมค่ะ Userform12 :ard:

Code: Select all

'Login
Private Sub CommandButton1_Click()
' On Error Resume Next
 If TextBox1 = "" Or TextBox2 = "" Then
        MsgBox "กรุณากรอกข้อมูลให้ครบถ้วน"
        Exit Sub
    End If
            If TextBox1.Text = Worksheets("Username").Range("A2").Value Then
            If TextBox2.Text = Worksheets("Username").Range("B2").Value Then
                passOK = True
                UserForm12.Hide
                TextBox1.Text = ""
                TextBox2.Text = ""
           Else
              MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง"
            End If
        End If
    If passOK = False Then
        MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง"
    End If
End Sub
You do not have the required permissions to view the files attached to this post.

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#2

Postby snasui » Thu Nov 02, 2017 8:45 pm

:D กรุณาลำดับสิ่งที่ต้องการทำมาใหม่ว่าต้องการจะทำอะไรครับ

การอ้างถึง UserForm ให้อ้างชื่อในภาพ ไม่ใช่ชื่อที่เขียนไว้ตรง Caption ครับ
You do not have the required permissions to view the files attached to this post.

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#3

Postby Benmore » Thu Nov 02, 2017 9:48 pm

ถ้าเมื่อกดปุ่มในหน้า Uniform_EGAS
11.png

แล้วขึ้น Userform ให้กรอกรหัส
22.png

แล้วถึงขึ้นหน้าฟอร์มปกติค่ะ
33.png


แล้วต้องเขียนโค้ดแบบไหนให้เวลาเปิดไฟล์มาแล้วแสดงหน้า Uniform_EGAS แบบเต็มจอ ค่ะ
You do not have the required permissions to view the files attached to this post.

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#4

Postby snasui » Thu Nov 02, 2017 10:13 pm

:D UserForm ใน Excel ไม่เหมือนใน .Net ที่จะกำหนดหน้าต่างย่อขยายได้แบบง่าย ๆ ครับ

ตัวอย่างด้านล่างนี้เป็นการใช้ Windows API เข้ามาช่วย

ทำตามลำดับดังนี้

A. แทรก Module เข้ามาใหม่ เพื่อวาง Code Windows API ด้านล่าง

Code: Select all

Public Const SW_MAXIMIZED = 3
#If VBA7 Or Win64 Then
    Public Declare PtrSafe Function FindWindow Lib "user32" Alias _
    "FindWindowA" (ByVal lpClassName As String, ByVal _
    lpWindowName As String) As Long
   
    Public Declare PtrSafe Function ShowWindow Lib "user32" (ByVal _
    hwnd As Long, ByVal nCmdShow As Long) As Long
   
#Else
    public Declare  Function FindWindow Lib "user32" Alias _
    "FindWindowA" (ByVal lpClassName As String, ByVal _
    lpWindowName As String) As Long
   
    public Declare  Function ShowWindow Lib "user32" (ByVal _
    hwnd As Long, ByVal nCmdShow As Long) As Long
#End If


ฺB. ในขั้นตอนการเรียก UserForm ให้เขียน on error resume next เพื่อปิดการฟ้อง เช่นด้านล่าง

Code: Select all

Sub Button1_Click()
    'Sheet1.Activate
    On Error Resume Next
    UserForm1.Show
End Sub


C. ในตอน Initial ให้เพิ่ม Code ด้านล่าง

Code: Select all

Private Sub UserForm_Initialize()
    Call ClearData
    Sheet6.Activate
    'day
    comday.RowSource = "DATA!D2:D32"
    'month
    commonth.RowSource = "DATA!E2:E13"
    'year
    comyear.RowSource = "DATA!F2:F31"
    'description
    Combobox1.RowSource = "DATA!C2:C8"
    Call ShowMaximized
End Sub

Private Sub ShowMaximized()
    Call ShowWindow(FindWindow("ThunderDFrame", Me.Caption), SW_MAXIMIZED)
End Sub

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#5

Postby Benmore » Thu Nov 02, 2017 10:48 pm

แล้วโค้ดตรงส่วน password ต้องทำยังไงค่ะ
ตามหัวข้อตัวอย่างที่แนบไปก่อนหน้านี้ค่ะ

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#6

Postby snasui » Thu Nov 02, 2017 10:50 pm

:D อธิบายมาใหม่ ทบทวนสิ่งที่ผมถามไปในโพสต์ #2 แล้วตอบมาตามนั้นในเรื่องที่เกี่ยวกับ Password ครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#7

Postby Benmore » Thu Nov 02, 2017 10:58 pm

ลองแก้โค้ดตามที่บอกแล้วค่ะ แต่คือ ที่อยากให้เต็มจอไม่ใช่ Userform แต่เป็น ชีท Uniform_EGAS ตอนเปิดไฟล์มาค่ะ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#8

Postby Benmore » Thu Nov 02, 2017 11:05 pm

เช่น เมื่อกดปุ่มในหน้าการเบิกชุดยูนิฟอร์มในหน้า Uniform_EGAS
11.png

ก็จะแสดง Userform12 เพื่อให้กรอกข้อมูล
22.png

แล้วเมื่อกรอกข้อมูลถูกต้องเรียบร้อยก็จะแสดงที่หน้า Userform1
33.png



โค้ด Userform12

Code: Select all

Private Sub CommandButton1_Click()
' On Error Resume Next
 If TextBox1 = "" Or TextBox2 = "" Then
        MsgBox "กรุณากรอกข้อมูลให้ครบ"
        Exit Sub
    End If
            If TextBox1.Text = Worksheets("Username").Range("A2").Value Then
            If TextBox2.Text = Worksheets("Username").Range("B2").Value Then
                passOK = True
                UserForm12.Hide
                TextBox1.Text = ""
                TextBox2.Text = ""
           Else
              MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อักครั้ง", vbInformation, "แจ้งเตือน"
            End If
        End If
    If passOK = False Then
        MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อักครั้ง", vbInformation, "แจ้งเตือน"
    End If
End Sub
Private Sub UserForm_Terminate()
    ThisWorkbook.Close
End Sub
You do not have the required permissions to view the files attached to this post.

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#9

Postby snasui » Thu Nov 02, 2017 11:17 pm

:D จะต้องเขียน Code ให้เรียก Userform12 เมื่อมีการคลิกแต่ละปุ่ม และเมื่อกรอกข้อมูล Username และ Password ถูกต้องก็จะเรียก UserForm ที่เกี่ยวข้องมาแสดง

สามารถกำหนดตัวแปรเพิ่มว่าปัจจุบันคลิกปุ่มใด และเมื่อคลิกปุ่มนั้นแล้วต้องการจะให้เรียก UserForm ใดหลังจากที่มีการกรอก Username และ Password ถูกต้องแล้ว

กำหนดตัวแปรเป็น Public CallForm as String ไว้ใน Module ใด ๆ และเมื่อคลิกปุ่มใด ๆ เช่นคลิกปุ่มแรกจะกำหนดตัวแปร CallForm เป็น CallForm = "UserForm1" เช่นนี้เป็นต้น

ในขั้นตอนของการกรอก Username และ Password ใน Userform12 จะเพิ่ม Code สำหรับการเรียก UserForm ที่จะใช้งานโดยพิจารณาตัวแปร CallForm ตัวอย่างเช่น

Code: Select all

select case callform
   case "UserForm1"
     Userform1.Show
  case "Userform2"
     UserForm2.Show
  '...   
end select

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#10

Postby Benmore » Thu Nov 02, 2017 11:20 pm

พอจะมีตัวอย่างโค้ดไหมค่ะ อ่านแล้วงงๆไม่ค่อยเข้าใจ :)

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#11

Postby snasui » Thu Nov 02, 2017 11:22 pm

:D ตัวอยา่งคือที่เขียนไปตามด้านบน หากยังไม่เข้าใจก็ให้ศึกษาเพิ่มเติมก่อนครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#12

Postby Benmore » Fri Nov 03, 2017 1:05 pm

พอทำได้แล้วค่ะ ติดตรงที่ถ้ากดปิดแล้วให้ไฟล์นั้นปิดไปด้วยต้องแก้โค้ดตรงไหนค่ะ
แล้วเขียนโค้ดแบบไหนให้ไม่แสดงชีท จะแสดงก็ต่อเมื่อล็อคอินรหัสผ่านแล้วค่ะ

Code: Select all

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
        Cancel = True
       If MsgBox("ต้องการปิดไฟล์นี้ ใช่หรือไม่", vbYesNo) = vbYes Then
  End If
  End If
End Sub

:arrow: username admin
:arrow: pass 123
Uniform_EGAS(Ex).xlsm
You do not have the required permissions to view the files attached to this post.

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#13

Postby snasui » Fri Nov 03, 2017 7:50 pm

:D กรณีต้องการซ่อน Sheet ทั้งหมดให้กำหนดตอนเปิดไฟล์ โดยเขียน Code ไว้ที่ ThisWorkbook เป็นด้านล่างครับ

Code: Select all

Private Sub Workbook_Open()
    ActiveWindow.DisplayWorkbookTabs = False
End Sub


กรณีต้องการปิด Form แล้วให้ปิดไฟล์ไปด้วยสามารถกำหนด Code ตามด้านล่างครับ

Code: Select all

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
        Cancel = True
        If MsgBox("คุณต้องการปิดไฟลนี้ ใช่หรือไม่", vbYesNo) = vbYes Then
            ActiveWindow.DisplayWorkbookTabs = True
            ThisWorkbook.Close True
        End If
    End If
End Sub

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#14

Postby Benmore » Mon Nov 06, 2017 1:23 pm

ถ้ากำนดให้เมื่อเปิดไฟล์มาแล้วให้แสดงหน้า EGAS_Uniform เลยแล้วเมื่อต้องการให้แสดงชีทที่ถูกซ่อนไปต้องใสโค้ดตรงไหนเพิ่มค่ะ
You do not have the required permissions to view the files attached to this post.

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#15

Postby snasui » Mon Nov 06, 2017 9:33 pm

:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub Workbook_Open()
    ThisWorkbook.Worksheets("Uniform_EGAS").Activate
    ActiveWindow.DisplayWorkbookTabs = False
End Sub

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#16

Postby Benmore » Thu Nov 09, 2017 8:19 pm

snasui wrote::D ตัวอย่าง Code ครับ

Code: Select all

Private Sub Workbook_Open()
    ThisWorkbook.Worksheets("Uniform_EGAS").Activate
    ActiveWindow.DisplayWorkbookTabs = False
End Sub

ถ้าต้องการปิดแบบถามด้วยว่าบันทึกหรือไม่ต้องเพิ่มตรงไหนค่ะ

User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#17

Postby snasui » Thu Nov 09, 2017 8:22 pm

:D เขียนคำถามมาใหม่ครับ อธิบายสิ่งที่เป็นปัญหา สิ่งที่ต้องการให้เป็น ระบุ Code ที่เขียนมาเองแล้วจะได้ตอบต่อมาจากนั้น

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#18

Postby Benmore » Thu Nov 09, 2017 8:31 pm

snasui wrote::D เขียนคำถามมาใหม่ครับ อธิบายสิ่งที่เป็นปัญหา สิ่งที่ต้องการให้เป็น ระบุ Code ที่เขียนมาเองแล้วจะได้ตอบต่อมาจากนั้น

ปัญหาตอนนี้คือ ถ้ากดปุ่มปิดที่ฟอร์ม 12 แล้วไฟล์ก็จะถูกปิดไปเลย โดยไม่ถามว่าต้องการบันทึก หรือไม่
แล้วถ้าต้องการให้ใส่ข้อมูลในฟอร์ม 12 ครั้งเดียว แล้วก็กดปุ่มอื่นๆได้โดยไม่ต้องกรอกข้อมูลต้องแก้ตรงไหนค่ะ

Code: Select all

Private Sub CommandButton1_Click()
On Error Resume Next
 If TextBox1 = "" Or TextBox2 = "" Then
        MsgBox "กรุณากรอกข้อมูลให้ครบถ้วน"
        Exit Sub
    End If
            If TextBox1.Text = Worksheets("Username").Range("A2").Value Then
            If TextBox2.Text = Worksheets("Username").Range("B2").Value Then
                passOK = True
                UserForm12.Hide
                TextBox1.Text = ""
                TextBox2.Text = ""
           Else
              MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง", vbInformation, "แจ้งเตือน"
            End If
        End If
    If passOK = False Then
        MsgBox "รหัสผ่านไม่ถูกต้อง กรุณาพิมพ์ใหม่อีกครั้ง", vbInformation, "แจ้งเตือน"
    End If
    Select Case CallForm
   Case "UserForm1"
     UserForm1.Show
  Case "Userform2"
     UserForm2.Show
     Case "UserForm3"
     UserForm3.Show
     Case "UserForm5"
     UserForm5.Show
     Case "UserForm6"
     UserForm6.Show
     Case "UserForm7"
     UserForm7.Show
     Case "UserForm8"
     UserForm8.Show
     Case "UserForm9"
     UserForm9.Show
     Case "UserForm11"
     UserForm11.Show
     Case "UserForm12"
     UserForm12.Show
     End Select
End Sub
Private Sub UserForm_Terminate()
    ThisWorkbook.Close
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
        Cancel = True
        If MsgBox("คุณต้องการปิดไฟล์นี้ ใช่หรือไม่", vbYesNo) = vbYes Then
            ActiveWindow.DisplayWorkbookTabs = True
            ThisWorkbook.Close True
        End If
    End If
End Sub


User avatar
snasui
Site Admin
Site Admin
Posts: 22369
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: password (VBA)

#19

Postby snasui » Thu Nov 09, 2017 8:47 pm

Benmore wrote:แล้วถ้าต้องการให้ใส่ข้อมูลในฟอร์ม 12 ครั้งเดียว แล้วก็กดปุ่มอื่นๆได้โดยไม่ต้องกรอกข้อมูลต้องแก้ตรงไหนค่ะ


:D ให้สร้างตัวแปรมารับว่าได้กรอกข้อมูลถูกต้องแล้ว อาจจะเช่น

public pwdCorrect as boolean

และเมื่อกรอกข้อมูลถูกต้องแล้วให้กำหนดpwdCorrect = True ในการกดปุ่มอื่นก็ให้มาเช็คว่า pwdCorrect เป็น True แล้วใช่หรือไม่ หากใช่ก็ไม่ต้องเปิด Form ให้กรอก Username และ Password อีก เช่นนี้เป็นต้นครับ

Benmore wrote:ปัญหาตอนนี้คือ ถ้ากดปุ่มปิดที่ฟอร์ม 12 แล้วไฟล์ก็จะถูกปิดไปเลย โดยไม่ถามว่าต้องการบันทึก หรือไม่


Code ที่เขียนไว้มี Save ไฟล์อยู่แล้ว ช่วยอธิบายคำว่าบันทึกว่าทำงานอย่างไร จะได้เข้าใจตรงกันครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: password (VBA)

#20

Postby Benmore » Sun Nov 12, 2017 9:54 am

ตรงนี้ได้แล้ว ขอบตุณค่ะ


Return to “Excel”

Who is online

Users browsing this forum: Alexa [Bot] and 25 guests