: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

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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

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

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

#7

by mayer02 » Thu Jun 22, 2017 9:08 am

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

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

#6

by snasui » Wed Jun 21, 2017 9:12 pm

: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

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

#5

by mayer02 » Wed Jun 21, 2017 8:29 am

แนบไฟล์ให้ใหม่แล้วครับ :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 ได้อัตโนมัติ
Attachments
sample.xlsm
ไฟล์แนบที่มีโค๊ด VBA
(17.44 KiB) Downloaded 6 times

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

#4

by snasui » Tue Jun 20, 2017 9:02 pm

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

สำหรับการโพสต์ Code ให้อ่านกฎการใช้บอร์ดข้อ 5 ด้านบนประกอบครับ :roll:

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

#3

by mayer02 » Tue Jun 20, 2017 11:53 am

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

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 เองตามข้อมูลแถวสุดท้ายของไฟล์ครับ

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

#2

by snasui » Mon Jun 19, 2017 7:50 pm

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

การเขียน Dynamic named range เดิมเขียนไว้อย่างไรจึงมีปัญหา แจ้งวิธีดังกล่าวมาด้วยเพื่อจะได้ช่วยดูให้ได้ครับ

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

#1

by mayer02 » Mon Jun 19, 2017 5:08 pm

ในไฟล์แนบจะมี Name Range อยู่จำนวนหนึ่งที่มีชื่อขึ้นต้นด้วย "W_" สิ่งที่ต้องการคือต้องการอัพเดท Name Range ให้มีค่าปัจจุบันหลังจากมีการอัพเดทข้อมูลเพิ่มเข้าไป เช่น Name Range "W_1st" อ้างถึงเซลล์ Sheet1!$B$2:$B$28 แต่พอเพิ่มข้อมูลเข้าไปเกิน 28 แถว Name Range จะใช้ต่อไม่ได้
ลองทำ Dynamic Name Range แล้วไม่ไหวไฟล์หนักเกินไปครับ
ขอบคุณครับ
Attachments
sample.xlsx
(12.21 KiB) Downloaded 8 times

Top