Page 1 of 2
จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Sun Aug 30, 2020 8:10 pm
by piman
สวัสดีครับ
ส่วนที่ 1
ผมได้ทำการรันฟอร์มขึ้นมา เลือกข้อมูล "กลุ่มงาน" ในช่องค้นหาโดย และระบุ "อำนวยการ" ในช่องคำค้นหา จากนั้นจึงกดปุ่มรายงาน เพื่อนทำการสั่ง Print เป็นไฟล์ PDF ครับ ได้ไฟล์ตามที่ต้องการ(ตามไฟล์แนบ) แต่แต่ละ Column มีขนาดเท่ากันทั้งหมดและจะมีหน้าว่างๆแถมมาด้วยครับ (ในส่วนนี้สามารถปรับขนาดตามที่เราต้องการได้หรือเปล่าครับและหน้าว่างๆสามารถลบออกได้หรือไม่ครับ)
ส่วนที่ 2
สามารถ เลือกข้อมูลบาง Column มาแสดงบน List box ได้หรือไม่ครับ เช่น Column A,C,F เป็นต้นครับ
ขอบคุณครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Sun Aug 30, 2020 8:33 pm
by snasui
จาก Code
sh.PageSetup.PrintArea = "A:K"
ให้ปรับเป็นพื้นที่ที่ต้องการ Print ไม่ใช่เลือกทั้งคอลัมน์ครับ
ก่อนจะ Print จริงให้เลือก Print Preview เพื่อดูข้อมูลก่อน Print ด้วยว่ามีลักษณะเป็นแบบไหน อย่างไร เช่น
sh.PrintPreview
หากเห็นว่าได้ตรงกับความต้องการแล้วค่อยลบ Code นี้ออกหรือ Mark เป็น Comment เอาไว้ครับ
ในการ Show UserForm เพื่อให้สามารถคลิก Object อื่นได้ให้เพิ่ม
vbmodeless
เข้าไปด้วย เช่น
userform1.show vbmoedless
หลังทดสอบและใช้การได้แล้วค่อย Mark ทิ้ง
การป้องกันและการปลดการป้องกันไม่ควรทำเป็นรายบรรทัด ลักษณะที่ควรจะเป็นคือ ปลดการป้องกันที่บรรทัดแรกแล้วป้องกันเอาไว้ใหม่ที่บรรทัดสุดท้าย เช่นนี้เป็นต้น
การเลือกเพิ่มรายการเป็นรายคอลัมน์ให้ใช้วิธี Loop รายการเข้าไปวางใน ListBox ไม่ใช่ใช้
RowSource
ครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Sun Aug 30, 2020 9:14 pm
by piman
ขอบคุณครับอาจารย์
ในส่วนของการปรับพื้นที่ Print เนื่องจากแต่ละหัวข้อที่ผมเลือกข้อมูลในส่วนของ Row จะแตกต่างกันไปครับเช่น ผมเลือกข้อมูลโดยกลุ่มงาน บางกลุ่มงาน อาจจะมี 10 คน บางกลุ่มงาน อาจจะมี 20 คนครับ ในส่วนของการปรับพื้นที่ของการ Print ใน Row สามารถกำหนดความยืดหยุ่นได้หรือไม่ครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Sun Aug 30, 2020 10:49 pm
by snasui
การเลือกข้อมูลตามที่ต้องการใช้งานเป็นความสามารถปกติของ Code อยู่แล้วครับ
ปกติหากต้องการจะ Print ข้อมูลที่พื้นที่ไม่ติดกันควรจะทำการซ่อนบรรทัดที่ไม่ต้องการเสียก่อนแล้วค่อยพิมพ์ หรือสามารถเลือกที่จะนำข้อมูลที่เข้าเงื่อนไปไปวางในอีกพื้นที่เพื่อพิมพ์ เช่นนี้เป็นต้นครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 9:47 am
by piman
ขอบคุณครับอาจารย์
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 11:08 am
by piman
snasui wrote: Sun Aug 30, 2020 8:33 pm
การเลือกเพิ่มรายการเป็นรายคอลัมน์ให้ใช้วิธี Loop รายการเข้าไปวางใน ListBox ไม่ใช่ใช้
RowSource
ครับ
สอบถามเพิ่มเติมหน่อยครับอาจารย์ จากที่อาจารย์แนะนำในส่วนของข้อมูลที่นำมาแสดงใน List box จากใน code ผมใช้เป็น RowSource
อาจารย์แนะนำให้ใช้วิธี Loop ก็คือเปลี่ยน เฉพาะ Code ส่วนนี้ใช่เปล่าครับอาจารย์
Code: Select all
If iRow > 1 Then
.lstDatareport.RowSource = "Datareport!A2:I" & iRow
Else
.lstDatareport.RowSource = "Datareport!A2:I2"
End If
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 12:19 pm
by logic
แบบนั้นก็คือ rowsource แหละครับ ดูตัวอย่างที่อาจารย์ตอบไว้เป็นแนวครับ ~~>
https://www.snasui.com/viewtopic.php?t=11862#p73311
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 12:51 pm
by piman
ขอบคุณมากครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 1:30 pm
by piman
สอบถามเพิ่มเติมครับ ตอนนี้ข้อมูลที่ต้องการ สามารถดึงมาแสดงได้แล้วครับ
แต่หัวคอลัมน์ไม่มาแสดงให้ด้วย ผมลองเขียน
ก็ไม่มีการแสดงข้อมูลครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 3:22 pm
by piman
เพิ่มเติมอีกนิดครับ พอผมจะนำข้อมูลมาแสดงบน List Box ประมาณ 14 Column ขึ้น Error ครับ สูงสุดจะได้ประมาณ 9 Column ครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 8:38 pm
by snasui
เขียน Code ไว้ที่ Procedure ใด เขียนไว้อย่างไร ติดบรรทัดไหน กรุณาแจ้งด้วยครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 9:15 pm
by piman
ขอโทษทีครับอาจารย์ ผมส่งไฟล์ให้ ผมแนบไฟล์ใหม่มาให้แล้ว
กดรัน แล้วขึ้น error เลยครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 9:26 pm
by snasui
ลองใช้ Array เข้ามาช่วย ดูตัวอย่างที่นี่ครับ
Assign Array to ListBox
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 9:55 pm
by piman
ผมลองนำ Code ตัวอย่างมาปรับใช้ พอทำการกดรัน ขึ้น error 1004 ครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 10:17 pm
by snasui
เขียนฟังก์ชั่น CountIf ใน Code ไม่ถูกต้องครับ
ควรจะ Debug เพื่อ Run Code ทีละบรรทัด จะได้ทราบว่าผิดพลาดที่บรรทัดไหน ดูวิธีการที่นี่ครับ
viewtopic.php?f=3&t=17483&p=103247#p103247
ในโอกาสถัดไปจะต้องแจ้งบรรทัดที่มีปัญหามาด้วยเสมอครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 10:49 pm
by piman
ขอบคุณครับ ตอนนี้ผมได้แก้จาก Countif เป็น Counta ครับ เนื่องจากผมไม่มีเงื่อนไขต้องเช็คครับ
ได้ทำการตรวจเช็ค Debug มาหยุดที่
Code: Select all
arr(j, 1) = Sheets("Datareport").Cells(i, "B").Value
บรรทัดนี้ครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 10:52 pm
by snasui
โปรแกรมฟ้อง Error อะไรครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 11:03 pm
by piman
Run time error '9'
Subscript out of range
ครับ
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 11:09 pm
by snasui
แก้ Dimension ของ arr ให้ตรงกับความต้องการที่จะใช้จริงเป็นด้านล่างครับ
Code: Select all
ReDim arr(0 To k, Me.lstDatareport.ColumnCount)
Re: จัด Column ตอนสั่ง Print เป็นไฟล์ PDF ครับ
Posted: Mon Aug 31, 2020 11:24 pm
by piman
สามารถรันได้ตามต้องการแล้วครับ
สอบถามเพิ่มเติมอีกนิดครับ ถ้าอยากให้หัว Column มาแสดงด้วย ผมกำหนดให้
Code: Select all
Me.lstDatareport.RowSource = "Datareport!A2:N"
พอลองรันแล้วขึ้น error ขึ้นที่บรรทัดนี้เลยครับ