snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
thanadul0816
Member
Posts: 48 Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365
#1
Post
by thanadul0816 » Mon Mar 28, 2022 9:50 pm
สอบถามการสั่งพิมพ์ข้อมูลจากตารางหน้าละ 10 รายการครับ
ตามไฟล์แนบ ผมต้องการดึงรายการจาก Sheet1 มาพิมพ์หน้าละ10รายการ
โดยมีหัวตาราง ผมสามารถกำหนดหัวเรื่องได้แล้วครับ
แต่มีเงื่อนไขที่ด้านล่างของตารางจะต้องเป็นสูตรที่จะต้องสั่งพิมพ์ตามไปด้วยในทุกๆหน้าครับ
มีวิธีการแบบไหน หรือจำเป็นต้องใช้ VBA ไหมครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31177 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Mon Mar 28, 2022 10:26 pm
ไม่ทราบมีปัญหาอะไรกับการพิมพ์บรรทัดยอดรวมไปด้วยกรุณาอธิบายเพิ่มเติมครับ
ถ้าจะพิมพ์ส่วนไหนก็แค่เลือกข้อมูล > ไปที่เมนู Page Layout > Print Area > Set Print Area
Excel ไม่มีให้พิมพ์ซ้ำด้านท้ายข้อมูล จะพิมพ์อะไรก็เลือกเอาไว้ก่อน ยกเว้นหัวข้อมูลถึงจะมี Option ให้เลือกได้ว่าให้ซ้ำที่บรรทัดไหน
หากต้องการให้บรรทัดด้านท้ายคงที่อยู่เสมอในทุก ๆ หน้าจะต้องใช้เทคนิคอื่นเข้ามาช่วย เช่นใช้ VBA เก็บภาพด้านท้ายเอาไว้แล้วกำหนดให้ท้ายกระดาษเป็นรูปนั้น เช่นนี้เป็นต้นครับ
thanadul0816
Member
Posts: 48 Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365
#3
Post
by thanadul0816 » Mon Mar 28, 2022 11:07 pm
snasui wrote: Mon Mar 28, 2022 10:26 pm
ไม่ทราบมีปัญหาอะไรกับการพิมพ์บรรทัดยอดรวมไปด้วยกรุณาอธิบายเพิ่มเติมครับ
ถ้าจะพิมพ์ส่วนไหนก็แค่เลือกข้อมูล > ไปที่เมนู Page Layout > Print Area > Set Print Area
Excel ไม่มีให้พิมพ์ซ้ำด้านท้ายข้อมูล จะพิมพ์อะไรก็เลือกเอาไว้ก่อน ยกเว้นหัวข้อมูลถึงจะมี Option ให้เลือกได้ว่าให้ซ้ำที่บรรทัดไหน
หากต้องการให้บรรทัดด้านท้ายคงที่อยู่เสมอในทุก ๆ หน้าจะต้องใช้เทคนิคอื่นเข้ามาช่วย เช่นใช้ VBA เก็บภาพด้านท้ายเอาไว้แล้วกำหนดให้ท้ายกระดาษเป็นรูปนั้น เช่นนี้เป็นต้นครับ
ผมต้องการพิมพ์หน้าละ10รายการ
และให้ผลรวมออกทุกๆหน้า
ตอนนี้นี้ผมใช่วิธีตามไฟล์แนบ Sheet2 ครับ
ซึ่งต้องกรอกพิมพ์ทีละใบ หากข้อมูลเยอะจะทำงานได้ช้าครับ
**ผมพึ่งนึกได้ตอนนี้กำลังพิมพ์นี้เลย ว่าผมจะใช้แบบเดิมตามSheet2 แต่เพิ่มคำสั่งให้ กรอกเลขให้ที่ Sheet2 Cell:K5
เป็น กรอกเลข111ที่ K5 >>>สั่งพิมพ์ กลับมา กรอกเลข121 ที่ K5>>>สั่งพิมพ์ วนเรียงไปเรื่อยๆแบบนี้ดีไหมครับ
snasui
Site Admin
Posts: 31177 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Tue Mar 29, 2022 7:41 am
เข้าใจว่าต้องการให้สะดวกต่อการแสดงผลข้อมูลทีละ 10 รายการในแต่ละหน้า ตัวอย่างสูตรตามด้านล่างครับ
ที่ O1 คีย์
=G1+1
Enter > Copy ลงด้านล่าง
ที่ A5 คีย์
=IFERROR(INDEX(Sheet1!A$2:A$31,10*($G$1-1)+ROWS(A$5:A5)),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
ที่ I5 คีย์
=IFERROR(INDEX(Sheet1!A$2:A$31,10*($O$1-1)+ROWS(I$5:I5)),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
ลองเปลี่ยนค่าที่ G1 เป็นเลขหน้าใด ๆ ที่ต้องการ แล้วดูผลลัพธ์ว่าตรงกับที่ต้องการหรือไม่ครับ
thanadul0816
Member
Posts: 48 Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365
#5
Post
by thanadul0816 » Tue Mar 29, 2022 9:04 am
snasui wrote: Tue Mar 29, 2022 7:41 am
เข้าใจว่าต้องการให้สะดวกต่อการแสดงผลข้อมูลทีละ 10 รายการในแต่ละหน้า ตัวอย่างสูตรตามด้านล่างครับ
ที่ O1 คีย์
=G1+1
Enter > Copy ลงด้านล่าง
ที่ A5 คีย์
=IFERROR(INDEX(Sheet1!A$2:A$31,10*($G$1-1)+ROWS(A$5:A5)),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
ที่ I5 คีย์
=IFERROR(INDEX(Sheet1!A$2:A$31,10*($O$1-1)+ROWS(I$5:I5)),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
ลองเปลี่ยนค่าที่ G1 เป็นเลขหน้าใด ๆ ที่ต้องการ แล้วดูผลลัพธ์ว่าตรงกับที่ต้องการหรือไม่ครับ
ขอบคุณมากครับ ได้ผลใกล้เคียงกับที่ต้องการ พอจะเข้าใจแล้วแล้ว จะนำไปประยุกต์ใช้งานกับ VBA ต่อครับ
thanadul0816
Member
Posts: 48 Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365
#6
Post
by thanadul0816 » Tue Mar 29, 2022 10:41 pm
thanadul0816 wrote: Tue Mar 29, 2022 9:04 am
snasui wrote: Tue Mar 29, 2022 7:41 am
เข้าใจว่าต้องการให้สะดวกต่อการแสดงผลข้อมูลทีละ 10 รายการในแต่ละหน้า ตัวอย่างสูตรตามด้านล่างครับ
ที่ O1 คีย์
=G1+1
Enter > Copy ลงด้านล่าง
ที่ A5 คีย์
=IFERROR(INDEX(Sheet1!A$2:A$31,10*($G$1-1)+ROWS(A$5:A5)),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
ที่ I5 คีย์
=IFERROR(INDEX(Sheet1!A$2:A$31,10*($O$1-1)+ROWS(I$5:I5)),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
ลองเปลี่ยนค่าที่ G1 เป็นเลขหน้าใด ๆ ที่ต้องการ แล้วดูผลลัพธ์ว่าตรงกับที่ต้องการหรือไม่ครับ
ขอบคุณมากครับ ได้ผลใกล้เคียงกับที่ต้องการ พอจะเข้าใจแล้วแล้ว จะนำไปประยุกต์ใช้งานกับ VBA ต่อครับ
ขอถามต่อเนื่องจากงานเดิมครับ
ผมปรับการพิมพ์เป็น 3 รายการต่อ 1 หน้าและใช้ VBA ในการกรอกลำดับและสั่งพิมพ์
สิ่งที่ต้องการคือ ปรับแก้โค้ดเป็นแบบ loop ซ้ำ
โดย VBA ชุดนี้สั่งกรอกข้อมูลแล้วพิมพ์ซ้ำ หน้าละ 3 รายการ ซ้ำไปเรื่อยๆตามข้อมูลของ Sheet DATA
ต้องการจบการ loop ถ้าถึงข้อมูลสุดท้าย ในคอลัมน์ "ชื่อ" ของ Sheet DATA จากไฟล์ ข้อมูลจะจบที่ลำดับที่ 70 ครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31177 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#7
Post
by snasui » Tue Mar 29, 2022 11:57 pm
ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub Macro2()
Dim l As Long
With Worksheets("DATA")
For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Value Step 3
With Worksheets("ãºÊè§")
.Range("b4").Value = i
.Range("a1:f29").PrintOut
End With
Next i
End With
End Sub
thanadul0816
Member
Posts: 48 Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365
#8
Post
by thanadul0816 » Wed Mar 30, 2022 9:07 pm
snasui wrote: Tue Mar 29, 2022 11:57 pm
ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub Macro2()
Dim l As Long
With Worksheets("DATA")
For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Value Step 3
With Worksheets("ãºÊè§")
.Range("b4").Value = i
.Range("a1:f29").PrintOut
End With
Next i
End With
End Sub
ขอบคุณครับ ได้ผลที่ต้องการครับ
thanadul0816
Member
Posts: 48 Joined: Wed Nov 18, 2020 10:39 pm
Excel Ver: 365
#9
Post
by thanadul0816 » Mon Apr 18, 2022 10:31 pm
thanadul0816 wrote: Wed Mar 30, 2022 9:07 pm
snasui wrote: Tue Mar 29, 2022 11:57 pm
ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub Macro2()
Dim l As Long
With Worksheets("DATA")
For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Value Step 3
With Worksheets("ãºÊè§")
.Range("b4").Value = i
.Range("a1:f29").PrintOut
End With
Next i
End With
End Sub
ขอบคุณครับ ได้ผลที่ต้องการครับ
ขอถามต่อเนื่องในโพสต์เดิมครับ
จากโค้ดที่ผมใช้ มีปัญหาในการนับคอลัมน์ที่ใส่สูตรไว้แต่ยังไม่มีผลลัพธ์ที่คอลัมน์ J ครับ
ทำให้ไม่สามารถนับจำนวนแถวได้ ขอทราบแนวทางปรับโค้ดครับ
Code: Select all
Sub PrintPreview() '¾ÃÕÇÔÇ¡è͹¾ÔÁ¾ì
'CarryOn = MsgBox("µéͧ¡ÒÃÊÑè§¾ÔÁ¾ì ãªè ËÃ×Í äÁè?", vbYesNo, "Confirm Print")
'If CarryOn = vbYes Then
Dim l As Long
With Worksheets("DATASHIP3")
For i = 1 To .Range("j" & .Rows.Count).End(xlUp).Value Step 3
With Worksheets("Bill")
.Range("D2").Value = i
.Range("a1:i33").PrintPreview
.Application.Dialogs(xlDialogPrint).Show
'Worksheets("㺻Ð˹éÒ¡Åèͧ 50 ¡ÃÑÁ").PrintOut ActivePrinter:=Sheets("SET").Range("B2")
End With
Next i
Sheets("BILL").Select
Range("D2").Select
ActiveCell.FormulaR1C1 = "1"
MsgBox "ÊÑè§¾ÔÁ¾ìàÃÕºÃéÍÂ"
End With
'End If
End Sub
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31177 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#10
Post
by snasui » Tue Apr 19, 2022 7:36 am
ปรับตรง
For i = 1... เป็นด้านล่างครับ
For i = 1 To Application.Count(.Range("j4", .Range("j" & .Rows.Count).End(xlUp))) Step 3