Page 1 of 1

การสั่งบันทึกข้อมูลด้วยโค๊ดที่กระทัดรัด

Posted: Thu Oct 17, 2013 6:08 pm
by bank9597
:D สวัสดีครับ ผมขอรบกวนเรื่องโค๊ด VBA หน่อยครับ

พอดีว่าผมเขียนโค๊ดที่สั่งบันทึกข้อมูลลงบนเนื้อที่ที่ไม่ต่อเนื่องกันไม่ได้ เลยได้แต่เขียนโค๊ดสั่งบันทึกข้อมูลทีละชุด ทำให้การทำงานโค๊ดช้าลง รบกวนอาจารย์ช่วยปรับโค๊ดให้มันกระทัดรัดกว่านี้ได้ไหมครับ

เงื่อนไขคือ คัดลอกข้อมูลในตารางสีส้ม ไปวางในตารางที่สร้างขึ้นมา 2 ตาราง ที่ไม่ต่อเนื่องกัน

ตารางด้านบน 23 บรรทัด
ตารางด้านล่าง 22 บรรทัดครับ

ผมได้ทำตัวอย่างไว้ในไฟล์แล้วครับ

โค๊ดอยู่ในโมดูลชื่อ copy ชื่อ copy_to_print

Re: การสั่งบันทึกข้อมูลด้วยโค๊ดที่กระทัดรัด

Posted: Thu Oct 17, 2013 7:49 pm
by snasui
:D หากไม่ติดปัญหาใดก็ใช้ได้ สามารถปรับให้สั้นลงได้ตามตัวอย่างด้านล่าง

Code: Select all

Sub Test()
    With Sheets("ใบโอน")
        .Range("a10:c32") = .Range("k10:m32").Value
        .Range("i10:i32") = .Range("n10:n32").Value
        .Range("a40:c61") = .Range("k33:m54").Value
        .Range("i40:i61") = .Range("n33:n54").Value
    End With
End Sub

Re: การสั่งบันทึกข้อมูลด้วยโค๊ดที่กระทัดรัด

Posted: Thu Oct 17, 2013 8:09 pm
by bank9597
:D ขอบคุณมากครับ

เห็นภาษาไทยในโค๊ดแว็บๆ ทำไงถึงจะมีแบบนั้นบ้าง อิอิ

Re: การสั่งบันทึกข้อมูลด้วยโค๊ดที่กระทัดรัด

Posted: Thu Oct 17, 2013 8:13 pm
by snasui
bank9597 wrote:เห็นภาษาไทยในโค๊ดแว็บๆ ทำไงถึงจะมีแบบนั้นบ้าง
:D ช่วยอธิบายเพิ่มเติมหรือจับภาพมาให้ดูว่าต้องการให้มีลักษณะเป็นอย่างไรครับ

Re: การสั่งบันทึกข้อมูลด้วยโค๊ดที่กระทัดรัด

Posted: Thu Oct 17, 2013 8:17 pm
by bank9597
:D โค๊ดด้านล่างนี้ครับ คำว่า "ใบโอน" จะเป็นภาษาต่างด้าว

Code: Select all

Sub Test()
    With Sheets("ãºâ͹")
        .Range("a10:c32") = .Range("k10:m32").Value
        .Range("i10:i32") = .Range("n10:n32").Value
        .Range("a40:c61") = .Range("k33:m54").Value
        .Range("i40:i61") = .Range("n33:n54").Value
    End With
End Sub
แต่ดูโค๊ดของอาจารย์ คำว่า "ใบโอน" เป็นภาษาไทยเลย ไม่ทราบว่าใน vbe ของอาจารย์ สามารถแสดงภาษาไทยได้เลยหรือครับ

Code: Select all

Sub Test()
    With Sheets("ใบโอน")
        .Range("a10:c32") = .Range("k10:m32").Value
        .Range("i10:i32") = .Range("n10:n32").Value
        .Range("a40:c61") = .Range("k33:m54").Value
        .Range("i40:i61") = .Range("n33:n54").Value
    End With
End Sub

Re: การสั่งบันทึกข้อมูลด้วยโค๊ดที่กระทัดรัด

Posted: Thu Oct 17, 2013 8:48 pm
by snasui
:D ใน VBE สามารถกำหนดให้แสดงภาษาไทยได้ครับ

โดยเข้าเมนู Tools > Options > กำหนด Font ที่แถบ Editor Format เลือกภาษาที่มี (Thai) ต่อท้ายเช่น Tahoma (Thai)

Re: การสั่งบันทึกข้อมูลด้วยโค๊ดที่กระทัดรัด

Posted: Thu Oct 17, 2013 8:56 pm
by bank9597
snasui wrote::D ใน VBE สามารถกำหนดให้แสดงภาษาไทยได้ครับ

โดยเข้าเมนู Tools > Options > กำหนด Font ที่แถบ Editor Format เลือกภาษาที่มี (Thai) ต่อท้ายเช่น Tahoma (Thai)
:lol: ดูภาษาต่างด้าวมานานแรมปี เพิ่งจะรู้วันนี้เอง