Page 1 of 1

กำหนดให้ function right หยุดทำงาน

Posted: Wed Sep 13, 2017 4:47 pm
by sosadboy
ตามไฟล์ที่แนบ
ตัวอย่างรายงาน.xls
sheet แรกเป็นชีทที่รัน macro แล้วและติดปัญหาไม่ตรงตามความต้องการ ส่วนชีท 2 เป็นต้นฉบับรายงาน

เป้าหมาย : ผมต้องการกดรัน macro ครั้งเดียวให้ทำการตัดและปรับแต่งตัวรายงานต้นฉบับให้พอดีกับ
ขนาดกระดาษและสั่งพิมพ์เป็นรายงานตัวใหม่
ปัญหาคือ : ในคอลัมน์ "D" และ "E" ผมต้องการตัดรหัสสินค้าออก ผมใช้ function Right+Len ตัด
รหัสสินค้าออกได้ในคอลัมน์ "E" โดยกำหนดให้หยุดการทำงานเมื่อเจอเซลล์ว่าง ส่วน
คอลัมน์"D" ทำไม่ได้เพราะเซลล์ต่อมาไม่เป็นเซลล์ว่างเลยใช้วิธีแบบที่ใช้ในคอลัมน์ "E"
ไม่ได้อีกทั้งไม่สามารถกำหนดค่าตายตัวไ้ด้ เนื่องจากจำนวนแถวในแต่ละรายงานไม่เท่า
กันตอนนี้ผมใช้วิธีแทรกเซลล์ว่างเข้าไปก่อนค่อยสั่งรัน ได้ผลแต่ไม่ตรงตามความต้องการ
คือ คลิ๊กเดียวเสร็จ
ความต้องการ : อยากทราบว่าพอจะมีวิธีสั่งให้ จำนวนแถวตัดตัวอักษรในคอลัมน์ "D" = จำนวนแถวที่ตัด
ใน "E" หรือไม่

Code: Select all

'Past4 Problem
    Range("D5").Select
    Do Until Selection.Value = ""
        Selection.Value = [Cut] 'Formula name(RIGHT+LEN)
        Selection.Offset(1, 0).Select
        Loop
ช่วงคำสั่งที่ผมใช้ตัดตัวอักษรครับ โดยใช้วิธีแทรกเซลล์ว่างก่อนรัน ทacro ครับ

Re: กำหนดให้ function right หยุดทำงาน

Posted: Thu Sep 14, 2017 6:26 am
by snasui
:D ลองแนบตัวอย่างคำตอบสำเร็จรูปที่ต้องการมาด้วยเพื่อจะได้เปรียบเทียบว่า ข้อมูลต้นทางเป็นอย่างไร และข้อมูลปลายทางเป็นอย่างไร เพื่อจะได้เข้าใจตรงกันครับ

Re: กำหนดให้ function right หยุดทำงาน

Posted: Thu Sep 14, 2017 12:35 pm
by sosadboy
แนบไฟล์ให้ใหม่แล้วครับ

Re: กำหนดให้ function right หยุดทำงาน

Posted: Thu Sep 14, 2017 7:12 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

'Past5
'...Other code
    Range("D5").Select
    Do Until InStr(Selection.Value, "รวม") > 0
        Selection.Value = [Cut]
        Selection.Offset(1, 0).Select
    Loop
    Range("E5").Select
    Do Until Selection.Value = ""
        Selection.Value = [Cut]
        Selection.Offset(1, 0).Select
    Loop
'...Other code    

Re: กำหนดให้ function right หยุดทำงาน

Posted: Fri Sep 15, 2017 8:00 am
by sosadboy
ขอบคุณมากครับ ใช้ได้ตามที่ต้องการแล้วครับ ขอช่วยอธิบายการทำงานของคำสั่งส่วนนี้หน่อยครับ เผื่อว่าผมจะเอาไปประยุกต์ใช้ต่อครับ

Code: Select all

Do Until InStr(Selection.Value, "รวม") > 0

Re: กำหนดให้ function right หยุดทำงาน

Posted: Fri Sep 15, 2017 8:50 am
by logic
โค้ดที่อาจารย์เขียนหมายถึงให้หาคำว่า "รวม" ในเซลล์ที่เลือก ถ้ามีก็ให้ออกจาก loop ครับ :)

ดู link นี้เพิ่มเติมครับ ~> https://www.techonthenet.com/excel/formulas/instr.php

Re: กำหนดให้ function right หยุดทำงาน

Posted: Fri Sep 15, 2017 8:53 am
by sosadboy
ขอบคุณคุณ logic มากครับ ที่ช่วยอธิบาย