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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
mr.zatan
Bronze
Posts: 305 Joined: Sun Sep 05, 2010 8:31 am
Excel Ver: 2016
Contact:
#1
Post
by mr.zatan » Wed Jul 08, 2020 2:21 pm
ล็อก print area ได้ไหมครับ เพราะไฟล์ใช้กันหลายคน.
ด้วยความเคยชิน บางคนเวลาจะ Print หลงไปตั้ง print area ใหม่ เลยทำให้ Code ที่ใส่ไว้มันหายไป
snasui
Site Admin
Posts: 30801 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Wed Jul 08, 2020 6:52 pm
สร้าง Range Name สำหรับ Print Area ไว้อีกชุดเมื่อ Run Code ให้นำ Range Name พวกนั้นมา Set Print Area เสมือนว่า Set Print Area ให้กลับไปเป็นค่าตั้งต้นครับ
ยกตัวอย่างชีตปัจจุบันผมตั้งชื่อ Range Name สำหรับค่าตั้งต้นของ Print Area เป็น NameArea1
แล้วเขียน Code ให้นำไปใช้ Set Print Area ทับที่ User กำหนดเอาไว้เป็น
ActiveSheet.PageSetup.PrintArea = Names("NameArea1").RefersTo
mr.zatan
Bronze
Posts: 305 Joined: Sun Sep 05, 2010 8:31 am
Excel Ver: 2016
Contact:
#3
Post
by mr.zatan » Fri Jul 10, 2020 1:36 pm
Code: Select all
ActiveSheet.PageSetup.PrintArea = Names("NameArea1").RefersTo
เอาไปใส่ตรงไหนครับ
puriwutpokin
Guru
Posts: 3746 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#4
Post
by puriwutpokin » Fri Jul 10, 2020 6:03 pm
mr.zatan wrote: ↑ Fri Jul 10, 2020 1:36 pm
Code: Select all
ActiveSheet.PageSetup.PrintArea = Names("NameArea1").RefersTo
เอาไปใส่ตรงไหนครับ
เขียนเป็น VBA ครับ ต้องสร้าง Module แล้วว่างคำสั่งครับ
ลองศึกษาดูจากกระทู้เก่าๆ หรือ Record Macro ดูเบื้องต้นครับ ติดตรงไหนมาถามกันต่อครับ และไฟล์ต้อง Save เป็นนามสกุล *.xls,*.xlsm,*.xlsb อย่างใดอย่างหนึ่งครับ