:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Arm_anucha
Member
Member
Posts: 47
Joined: Tue Jul 04, 2017 2:57 pm

เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#1

Post by Arm_anucha »

รบกวนขอสอบถามหน่อยครับ อยากให้เมื่อเวลาที่เราเปลี่ยนชื่อที่ Cell A1 เสร็จแล้ว ชื่อ Sheet ก็จะเปลี่ยนตามทันที โดยที่ไม่ต้องไปกด
Run จะเพิ่มเติม Code อย่างไรดีครับ

Code: Select all

Sub Test()

Dim WS As Worksheet

For Each WS In Sheets
   WS.Name = WS.Range("A1")
Next WS

End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#2

Post by snasui »

:D ใช้ Event Change เข้ามาช่วยได้ครับ

ไปที่ VBE > ไปที่ Windows Project Explorer > Double Click ที่ ThisWorkbook > เพิ่ม Code ตามด้านล่างครับ

Code: Select all

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address(0, 0) = "A1" Then
        Call Test
    End If
End Sub
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#3

Post by March201711 »

สงสัยคะ เพิ่มไปเพราะอะไรค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#4

Post by snasui »

March201711 wrote:สงสัยคะ เพิ่มไปเพราะอะไรค่ะ
:D ประโยคนี้เป็นคำถาม จะต้องลงท้ายด้วย "คะ" ครับ

ที่ถูกคือ

สงสัยค่ะ เพิ่มไปเพราะอะไรคะ

ผมพยายามแจ้งทุกครั้งเพื่อให้ทบทวนการใช้งาน แต่ยังพบว่ายังเป็นเหมือนเดิม ในโอกาสต่อไป ผมจะให้เขียนแก้เองทุก ๆ โพสต์จนกว่าจะเขียนได้ถูกต้องนะครับ

สำหรับที่ถามมา คำตอบคือเพิ่มไปเพื่อให้เป็นอัตโนมัติ เมื่อคีย์ค่าเข้าไปในเซลล์ A1 แล้ว Enter Code นั้นจะทำงานทันทีครับ
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#5

Post by March201711 »

ถ้าเราจะเปลี่ยนแต่ sheet เดียวต้องแก้ code vba อย่างไรคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#6

Post by snasui »

:D นำตัวแปร Sh มาตรวจสอบว่าเป็นชีตที่ต้องการให้ Code ทำงานหรือไม่ครับ

เช่น

Code: Select all

    If Sh.Name = "Sheet1" And Target.Address(0, 0) = "A1" Then
        Call Test
    End If
ปกติผมไม่ตอบคำถามที่ยังไม่ปรับ Code มาเองหลังจากที่ผมตอบไปแล้ว หากมีคำถามต่อเนื่องไป กรุณาปรับ Code ที่ผมตอบไปมาเองก่อน ติดแล้วค่อยถามกันครับ
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#7

Post by March201711 »

ขอบคุณค่ะ อาจารย์
Arm_anucha
Member
Member
Posts: 47
Joined: Tue Jul 04, 2017 2:57 pm

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#8

Post by Arm_anucha »

ตรงตามความต้องการ
ขอบคุณครับอาจารย์
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#9

Post by March201711 »

อาจารย์คะ เขียนcode ตามที่อาจารย์บอกแล้ว พอกด enter จะมี pop up ขึ้นมาแจ้งว่าให้แก้ไขค่ะ ไม่ทราบว่าทำผิดขั้นตอนตรงไหนบ้างคะ
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#10

Post by DhitiBank »

ใน ThisWorkbook มีโพรซีเยอร์ชื่อซ้ำกันครับ คือ Workbook_SheetChange ให้ลบอันที่ไม่ต้องการทิ้งก่อน แล้วค่อยทดสอบใหม่ครับ
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#11

Post by March201711 »

ลบอันที่ไม่ต้องการออกแล้วก็ยังไม่ได้คะ ขึ้น pop up มาแบบเดิมค่ะ
ตามเอกสารแนบค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#12

Post by snasui »

:D Call test ที่อยู่หลัง Then ให้ตัดลงมาเป็นบรรทัดใหม่ ถ้าไม่ตัดลงมาเป็นบรรทัดใหม่ให้ลบ End If ทิ้งไปครับ
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#13

Post by March201711 »

ก็ยังไม่ได้น่ะค่ะ ก็เปลี่ยนชื่อเฉพาะชื่อ sheet1 เป็นชื่อตาม cell a1อาจารย์บอกว่าแค่พิมพ์ชื่อ ตรง cell a1แล้ว enter sheet จะเปลี่ยนชื่อ auto แต่ก็ไม่ได้น่ะค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#14

Post by snasui »

:D ผมดาวน์โหลดไฟล์มาทดสอบแล้วเปลี่ยนได้ปกติครับ
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#15

Post by March201711 »

อาจารย์ช่วยบอกขั้นตอนได้ไหมคะ สงสัยข้าพเจ้าทำปิดขั้นตอนบางอย่างค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#16

Post by snasui »

:D ขั้นตอนแค่เปลี่ยนชื่อในเซลล์ A1 ของ Sheet1 แล้ว Enter ยกเว้นไม่มีชีตที่ชื่อ Sheet1 หรือไม่ได้เปลี่ยนค่าในเซลล์ A1 ของชีตที่ชื่อว่า Sheet1 ครับ

เมื่อแก้ไขแล้วลองปิดไฟล์แล้วเปิดขึ้นมาใหม่แล้วค่อยทดสอบครับ
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#17

Post by March201711 »

ไม่เห็นได้เลยคะ แก้แล้ว save ปิดแล้วเปิดใหม่ แล้วไปที่ cell a1 double click ใน cell a1 แล้ว enter ก็ไม่ได้ค่ะ งงจัง
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#18

Post by snasui »

:D ลองเข้าหน้าต่าง VBE (หน้าต่างที่ใช้เขียน Code) จากนั้นกดแป้น Ctrl+G เพื่อเปิดหน้าต่าง Immediate Windows จากนั้นคีย์ Statement ด้านล่างนี้ลงไปในหน้าต่าง Immediate Windows แล้ว Enter

application.EnableEvents = true

จากนั้นทดสอบการคีย์ค่าในเซลล์ A1 ของ Sheet1 อีกรอบครับ

ดูเหมือนจะแจ้งปัญหามาไม่ชัดเจนนะครับ ในไฟล์แนบพบว่า Code จะเปลี่ยนชื่อให้ทุกชีต แสดงว่า Events ทำงานแล้ว

ที่เปลี่ยนทุกชีตเพราะเขียน Code ให้ Loop เปลี่ยนทุกชิต หากต้องการจะเปลี่ยนเฉพาะ Sheet1 ก็ต้องปรับไม่ให้มีการ Loop เช่นเปลี่ยนเป็นด้านล่างครับ

Code: Select all

Sub test()
    Dim WS As Worksheet
    Set WS = ActiveSheet
    WS.Name = WS.Range("a1").Value
End Sub
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#19

Post by March201711 »

อาจารย์คะ อยากให้เปลี่ยนเฉพาะ sheet1 sheet เดียวค่ะ พอกด enterแล้ว excel เปลี่ยนให้ทุก sheet เลยค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนชื่อ Sheet ตาม cell ที่กำหนด [VBA]

#20

Post by snasui »

:D อ่านโพสต์ด้านบน ผมเพิ่มให้แล้วครับ :roll:
Post Reply