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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#21
Post
by March201711 » Thu Dec 28, 2017 10:00 pm
ทำได้แล้ว ขอบคุณอาจารย์มากๆเลยคะ ได้ความรู้เพิ่มขึ้นจากไม่ค่อยรู้เรื่อง code vba มาก่อนเลยค่ะ
alundc45
Member
Posts: 9 Joined: Sun Nov 04, 2018 6:42 am
#22
Post
by alundc45 » Sun Nov 04, 2018 8:03 am
สอบถามครับ ถ้าเรามี 10 sheet แต่เราต้องการเปลี่ยนแค่ 5 เราระบุชื่อชื่อไปเลยได้ไหมครับ เช่น sheet1,sheet6,sheet3
snasui
Site Admin
Posts: 31153 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#23
Post
by snasui » Sun Nov 04, 2018 8:12 am
การเขียนโปรแกรมด้วย VBA สามารถทำได้แทบทุกอย่างครับ
กรุณาแนบไฟล์ตัวอย่างพร้อมชี้ให้เห็นว่าต้องการจะทำอะไร ที่ไหน อย่างไร ต้องการคำตอบเป็นอย่างไร จะได้ช่วยดูต่อไปจากนั้น
สำหรับ VBA จะต้องเขียนกันมาเองก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบน
ติดแล้วค่อยถามกันครับ
alundc45
Member
Posts: 9 Joined: Sun Nov 04, 2018 6:42 am
#24
Post
by alundc45 » Sun Nov 04, 2018 9:10 am
alundc45 wrote: Sun Nov 04, 2018 8:03 am
สอบถามครับ ถ้าเรามี 10 sheet แต่เราต้องการเปลี่ยนแค่ 5 เราระบุชื่อชื่อไปเลยได้ไหมครับ เช่น sheet1,sheet6,sheet3
ขอโทษด้วยครับที่ให้ข้อมูลไม่ละเอียด ผมทำไฟล์แนบมาตามนี้ครับผม
Code ที่ใช้ --->> https://www.uppic.org/image-D973_5BDE58E9.jpg
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31153 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#25
Post
by snasui » Sun Nov 04, 2018 10:44 am
กรุณาแนบไฟล์มาที่ฟอรัมนี้ (กฎข้อ 4 ด้านบน
) ครับ
alundc45
Member
Posts: 9 Joined: Sun Nov 04, 2018 6:42 am
#26
Post
by alundc45 » Sun Nov 04, 2018 11:24 am
snasui wrote: Sun Nov 04, 2018 10:44 am
กรุณาแนบไฟล์มาที่ฟอรัมนี้ (กฎข้อ 4 ด้านบน
) ครับ
ขอโทษอีกรอบครับผมสำหรับไฟล์แนบตามนี้เลยครับผม
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31153 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#27
Post
by snasui » Sun Nov 04, 2018 12:01 pm
ตัวอย่าง Code ครับ
Code: Select all
Sub Test()
Dim WS As Worksheet
On Error Resume Next
For Each WS In Sheets
If VBA.Right(WS.Name, 2) = "62" Then
WS.Name = WS.Range("AP3").Value
End If
Next WS
End Sub
การเปลี่ยนชื่อชีต จะเปลี่ยนให้ชื่อซ้ำกันไม่ได้ครับ
alundc45
Member
Posts: 9 Joined: Sun Nov 04, 2018 6:42 am
#28
Post
by alundc45 » Sun Nov 04, 2018 12:59 pm
snasui wrote: Sun Nov 04, 2018 12:01 pm
ตัวอย่าง Code ครับ
Code: Select all
Sub Test()
Dim WS As Worksheet
On Error Resume Next
For Each WS In Sheets
If VBA.Right(WS.Name, 2) = "62" Then
WS.Name = WS.Range("AP3").Value
End If
Next WS
End Sub
การเปลี่ยนชื่อชีต จะเปลี่ยนให้ชื่อซ้ำกันไม่ได้ครับ
ขอบคุณสำหรับคำตอบครับ แต่ผมติดปัญหาตามไฟล์นี้ครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31153 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#29
Post
by snasui » Sun Nov 04, 2018 1:07 pm
ตามภาพที่แนบมาติดปัญหาอะไรกรุณาอธิบายมาในช่องความเห็นนี้ด้วยครับ
นอกจากนี้กรุณาปรับ Code มาเองก่อนเสมอ ติดตรงไหนค่อยถามกันต่อครับ
alundc45
Member
Posts: 9 Joined: Sun Nov 04, 2018 6:42 am
#30
Post
by alundc45 » Sun Nov 04, 2018 1:20 pm
snasui wrote: Sun Nov 04, 2018 1:07 pm
ตามภาพที่แนบมาติดปัญหาอะไรกรุณาอธิบายมาในช่องความเห็นนี้ด้วยครับ
นอกจากนี้กรุณาปรับ Code มาเองก่อนเสมอ ติดตรงไหนค่อยถามกันต่อครับ
1. ปัญหาคือพอเปลี่ยนข้อความในช่อง AP3 แล้วลองรัน CODE ดู ปรากฏว่า ชื่อ Sheet ไม่ยอมเปลี่ยน (ปี) ตามข้อความในช่อง AP3 ที่ผมกรอกเปลี่ยนปีเข้าไปใหม่ ของทุก Sheet ครับผม
2. ผมได้ทดสอบโดยการเปลี่ยนเป็นข้อความอื่นในช่อง AP3 รัน CODE แล้วชื่อ Sheet ไม่ยอมเปลี่ยนตามครับ
3. ทุกชีต ๆ ผมได้เปลี่ยนช่อง AP3 เป็นเดือนปีทั้งหมดครับ ซึ่งต้องการให้ ชื่อ Sheet เป็นชื่อ เดือน ม.ค62 จน ถึง เดือน ธ.ค62
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31153 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#31
Post
by snasui » Sun Nov 04, 2018 1:31 pm
ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code
If IsNumeric(VBA.Right(WS.Name, 2)) Then
WS.Name = WS.Range("AP3").Value
End If
'Other code
ตรง Other code คือ Code เดิมครับ
ส่วนที่ถามมาตามภาพว่าคืออะไร คำตอบคืออักขระ 2 ตัวหลังของชี่อชีตเดิม
การสอบถามปัญหาควรระบุปัญหาที่เป็นและสิ่งที่ต้องการให้ชัดเจนว่าต้องการจะทำอะไร ด้วยเงื่อนไขใด เพื่อจะได้ตอบได้กระชับตรงประเด็นครับ
alundc45
Member
Posts: 9 Joined: Sun Nov 04, 2018 6:42 am
#32
Post
by alundc45 » Sun Nov 04, 2018 3:57 pm
snasui wrote: Sun Nov 04, 2018 1:31 pm
ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code
If IsNumeric(VBA.Right(WS.Name, 2)) Then
WS.Name = WS.Range("AP3").Value
End If
'Other code
ตรง Other code คือ Code เดิมครับ
ส่วนที่ถามมาตามภาพว่าคืออะไร คำตอบคืออักขระ 2 ตัวหลังของชี่อชีตเดิม
การสอบถามปัญหาควรระบุปัญหาที่เป็นและสิ่งที่ต้องการให้ชัดเจนว่าต้องการจะทำอะไร ด้วยเงื่อนไขใด เพื่อจะได้ตอบได้กระชับตรงประเด็นครับ
ขอขอบพระคุณมากครับสำหรับคำตอบที่ได้มามีประโยชน์และทำให้งานมีความรวดเร็วมากขึ้นครับผม
You do not have the required permissions to view the files attached to this post.