Page 1 of 1

อยากให้มาโครเปลี่ยนห้องอัตโนมัติ

Posted: Tue Feb 17, 2015 4:30 pm
by yangkodza
สวัสดีครับ
อยากสร้าง InputBox เปลี่ยนห้องอัตโนมัติ

จากภาพมาโคร
Image

ถ้าเราสร้าง InputBox รับค่า เปลี่ยน ม.1 เป็น ม.2 จะสามารถเปลี่ยนได้หมดเลย 3 ห้อง
ต้องปรับมาโครแบบไหนครับ

ค่ามาโครชุดนี้ ผมได้เรียนรู้จากงานครั้งที่ผ่านมา แต่ประยุกต์ใช้ไม่เป็นครับ
CurrDir = Application.ActiveWorkbook.Path
ClassRoom = InputBox("ห้องเรียน เช่น ม.1 พิมพ์ ม.1)

' ActiveCell.FormulaR1C1 = _
' "='D:\Documents\Desktop\แบบเก็บ 57 คะแนนพิเศษ\ม.1\[รายชื่อมัธยม.xls]ม.1'!R3C3:R52C5"
ActiveCell.FormulaR1C1 = "='" & CurrDir & "\[รายชื่อมัธยม.xls]ม." & ClassRoom & "'!R3C3:R52C5"
ปรับครูพิเศษแก้ไข.xls
รายชื่อมัธยม.xls

Re: อยากให้มาโครเปลี่ยนห้องอัตโนมัติ

Posted: Tue Feb 17, 2015 5:10 pm
by snasui
:D ให้แนบภาพมาที่ฟอรัมนี้แทนแนบไฟล์ที่อื่นครับ

Re: อยากให้มาโครเปลี่ยนห้องอัตโนมัติ

Posted: Tue Feb 17, 2015 5:56 pm
by yangkodza
snasui wrote::D ให้แนบภาพมาที่ฟอรัมนี้แทนแนบไฟล์ที่อื่นครับ
aa.jpg

Re: อยากให้มาโครเปลี่ยนห้องอัตโนมัติ

Posted: Tue Feb 17, 2015 6:08 pm
by snasui
yangkodza wrote:CurrDir = Application.ActiveWorkbook.Path
ClassRoom = InputBox("ห้องเรียน เช่น ม.1 พิมพ์ ม.1)

' ActiveCell.FormulaR1C1 = _
' "='D:\Documents\Desktop\แบบเก็บ 57 คะแนนพิเศษ\ม.1\[รายชื่อมัธยม.xls]ม.1'!R3C3:R52C5"
ActiveCell.FormulaR1C1 = "='" & CurrDir & "\[รายชื่อมัธยม.xls]ม." & ClassRoom & "'!R3C3:R52C5"
:D ที่เขียนมานั้นสามารถคีย์ครั้งเดียวแล้วเปลี่ยนในทุกตำแหน่งอยู่แล้วครับ

Code ด้านบนเป็นการสร้าง InputBox ไว้สำหรับค่าที่เราต้องการเปลี่ยนแปลงได้ ความหมายคือ หากต้องการ Link จากไฟล์ "ม.1" ก็ให้คีย์คำว่า "ม.1" ใน InputBox ไม่ใช่คีย์เฉพาะเลข 1

จาก Code ActiveCell.FormulaR1C1 = "='" & CurrDir & "\[รายชื่อมัธยม.xls]ม." & ClassRoom & "'!R3C3:R52C5" มีอักขระ "ม." อยู่ด้วย แสดงว่าตั้งใจให้คีย์ใน InputBox แค่เลข 1 เท่านั้นโดยไม่ต้องคีย์นำหน้าด้วย "ม." เพราะมี "ม." ใน Code รองรับแล้ว

และหากตั้งใจให้คีย์เฉพาะตัวเลข ก็ต้องไม่คีย์นำหน้าตัวเลขด้วย "ม." ใน InputBox ไม่เช่นนั้นโปรแกรมจะทำงานไม่ถูกต้อง

Re: อยากให้มาโครเปลี่ยนห้องอัตโนมัติ

Posted: Tue Feb 17, 2015 6:18 pm
by yangkodza
snasui wrote:
yangkodza wrote:CurrDir = Application.ActiveWorkbook.Path
ClassRoom = InputBox("ห้องเรียน เช่น ม.1 พิมพ์ ม.1)

' ActiveCell.FormulaR1C1 = _
' "='D:\Documents\Desktop\แบบเก็บ 57 คะแนนพิเศษ\ม.1\[รายชื่อมัธยม.xls]ม.1'!R3C3:R52C5"
ActiveCell.FormulaR1C1 = "='" & CurrDir & "\[รายชื่อมัธยม.xls]ม." & ClassRoom & "'!R3C3:R52C5"
:D ที่เขียนมานั้นสามารถคีย์ครั้งเดียวแล้วเปลี่ยนในทุกตำแหน่งอยู่แล้วครับ

Code ด้านบนเป็นการสร้าง InputBox ไว้สำหรับค่าที่เราต้องการเปลี่ยนแปลงได้ ความหมายคือ หากต้องการ Link จากไฟล์ "ม.1" ก็ให้คีย์คำว่า "ม.1" ใน InputBox ไม่ใช่คีย์เฉพาะเลข 1

จาก Code ActiveCell.FormulaR1C1 = "='" & CurrDir & "\[รายชื่อมัธยม.xls]ม." & ClassRoom & "'!R3C3:R52C5" มีอักขระ "ม." อยู่ด้วย แสดงว่าตั้งใจให้คีย์ใน InputBox แค่เลข 1 เท่านั้นโดยไม่ต้องคีย์นำหน้าด้วย "ม." เพราะมี "ม." ใน Code รองรับแล้ว

และหากตั้งใจให้คีย์เฉพาะตัวเลข ก็ต้องไม่คีย์นำหน้าตัวเลขด้วย "ม." ใน InputBox ไม่เช่นนั้นโปรแกรมจะทำงานไม่ถูกต้อง
อาจาร์ยครับ Sheet งาน เป็น เช่น ม.1.1 ม.1.2 ม.1.3 มี.1 .2 .3 หลัง ม.1 ด้วยครับ ใส่ไม่ถูก

Re: อยากให้มาโครเปลี่ยนห้องอัตโนมัติ

Posted: Tue Feb 17, 2015 8:53 pm
by yangkodza
ทำได้แล้วครับ
ขอบคุณมาก