Page 1 of 1

input Password UnProtect Sheet

Posted: Thu Jun 11, 2020 2:18 pm
by yodpao.b
คลิก cancel ต้องการให้อยู่หน้าเดิม ครับ

Code: Select all

Private Sub Image1_Click()
Dim myValue As Variant
myValue = InputBox("Give me some input Password UnProtect Sheet", "Password UnProtect Sheet")

ActiveSheet.Unprotect Password:=myValue
Sheets("Database").Select

End Sub
จากสูตร เมื่อใส่ Password แล้ว คลิก ok cold สั่งให้ไปหน้า Database ถูกต้อง
แต่ถ้าคลิก cancel ก็ยังไปหน้า Database ผิด ครับ
ต้องการให้อยู่หน้าเดิม ครับ

Re: input Password UnProtect Sheet

Posted: Thu Jun 11, 2020 4:46 pm
by puriwutpokin
ตัวอย่างโค้ดครัล

Code: Select all

Private Sub Image1_Click()
Dim myValue As Variant
myValue = InputBox("Give me some input Password UnProtect Sheet", "Password UnProtect Sheet")
If myValue = "" Then
Exit Sub
Else
ActiveSheet.Unprotect Password:=myValue
Sheets("Database").Select
End If
End Sub

Re: input Password UnProtect Sheet

Posted: Thu Jun 11, 2020 6:26 pm
by yodpao.b
ขอบคุณครับ

จาก code มีคำถามเพิ่ม 2 ข้อครับ
1. Exit Sub ไฟล์นี้ผมใช้เยอะมากเลย แต่ไม่เคยใช้กับ Else ไม่นึกว่าจะใช้กันได้
ที่ผมเข้าใจนึกว่า Exit Sub ให้ออกจาก sub ไปเลย code อะไรที่อยู่บรรทัดล่างไม่ต้องทำ
แต่สำหรับ code ที่ได้นี้บรรทัดล่างก็ทำ
คำถาม ผมเข้าใจผิดใช่ไหมครับที่ว่าบรรทัด ถัดจาก Exit Sub ไม่ต้องทำ

2.ผมลองเอา Exit Sub

Code: Select all

Dim myValue As Variant
myValue = InputBox("Give me some input Password UnProtect Sheet", "Password UnProtect Sheet")
If myValue = "" Then

Else
ActiveSheet.Unprotect Password:=myValue
Sheets("Database").Select
End If
เมื่อเอา Exit Sub ออก ลองทำแล้ว ผลเหมือนกัน กับมี Exit Sub เลย(ผมอาจจะทดลองไม่ครอบคุม จึงไม่แนใจถึงผลลัพธ์ที่ออกมา)
คำถาม ถูกต้องไหมครับ จาก code "Exit Sub" ไม่มีความจำเป็น

Re: input Password UnProtect Sheet

Posted: Thu Jun 11, 2020 8:38 pm
by snasui
yodpao.b wrote: Thu Jun 11, 2020 6:26 pm ที่ผมเข้าใจนึกว่า Exit Sub ให้ออกจาก sub ไปเลย code อะไรที่อยู่บรรทัดล่างไม่ต้องทำ
:D เข้าใจถูกแล้วและต้องเป็นเช่นนั้นครับ
yodpao.b wrote: Thu Jun 11, 2020 6:26 pm แต่สำหรับ code ที่ได้นี้บรรทัดล่างก็ทำ
Code จะรันต่อหากไม่เข้าเงื่อนไขของการดักให้ Exit Sub เมื่อใดที่ Exit Sub แล้วจะไม่มีทางทำต่ออย่างแน่นอน ควรติดตาม Code ด้วยการ Debug ทีละบรรทัด ผมเคยแนะนำไปบ่อยครั้ง กรุณาทำด้วยครับ

หาก Debug แล้วพบว่า Code รันมาถึง Exit Sub แล้วแต่ยัง Run ต่อในบรรทัดล่าง ๆ อีก (ซึ่งตามหลักการแล้วไม่มีโอกาสที่จะเป็นไปได้) จึงควรนำมาถามกันต่อครับ

Re: input Password UnProtect Sheet

Posted: Thu Jun 11, 2020 10:58 pm
by puriwutpokin
ปรับให้ สั้นแบบนี้ก็ได้ครับ :D

Code: Select all

Private Sub Image1_Click()
Dim myValue As Variant
myValue = InputBox("Give me some input Password UnProtect Sheet", "Password UnProtect Sheet")
If myValue = "" Then Exit Sub
ActiveSheet.Unprotect Password:=myValue
Sheets("Database").Select
End Sub

Re: input Password UnProtect Sheet

Posted: Fri Jun 12, 2020 3:18 am
by yodpao.b
ขอบคุณมากครับ
สำหรับคำตอบในคำถามที่ผมถาม
และ code ที่ได้


ต้องขอโทษจริงๆ ครับ ใส่ความต้องการผิด คือเข้าใจขั้นตอนผิดไป
คงง่วงนะครับไม่ได้นอน เลยดูไม่ถี่ถ้วน

ดูสิ่งที่ขอใหม่ครับ

Re: input Password UnProtect Sheet

Posted: Fri Jun 12, 2020 3:24 am
by yodpao.b
0.JPG

Password คือ 0
ต้องการ ใส่ Password ในช่อง input
1.ถ้าในช่อง input ไม่มีค่าใดๆ ไม่ว่าจะคลิก ok หรือ cancel ให้อยู่ sheet1
2.ถ้าในช่อง input มีค่าใดๆ ที่ไม่ใช่ Password(0) ไม่ว่าจะคลิก ok หรือ cancel ให้อยู่ sheet1
3.ถ้าในช่อง input มีค่า Password คือ "0" คลิก cancel ให้อยู่ sheet1
4.ถ้าในช่อง input มีค่า Password คือ "0" คลิก ok ให้อยู่ sheet2 แล้วให้ทำการ Unprotect sheet2

รอบกวนด้วยครับ แก้ปัญหา มา 3 ชั่วโมงแล้วครับ ได้เต็มที่ ที่ code "Sub Macro5"
code "Sub Macro5" ติดปัญหาที่ ข้อ 2 ครับ
2.ถ้าในช่อง input มีค่าใดๆ ที่ไม่ใช่ Password(0) ไม่ว่าจะคลิก ok หรือ cancel ให้อยู่ sheet1
จาก code ใส่ค่า "1" เมื่อคลิก ok code สั่งให้แก้ Unprotect sheet2 แล้วไป sheet2
ซึ่งผิด ครับ มันต้องอยู่ sheet1 เพราะ Password ไม่ใช่

code ที่ใช้อยู่

Code: Select all

Sub Macro5()
On Error Resume Next
Dim myValue As Variant
myValue = InputBox("Give me some input Password UnProtect Sheet", "Password UnProtect Sheet")
If myValue <> "" Then
Sheets("Sheet2").Unprotect Password:=myValue
Sheets("Sheet2").Select
Else
Sheets("Sheet1").Select
End If
End Sub

Re: input Password UnProtect Sheet

Posted: Fri Jun 12, 2020 3:50 am
by yodpao.b
ต้องขอโทษอีกที่ครับ

หลังจากพิจรณาที่เขียนปัญหาลงไป ดูที่ละบรรทัด
จึงเห็นว่า code ที่ได้มานั้นถูกต้องแล้ว เปลี่ยนตรงข้อแม้เท่านั้น
ที่ข้อแม้มองผิดไป
ต้องขอขอบคุณผู้ที่ให้ แนะนำ code ด้วยครับ
แสดงผลได้ตามต้องการทุกเงื่อนไขแล้วครับ

ทั้งนี้ในความหมายของ Exit Sub ที่ท่านอาจารย์ได้อธิบายมาก็เข้าใจเช่นกันครับ

code ดังนี้

Code: Select all

Sub Macro10()

Dim myValue As Variant
myValue = InputBox("Give me some input Password UnProtect Sheet", "Password UnProtect Sheet")
If myValue <> 0 Then Exit Sub
Sheets("Sheet2").Unprotect Password:=myValue
Sheets("Sheet2").Select

End Sub