Announcement

Collapse

ยินดีต้อนรับสู่ Excel Expert Training Forum

กฏกติกาของฟอรัม: แจ้งชื่อและนามสกุลจริงในการสมัครสมาชิก - ตั้งชื่อกระทู้ให้ตรงกับปัญหาที่ถาม - เขียนอธิบายคำถามทั้งในตัวกระทู้และในแฟ้มแนบ - ห้ามใช้คำว่า อ่ะ คับ คำผวน - ตั้งชื่อแฟ้มเป็นภาษาอังกฤษให้สื่อถึงปัญหา - อย่าระบุชื่อให้คนใดเป็นผู้ตอบ - งดให้ความร่วมมือหรือช่วยกระทู้ที่ละเมิดกฏของฟอรัม
See more
See less

รบกวนขอคำแนะนำวิธีเซ็ตให้ macro copy สูตรจนถึงบรรทัดสุดท้ายที่มีข้อมูลโดยอัตโนมัติค่ะ

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • รบกวนขอคำแนะนำวิธีเซ็ตให้ macro copy สูตรจนถึงบรรทัดสุดท้ายที่มีข้อมูลโดยอัตโนมัติค่ะ

    ดิฉันต้องทำ report ตามขั้นตอนเดิมซ้ำๆ เลยทำการ record macro เพื่อใช้ร่นระยะเวลาในการทำงาน ตามไฟล์ที่แนบค่ะ
    แต่ประสบปัญหาเนื่องจากข้อมูลในแต่ละเดือนมีจำนวนบรรทัดไม่เท่ากัน ทำให้เวลา run macro แล้วมันไม่ทำการใส่สูตรโดยอัตโนมัติจนถึงบรรทัดสุดท้ายที่มีข้อมูลของเดือนนั้นๆไม่ได้ค่ะ
    รบกวนผู้รู้ช่วยแก้ไขสูตร Macro ให้หน่อยค่ะ ขอบคุณล่วงหน้าค่ะ
    Attached Files

  • #2
    ที่ผมใช้บ่อยๆจะเป็นคำสั่งนี้ครับ
    Dim lastCol as integer, lastRow as integer

    ActiveSheet.Unprotect
    lastCol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
    lastRow = Range("A1").SpecialCells(xlCellTypeLastCell).Row

    ต้องอย่าลืม Unprotect ชีทงานเสมอ แต่ถ้าชีทงานต้อง Protect เมื่อได้ค่าแล้วก็สามารถทำได้เลยครับผม

    Comment


    • pollyPhoo
      pollyPhoo commented
      Editing a comment
      ปูขออนุญาติเรียกว่าอาจารย์นะคะ ขอบคุณสำหรับคำแนะนำด้านบนค่ะ ปูรบกวนถามอาจาร์ย mitrapap เพิ่มเติมค่ะ คือไม่ทราบว่าคำสั่งด้านบนต้องเอาไปแทรกตรงส่วนไหนขอ macro ของปูดีคะ คือปูลองแทรกดูแต่มันไม่ทำงานให้ สงสัยแทรกไม่ถูกค่ะ ขอบคุณล่วงหน้าค่ะ

  • #3
    เอาไว้แถวแรกเลยครับ แต่ต้องไปเปลี่ยน reference cell เป็น LastRow ให้หมดด้วยครับ
    เช่น "D2:d2164" เปลี่ยนเป็น "D2:d" & LastRow

    ปล. ผมลองในไฟล์แนบ ตามที่คุณ mitrapap แนะนำ ได้ค่า LastRow เป็น 2256 ไม่ได้ 2164 กำลังงงว่าเกิดอะไรขึ้นครับ
    ถ้าหาสาเหตุยังไม่เจอ อาจจะเปลี่ยนมาใช้
    lastrow = Range("A1").End(xlDown).Row
    แทนก็ได้ครับ

    Comment


    • mitrapap
      mitrapap commented
      Editing a comment
      ได้ลองทบทวนชีทงานตัวอย่างอีกครั้ง พบว่ามีการปรับความสูงของบรรทัดไปจนถึงบรรทัดที่ 2256 ครับ จึงพอสรุปได้ว่า หากมีการกระทำการใดๆที่เซลหรือบรรทัดใดให้ต่างจากค่ามาตรฐาน ถือว่ามีการใช้งานที่บรรทัดนั้นแล้วครับ

    • Vajaraphol
      Vajaraphol commented
      Editing a comment
      อ๋อ ขอบคุณครับ

    • อรวีร์
      อรวีร์ commented
      Editing a comment
      อรวีร์ชอบใช้วิธีแบบคุณ Vajaraphol คือวิ่งด้วย .End แต่ชอบวิ่งจากบรรทัดสุดท้ายแบบนี้ค่ะ
      LastRow = Cells(Rows.Count, 1).End(xlUp).Row
      เผื่อมี cell ว่างแทรกใน column ที่วิ่ง
Working...
X