snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#1
Post
by March201711 » Fri Mar 09, 2018 4:22 pm
ใน sheet แต่ละ sheet มี ปุ่มกดให้ไปที่จุดตั้งต้น เช่น ถ้า sheet เดือน Feb กดปุ่มสีฟ้า จะกลับไปที่ sheet Jan
จะมีวิธีเขียน code vba อย่างไรคะ เพราะ ปุ่มกดมีเป็น 50 กว่า ปุ่ม ต้องมาเปลี่ยนทุกเดือน ไปที่ edit hyperlink ทำให้เสียเวลามากค่ะ
Code: Select all
Sheets("Feb").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
Range("H6").Select
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#2
Post
by March201711 » Fri Mar 09, 2018 4:25 pm
เอกสารแนบค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#3
Post
by snasui » Fri Mar 09, 2018 7:01 pm
แนบไฟล์ที่มีนามสกุลเป็น .xlsm ซึ่งมี Code ในความเห็น #1 อยู่ด้วยจะได้สะดวกต่อการทดสอบครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#4
Post
by March201711 » Sat Mar 10, 2018 11:01 am
ถ้าไม่ใช้เป็น code vba จะมีวิธีอื่นไหมค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#5
Post
by snasui » Sat Mar 10, 2018 11:08 am
March201711 wrote: Fri Mar 09, 2018 4:22 pm
ใน sheet แต่ละ sheet มี ปุ่มกดให้ไปที่จุดตั้งต้น เช่น ถ้า sheet เดือน Feb กดปุ่มสีฟ้า จะกลับไปที่ sheet Jan
จะมีวิธีเขียน code vba อย่างไรคะ เพราะ ปุ่มกดมีเป็น 50 กว่า ปุ่ม ต้องมาเปลี่ยนทุกเดือน ไปที่ edit hyperlink ทำให้เสียเวลามากค่ะ
Code: Select all
Sheets("Feb").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 10")).Select
Selection.ShapeRange.Item(1).Hyperlink.Address = ""
Range("H6").Select
ในไฟล์แนบไม่พบว่ามี Code ครับ ที่อธิบายมายังไม่กระจ่าง ช่วยแจ้งมาว่าปุ่มสีฟ้าอยู่ตำแหน่งใด ได้กำหนด Code ไว้อย่างไร ควรระบุให้เข้าถึงวัตถุ ชีต เซลล์ ที่มีอยู่จริงครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#6
Post
by March201711 » Sat Mar 10, 2018 11:22 am
แก้ไขfileให้ใหม่แล้วค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#7
Post
by snasui » Sat Mar 10, 2018 11:49 am
ช่วยสรุปอีกทีว่าต้องการจะทำอะไรครับ
แจ้งมาว่าต้องการคลิกปุ่มไหน แล้วต้องการให้แสดงผลอย่างไร
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#8
Post
by March201711 » Sat Mar 10, 2018 11:56 am
ต้องดารให้กดปุ่มสีฟ่าค่ะ แล้วไปcheck ที่ sheet mar จากนั้นไปclickที่ปุ่ม A10 สีส้ม ดูว่า hyperlink ไปที่ cell A10 sheet mar หรือไม่
แต่เท่าที่ทำแล้ว มันวิ่งที่ sheet jan cell A10 ค่ะ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#9
Post
by snasui » Sat Mar 10, 2018 12:45 pm
ไม่ทราบว่าสร้าง Object ต่าง ๆ ด้วยวิธีใดถึงกลายเป็นชื่อเดียวกันไปได้ ปกติแล้ว Object แม้จะเป็นชนิดเดียวกันก็จะได้ชื่อที่ต่างกันครับ
วิธีการแก้ไขให้ลบ Object ทิ้งทั้งหมดแล้วแล้วสร้างขึ้นมาใหม่ระบุ Range ให้กับ Object เช่นเดิม เมื่อสร้างใหม่จะต้องได้ชื่อทีต่างกัน สังเกตโดยการกดแป้น Ctrl+Click ที่ Object นั้นๆ แล้วสังเกตที่ Name Box (ช่องซ้ายสุดของ Formula Bar)
หลังจากสร้าง Object แต่ละชีตครบตามต้องการแล้วให้ Assign Macro ให้กับ Object แต่ละอันไปยัง Sub ที่ชื่อ GotoCell ตามด้านล่าง ครับ
Code: Select all
Sub GotoCell()
Dim obj As String
On Error Resume Next
obj = Application.Caller
If InStr(obj, "Rounded") Then
Range(ActiveSheet.Shapes(obj).DrawingObject.Caption).Select
End If
End Sub
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#10
Post
by March201711 » Sat Mar 10, 2018 3:12 pm
ทำตามที่อาจารย์แนะนำแล้วค่ะ แต่sheet แต่ละ sheet แต่ละเดือนไม่ไปตาม cell ในแต่ละ object เลยค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Sat Mar 10, 2018 3:30 pm
เขียนคำว่า
Rounded ให้ตรงตามตัวอักษรที่ผมแจ้งไป ตัวใหญ่ตัวเล็กถือว่ามีความแตกต่างกันครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#12
Post
by March201711 » Sat Mar 10, 2018 4:06 pm
ทำได้แล้วค่ะ ไม่คิดว่า คำแต่ละมีความเฉพาะของcode มากค่ะ ขอบคุณมากค่ะอาจารย์