snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
maya
Member
Posts: 21 Joined: Wed Apr 04, 2012 11:26 am
#1
Post
by maya » Wed Apr 11, 2012 3:09 pm
หากต้องการ veryhidden ทุกชีท อัตโนมัติทุกครั้งที่เปิดสมุดงานขึ้นมาใหม่ ยกเว้นชีท Main สามรถทำได้ไหมคะ
songsug
Member
Posts: 71 Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร
#2
Post
by songsug » Wed Apr 11, 2012 3:39 pm
แบบนี้ได้ไหมครับ
Code: Select all
Private Sub Workbook_Open() 'ตอนเปิดไฟล์ ซ่อนหมดเลย
For Each sh In Worksheets
If sh.Name <> "Main" Then sh.Visible = xlSheetVeryHidden
Next
End Sub
Sub UnHidden() 'อันนี้ไว้ยกเลิกซ่อนนะครับ
For Each sh In Worksheets
sh.Visible = xlSheetVisible
Next
End Sub
You do not have the required permissions to view the files attached to this post.
maya
Member
Posts: 21 Joined: Wed Apr 04, 2012 11:26 am
#3
Post
by maya » Wed Apr 11, 2012 3:46 pm
It's work
Thank you for your help, K'Songsug. And can I ask u more, Why we have to put that code in "ThisWorkbook".
songsug
Member
Posts: 71 Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร
#4
Post
by songsug » Wed Apr 11, 2012 3:49 pm
ที่เราต้องนำ Code ไปไว้ที่ ThisWorkbook เพราะเราจะกระทำกับ Events หรือสถานะการณ์ ที่มีอยู่ใน Workbook นั้นๆครับ แต่ถ้าหากเราต้องการกระทำกับ worksheets เราก็ต้องนำ Code ไปไว้ใน Worksheet ที่ต้องการครับ ซึ่งตัวเลือกต้อง Events ก็จะต่างกันออกไป
เช่น การกระทำต่อสมุดงาน อาจมีตัวเลือก เมื่อเปิด เมื่อปิด เมื่อบันทึก เมื่อสร้าง sheet ใหม่ หรือเมื่อลบ sheet เป็นต้นจ้า
แต่ถ้าเป็น worksheet เราก็จะกระทำตามเงื่อนไขที่เราเลือก เช่น เมื่อมาเลือก sheet ที่กดหนด เมื่อมีการเปลี่ยนแปลง เมื่อมีการแทรกแถว หรือคอลัมน์ .... ประมาณนี้ล่ะ
ถ้าผมอธิบายผิดพลาด รบกวนท่านอื่นๆเสริมให้หน่อยนะครับ ผมพูดไม่เก่ง แต่รักหมดใจ
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#5
Post
by godman » Wed Apr 11, 2012 7:43 pm
ขอบคุณคุณเจ้าของกระทู้ครับที่ ถามคำถามที่ผมเองก็อยากได้อยู่เหมือนกัน เพราะไม่อยากทำให้ผู้ที่ใช้ข้อมูลเรารู้สึกว่าข้อมูลมันเยอะแยะหลายชีตเหลือเกิน ต้องการให้ผู้ใช้ค่อยๆเลือกชี้ตที่สนใจแล้วคลิ้ก hyperlink เข้าไปอ่านเอา แต่ว่าผม apply macro มาใช้แล้วแต่ทำไมมันไม่ได้หละครับ รบกวนดูให้ด้วยครับว่าผมผิดที่ใหน
You do not have the required permissions to view the files attached to this post.
tupthai
Bronze
Posts: 302 Joined: Sat Feb 04, 2012 2:49 pm
#6
Post
by tupthai » Wed Apr 11, 2012 8:26 pm
จาก
For Each sh In Worksheets
เปลี่ยนเป็น
For Each sh In sheets
จะรวม Chart ด้วยครับ
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#7
Post
by godman » Wed Apr 11, 2012 9:38 pm
ขอบคุณครับ แต่เมือผมทดลองนำไปใช้ดู ใน sheet main ผมทำ hyperlink ไว้ทำไปกดแล้วมันไม่ไปหละครับ ผมอยากให้มันเปิด sheet ที่กด hyperlink ได้
และความต้องการอันดับต่อมาคือ เมื่อละจาก sheet ที่กำลังเปิดอยู่ก็ให้ sheet นั้นถูกซ่อนไว้ ให้คงไว้แต่หน้า main เหมือนสภาพเดิม ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
tupthai
Bronze
Posts: 302 Joined: Sat Feb 04, 2012 2:49 pm
#8
Post
by tupthai » Wed Apr 11, 2012 10:28 pm
ไว้ใน sheet Main
Code: Select all
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Worksheets(Mid(Target.SubAddress, 2, InStr(1, Target.SubAddress, "!") - 3)).Visible = xlSheetVisible
Application.EnableEvents = False
Target.Follow
Application.EnableEvents = True
End Sub
เมื่อละจาก sheet ที่กำลังเปิดอยู่ก็ให้ sheet นั้นถูกซ่อนไว้ ให้คงไว้แต่หน้า main เหมือนสภาพเดิม
ชีทอื่นๆทุกชีทยกเว้น Main ใช้code
Code: Select all
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Worksheets(Mid(Target.SubAddress, 2, InStr(1, Target.SubAddress, "!") - 3)).Visible = xlSheetVeryHidden
Application.EnableEvents = False
Target.Follow
Application.EnableEvents = True
End Sub
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#9
Post
by godman » Thu Apr 12, 2012 9:46 pm
แจ้งผลการใช้งานครับ ใช้ได้ดีระดับหนึ่งมากครับ ขอบพระคุณครับ