Page 2 of 2
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Thu Dec 28, 2017 10:00 pm
by March201711
ทำได้แล้ว ขอบคุณอาจารย์มากๆเลยคะ ได้ความรู้เพิ่มขึ้นจากไม่ค่อยรู้เรื่อง code vba มาก่อนเลยค่ะ

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 8:03 am
by alundc45
สอบถามครับ ถ้าเรามี 10 sheet แต่เราต้องการเปลี่ยนแค่ 5 เราระบุชื่อชื่อไปเลยได้ไหมครับ เช่น sheet1,sheet6,sheet3
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 8:12 am
by snasui

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

ติดแล้วค่อยถามกันครับ
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 9:10 am
by alundc45
alundc45 wrote: Sun Nov 04, 2018 8:03 am
สอบถามครับ ถ้าเรามี 10 sheet แต่เราต้องการเปลี่ยนแค่ 5 เราระบุชื่อชื่อไปเลยได้ไหมครับ เช่น sheet1,sheet6,sheet3
ขอโทษด้วยครับที่ให้ข้อมูลไม่ละเอียด ผมทำไฟล์แนบมาตามนี้ครับผม
Code ที่ใช้ --->> https://www.uppic.org/image-D973_5BDE58E9.jpg
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 10:44 am
by snasui

กรุณาแนบไฟล์มาที่ฟอรัมนี้ (กฎข้อ 4 ด้านบน

) ครับ
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 11:24 am
by alundc45
snasui wrote: Sun Nov 04, 2018 10:44 am

กรุณาแนบไฟล์มาที่ฟอรัมนี้ (กฎข้อ 4 ด้านบน

) ครับ
ขอโทษอีกรอบครับผมสำหรับไฟล์แนบตามนี้เลยครับผม
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 12:01 pm
by snasui

ตัวอย่าง 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
การเปลี่ยนชื่อชีต จะเปลี่ยนให้ชื่อซ้ำกันไม่ได้ครับ
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 12:59 pm
by alundc45
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
การเปลี่ยนชื่อชีต จะเปลี่ยนให้ชื่อซ้ำกันไม่ได้ครับ
ขอบคุณสำหรับคำตอบครับ แต่ผมติดปัญหาตามไฟล์นี้ครับ
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 1:07 pm
by snasui

ตามภาพที่แนบมาติดปัญหาอะไรกรุณาอธิบายมาในช่องความเห็นนี้ด้วยครับ
นอกจากนี้กรุณาปรับ Code มาเองก่อนเสมอ ติดตรงไหนค่อยถามกันต่อครับ
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 1:20 pm
by alundc45
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
Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 1:31 pm
by snasui

ตัวอย่างการปรับ 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 ตัวหลังของชี่อชีตเดิม
การสอบถามปัญหาควรระบุปัญหาที่เป็นและสิ่งที่ต้องการให้ชัดเจนว่าต้องการจะทำอะไร ด้วยเงื่อนไขใด เพื่อจะได้ตอบได้กระชับตรงประเด็นครับ

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]
Posted: Sun Nov 04, 2018 3:57 pm
by alundc45
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 ตัวหลังของชี่อชีตเดิม
การสอบถามปัญหาควรระบุปัญหาที่เป็นและสิ่งที่ต้องการให้ชัดเจนว่าต้องการจะทำอะไร ด้วยเงื่อนไขใด เพื่อจะได้ตอบได้กระชับตรงประเด็นครับ
ขอขอบพระคุณมากครับสำหรับคำตอบที่ได้มามีประโยชน์และทำให้งานมีความรวดเร็วมากขึ้นครับผม
