: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

อยากทราบวิธีการอัพเดท Name Range โดยใช้ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
mayer02
Member
Member
Posts: 9
Joined: Wed Jul 13, 2016 5:10 pm

อยากทราบวิธีการอัพเดท Name Range โดยใช้ VBA

#1

Post by mayer02 »

ในไฟล์แนบจะมี Name Range อยู่จำนวนหนึ่งที่มีชื่อขึ้นต้นด้วย "W_" สิ่งที่ต้องการคือต้องการอัพเดท Name Range ให้มีค่าปัจจุบันหลังจากมีการอัพเดทข้อมูลเพิ่มเข้าไป เช่น Name Range "W_1st" อ้างถึงเซลล์ Sheet1!$B$2:$B$28 แต่พอเพิ่มข้อมูลเข้าไปเกิน 28 แถว Name Range จะใช้ต่อไม่ได้
ลองทำ Dynamic Name Range แล้วไม่ไหวไฟล์หนักเกินไปครับ
ขอบคุณครับ
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: อยากทราบวิธีการอัพเดท Name Range โดยใช้ VBA

#2

Post by snasui »

:D กรณี VBA จำเป็นต้องเขียนมาเองก่อน ถามกันเฉพาะที่ติดปัญหาครับ

การเขียน Dynamic named range เดิมเขียนไว้อย่างไรจึงมีปัญหา แจ้งวิธีดังกล่าวมาด้วยเพื่อจะได้ช่วยดูให้ได้ครับ
mayer02
Member
Member
Posts: 9
Joined: Wed Jul 13, 2016 5:10 pm

Re: อยากทราบวิธีการอัพเดท Name Range โดยใช้ VBA

#3

Post by mayer02 »

ผมเขียนโค๊ดได้ป่ะมาณนี้ครับ

Sub updateName_range()
Dim nr As Name
Dim W_lastrow As Long


W_lastrow = Cells(Rows.Count, "A").End(xlUp).Row

For Each nr In ActiveWorkbook.Names
If nr.Name Like "W_*" Then
Range(nr.Name).Select
With nr

.RefersToR1C1 = "=Sheet1!R2C12:R39C12"

End With
End If
Next nr
End Sub

อยากให้ตรง .RefersToR1C1 มันขยาย Range เองตามข้อมูลแถวสุดท้ายของไฟล์ครับ
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: อยากทราบวิธีการอัพเดท Name Range โดยใช้ VBA

#4

Post by snasui »

:D แนบ Code มาในไฟล์ด้วยเพื่อสะดวกในการทดสอบครับ

สำหรับการโพสต์ Code ให้อ่านกฎการใช้บอร์ดข้อ 5 ด้านบนประกอบครับ :roll:
mayer02
Member
Member
Posts: 9
Joined: Wed Jul 13, 2016 5:10 pm

Re: อยากทราบวิธีการอัพเดท Name Range โดยใช้ VBA

#5

Post by mayer02 »

แนบไฟล์ให้ใหม่แล้วครับ :D
ทบทวนปัญหาที่เกิดขึ้นนะครับ
1. ไฟล์ตั้งต้นมีข้อมูล 28 แถว และแต่ละคอลัมน์ มีการสร้าง Name Range ไว้ที่ 28 แถวเช่นกัน
2. มีการอัพเดทข้อมูลมาเป็น 39 แถว

ต้องการสร้าง VBA ให้อัพเดท Name Range จากเดิมที่จบอยู่ที่แถวที่ 28 เป็นแถวที่ 39 (แถวสุดท้ายของข้อมูล) โดยโค๊ดที่สร้างมาข้างต้นดังนี้

Code: Select all

Sub updateName_range()
Dim nr As Name
Dim W_lastrow As Long
	W_lastrow = Cells(Rows.Count, "A").End(xlUp).Row

	For Each nr In ActiveWorkbook.Names
		If nr.Name Like "W_*" Then
		Range(nr.Name).Select
			With nr
			.RefersToR1C1 = "=Sheet1!R2C12:R39C12"
			End With
		End If
	Next nr
End Sub
โค๊ดนี้ติดปัญหาที่ .RefersToR1C1 ยังไม่สามารถอัพเดท Range ได้อัตโนมัติ
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: อยากทราบวิธีการอัพเดท Name Range โดยใช้ VBA

#6

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub updateName_range()
    Dim nr As Name, W_lastrow As Long
    Dim oldFr As Long
    W_lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    For Each nr In ActiveWorkbook.Names
        If nr.Name Like "W_*" Then
            oldFr = Range(nr).Cells(1).Row
            Range(nr).Resize(W_lastrow - oldFr + 1, 1).Name = nr.Name
        End If
    Next nr
End Sub
mayer02
Member
Member
Posts: 9
Joined: Wed Jul 13, 2016 5:10 pm

Re: อยากทราบวิธีการอัพเดท Name Range โดยใช้ VBA

#7

Post by mayer02 »

:D work great ขอบคุณครับ
Post Reply