Page 1 of 1

เรามีวิธีใส่codeเปลี่ยนเซลล์มั้ยครับ

Posted: Thu Dec 08, 2022 7:56 pm
by Lazarusbee
คือตอนนี้
ผมเขียนmodule1 ใส่ใน button1 ให้ดึงข้อมูลมาคำนวนแล้วใส่ข้อมูลนั้นลงในเซลล์ A1 ถึง A20
ผมเขียนmodule2 ใส่ใน button2 ให้ดึงข้อมูลมาคำนวนแล้วใส่ข้อมูลนั้นลงในเซลล์ B1 ถึง B20
........
..........
...........
ผมเขียนmodule10 ใส่ใน button10 ให้ดึงข้อมูลมาคำนวนแล้วใส่ข้อมูลนั้นลงในเซลล์ J1 ถึง J20


ที่ผมต้องเขียนแยกแต่ละ คอลัมน์เพราะบางครั้งต้องการข้อมูลแค่คอลัมน์เดียว เช่น ต้องการแค่คอลัมน์ A หรือต้องการ แค่คอลัมน์ C

จึงเรียนถามว่า เรามีวิธีเขียน code ยังไงให้ module เดียว ใช้ได้กับ คอลัมน์ A B จนถึง J ได้บ้างครับ ไม่อย่างนั้น Module ผมจะเยอะมากครับ

Re: เรามีวิธีใส่codeเปลี่ยนเซลล์มั้ยครับ

Posted: Thu Dec 08, 2022 7:58 pm
by snasui
:D กรุณาแนบไฟล์มาด้วย ตัดมาเฉพาะสิ่งที่เป็นปัญหาจะได้สะดวกในการตอบของเพื่อนสมาชิกครับ

Re: เรามีวิธีใส่codeเปลี่ยนเซลล์มั้ยครับ

Posted: Thu Dec 08, 2022 9:02 pm
by Lazarusbee
ผมได้แนบไฟล์มาแล้วนะครับ โดยวิธีการทำงานคร่าวๆ คือพอกดปุ่มที่ Sheet 2 ก็จะไปดึงข้อมูลจาก Sheet 1 มากรอกครับ
อันนี้ภาพก่อนกดปุ่ม
before.jpg
อันนี้ภาพหลังกด ทั้ง 3 ปุ่ม
After.jpg
อันนี้คือ code ทั้ง 3 ปุ่ม

Code: Select all

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=Table1[@Jan]"
End Sub
Sub Macro2()
'
' Macro1 Macro
'

'
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=Table1[@Feb]"
End Sub
Sub Macro3()
'
' Macro1 Macro
'

'
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=Table1[@Mar]"
End Sub
แต่ละปุ่มจะเปลี่ยนแค่ เซลล์จาก B2 --> C2 ---> D2
ซึ่งถ้ามีข้อมูลต่อไปอีกก็จะมี macro เพิ่มเรื่อยๆจนจัดการลำบากตาครับ เราสามารถเขียน module ตัวเดียวที่ครอบคลุม จนปุ่มทั้ง 3 ปุ่มนำไปใช้ได้มั้ยครับ

ปล. ที่ต้องทำทีละปุ่ม เพราะบางทีต้องการข้อมูลแค่บางคอลัมน์ครับ ไม่ได้ต้องการข้อมูลทุกคอลัมน์พร้อมกัน
ปล. ที่เห็นว่างานดูง่ายๆเพราะแค่จำลองกระบวนการเสมือนเฉยๆครับ ไฟล์ตัวจริงค่อนข้างซับซ้อนในรายละเอียดกว่านี้มากครับ

Re: เรามีวิธีใส่codeเปลี่ยนเซลล์มั้ยครับ

Posted: Thu Dec 08, 2022 9:08 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Macro1()
'
' Macro1 Macro
'

'
'    Range("B2").Select
'    ActiveCell.FormulaR1C1 = "=Table1[@Jan]"
    Dim ad As String
    ad = Worksheets("2").Cells(2, "xfd").End(xlToLeft).Offset(0, 1).Address
    Worksheets("2").Range(ad).Value = Worksheets("1").Range(ad).Value
End Sub
ลบค่าเดิมทิ้งไปก่อนแล้วกดปุ่มแรกซ้ำ ๆ แล้วสักเกตดูผลครับ

Re: เรามีวิธีใส่codeเปลี่ยนเซลล์มั้ยครับ

Posted: Thu Dec 08, 2022 10:22 pm
by Lazarusbee
snasui wrote: Thu Dec 08, 2022 9:08 pm :D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Macro1()
'
' Macro1 Macro
'

'
'    Range("B2").Select
'    ActiveCell.FormulaR1C1 = "=Table1[@Jan]"
    Dim ad As String
    ad = Worksheets("2").Cells(2, "xfd").End(xlToLeft).Offset(0, 1).Address
    Worksheets("2").Range(ad).Value = Worksheets("1").Range(ad).Value
End Sub
ลบค่าเดิมทิ้งไปก่อนแล้วกดปุ่มแรกซ้ำ ๆ แล้วสักเกตดูผลครับ
ขอบคุณมากครับ ผมพยายามจะนำไปปรับใช้ แต่ก็ยังงงอยู่ครับ ว่า
- ถ้าต้องการข้อมูลแบบ สะเปะสะปะ เช่น คนที่ใช้ วันนี้จะเอาข้อมูล คอลัมน์ C (โดยคอลัมน์ B data ในSheet 1 ไม่มีค่ามาให้) หรือ อาจจะต้องการข้อมูล คอลัมน์อื่นๆขึ้นมาโดดๆโดยคอลัมน์ก่อนหน้าไม่มีข้อมูลล่ะครับ
- ด้วยเหตุนี้ผมจึงสร้าง button ในทุกคอลัมน์ เพื่อไว้ให้ผู้ใช้ต้องการข้อมูลอันไหนก็ click เฉพาะวันนั้นได้เลย แต่เนื่องด้วยไฟล์ตัวจริงมีคอลัมน์เยอะกว่านี้ อีกทั้งยังไม่รวมถึง macro งานอื่นๆที่อยู่ในไฟล์ excel อันนี้อีก ผมจึงพยายามย่นให้มีจำนวน macro ลดลงครับ

จึงรบกวนอีกรอบครับ Admin ว่าพอจะมีทางอื่นอีกมั้ยครับ

Re: เรามีวิธีใส่codeเปลี่ยนเซลล์มั้ยครับ

Posted: Fri Dec 09, 2022 5:13 am
by snasui
:D การเขียน Code จะต้องมีเงื่อนไขที่ชัดเจน การที่สร้างปุ่มเพิ่มให้เลือกคลิกเฉพาะวันได้ก็แสดงว่าสร้างเงื่อนไขได้ ยกตัวอย่าง คลิกแล้วให้ผู้ใช้เลือกว่าจะดำเนินการกับคอลัมน์ไหน เมื่อผู้ใช้ระบุแล้วก็ให้ดำเนินการกับคอลัมน์นั้น ฯลฯ ครับ

ผู้ใช้สามารถระบุลงมาในเซลล์หรือว่าให้ขึ้น Input Box ให้ใส่ค่าตอนคลิกก็ทำได้เช่นกัน ศึกษา Input Box จากที่นี่ครับ https://learn.microsoft.com/en-us/offic ... n.inputbox

Re: เรามีวิธีใส่codeเปลี่ยนเซลล์มั้ยครับ

Posted: Fri Dec 09, 2022 6:54 am
by Lazarusbee
snasui wrote: Fri Dec 09, 2022 5:13 am :D การเขียน Code จะต้องมีเงื่อนไขที่ชัดเจน การที่สร้างปุ่มเพิ่มให้เลือกคลิกเฉพาะวันได้ก็แสดงว่าสร้างเงื่อนไขได้ ยกตัวอย่าง คลิกแล้วให้ผู้ใช้เลือกว่าจะดำเนินการกับคอลัมน์ไหน เมื่อผู้ใช้ระบุแล้วก็ให้ดำเนินการกับคอลัมน์นั้น ฯลฯ ครับ

ผู้ใช้สามารถระบุลงมาในเซลล์หรือว่าให้ขึ้น Input Box ให้ใส่ค่าตอนคลิกก็ทำได้เช่นกัน ศึกษา Input Box จากที่นี่ครับ https://learn.microsoft.com/en-us/offic ... n.inputbox
ขอบคุณมากครับ ผมจะไปศึกษาตามที่แนะนำครับ