Page 1 of 2
เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 11:29 am
by piman
สวัสดีครับ
เดิมที่เมื่อกดปุ่มปริ๊นแล้วให้ข้อมูลใน Textbox แต่ละช่อง ไปอยู่ใน Cell ที่จัดเตรียมไว้ทำเป็นฟอร์มสำหรับปริ๊นครับ
ทีนี้ผมต้องการให้เลือกข้อมูลใน List box แล้วก็กดปุ่มปริ๊น ให้ส่งค่า ใน List box ไปใส่ไว้ใน Cell ที่กำหนดไว้ครับ
ผมลองทดสอบส่งข้อมูลจาก Textbox สามารถรันได้ปกติครับ
ผมเลยลองนำมาปรับเป็นส่งค่าจาก List box แล้วเกิด error ครับ
Code: Select all
Sub Print_Form()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Historyemp")
With Userform1
sh.Range("I2").Value = Me.lstData.List(Me.lstData.ListIndex, 1)
sh.Range("I4").Value = Me.lstData.List(Me.lstData.ListIndex, 2)
sh.Range("D8").Value = Me.lstData.List(Me.lstData.ListIndex, 3)
sh.PageSetup.PrintArea = "$A$1:$K$48"
sh.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & Application.PathSeparator & Userform1.Me.lstData.List(Me.lstData.ListIndex, 4).Value & ".pdf"
MsgBox "ปริ๊นข้อมูลเรียบร้อยแล้ว.", vbOKOnly + vbInformation, "Print"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End With
End Sub
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 12:21 pm
by logic
ขอไฟล์แนบที่ใส่โค้ดมาแล้ว ไม่มีไฟล์ให้ดูคนไม่ชำนาญจะคลำทางลำบากครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 1:05 pm
by piman
ไฟล์แนบครับผม
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 7:47 pm
by snasui
Procedure ที่ชื่อ Print_Form มี Code ไม่ตรงกับที่โพสต์มาในความเห็น #1 กรุณาแนบไฟล์มาใหม่ครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 9:19 pm
by piman
ผมแนบไฟล์มาให้ใหม่แล้วครับผม
ขอบคุณครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:10 pm
by snasui
ตัวอย่างการ Loop ครับ
Code: Select all
With Userform1
For i = 0 To .lstData.ListCount - 1
For j = 0 To .lstData.ColumnCount - 1
sh.Range("I2").Offset(i, j).Value = .lstData.List(i, j)
Next j
Next i
End With
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:30 pm
by piman
ขอบคุณครับ
ผมลองนำ Code ที่อาจารย์แนะนำใช้
ส่วนที่ 1 ผมลองรันก่อนหน้านี้ มีขึ้น error ที่ i j ครับ ผมเลยเพิ่ม
รันผ่าน ไม่แน่ใจว่าถูกหรือไม่ครับอาจารย์
ส่วนที่ 2 ทีนี้ลองรัน มีขึ้น error ที่
Code: Select all
Set sh = ThisWorkbook.Sheets("Historyemp")
ส่วนที่ 3 กรณี ที่รันผ่านครับ
Code: Select all
sh.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & Application.PathSeparator & Userform1.txtName.Value & ".pdf"
ส่วน Code นี้เดิมที จะตั้งชื่อไฟล์จาก txtName ครับ แต่ถ้าดึงข้อมูลจาก ListBox จะดึงข้อมูลส่วนไหนมาตั้งเป็นชื่อไฟล์ PDF ครับ
ขอบคุณครับ
Code: Select all
Sub Print_Form()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim sh As Worksheet
Dim i As Long, j As Long
Set sh = ThisWorkbook.Sheets("Historyemp")
With Userform1
For i = 0 To .lstData.ListCount - 1
For j = 0 To .lstData.ColumnCount - 1
sh.Range("I2").Offset(i, j).Value = .lstData.List(i, j)
sh.Range("I4").Offset(i, j).Value = .lstData.List(i, j)
sh.Range("D8").Offset(i, j).Value = .lstData.List(i, j)
Next j
Next i
sh.PageSetup.PrintArea = "$A$1:$K$48"
sh.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & Application.PathSeparator & Userform1.txtName.Value & ".pdf"
MsgBox "»ÃÔê¹¢éÍÁÙÅàÃÕºÃéÍÂáÅéÇ.", vbOKOnly + vbInformation, "Print"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End With
End Sub
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:36 pm
by piman
แก้ไขครับอาจารย์
เนื่องจาก Sheet ที่ชื่อ Historyemp ไม่มีจึงเกิด Error ครับ
ตอนนี้กดรัน แล้วเจอ Error ในส่วนที่ 3 ครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:36 pm
by piman
แก้ไขครับอาจารย์
เนื่องจาก Sheet ที่ชื่อ Historyemp ไม่มีจึงเกิด Error ครับ
ตอนนี้กดรัน แล้วเจอ Error ในส่วนที่ 3 ครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:37 pm
by piman
ไฟล์แนบครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:41 pm
by snasui
ในส่วนของการดึงค่าจาก TextBox คือ
Userform1.txtName.Value
ได้แก้แล้วยัง แก้เป็นอะไรครับ
ในส่วนนี้ต้องทราบเองว่าจะใช้อะไรเป็นชื่อของไฟล์ หากจะใช้ค่าใน ListBox ก็ต้องทราบว่าเอามาจากบรรทัดไหน คอลัมน์ไหน ซึ่งต้องปรับมาเองก่อน ติดแล้วค่อยถามกันต่อครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:56 pm
by piman
ผมนำข้อมูลใน List Box ช่องที่ 4 คือชื่อ - นามสกุลครับ มาตั้งเป็นชื่อไฟล์
Code: Select all
sh.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & Application.PathSeparator & Userform1.lstData.List(Userform1.lstData.ListIndex, 4) & ".pdf"
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 10:58 pm
by snasui
ได้ผลเป็นอย่างไรหรือติดปัญหาอะไร หรือแค่แจ้งเพื่อทราบว่าทำงานได้ปกติแล้วครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 11:07 pm
by piman
ขึ้น error ที่บรรทัดนี้ครับ
และข้อมูลที่ไปแสดงที่ชีท Historyemp มาทั้งหมดเลย ไม่ได้มาเฉพาะข้อมูลที่เราเลือก และไม่อยู่ในตำแหน่งที่เรากำหนดครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 11:12 pm
by snasui
ลักษณะการแสดงที่ไม่ตรงกับตำแหน่งเป้าหมาย ต้องเข้าไปปรับใน Code ให้วางข้อมูลให้ตรงกับตำแหน่งปลายทางที่ต้องการครับ
ในภาพไม่ใช่ Error ของ Code แต่อย่างใด ขึ้นอยู่กับการกำหนดของเราเองครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 11:26 pm
by piman
ครับอาจารย์ ส่วนของการตั้งชื่อ PDF ขึ้น error ที่บรรทัดนี้ครับ
Code: Select all
sh.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & Application.PathSeparator & Userform1.lstData.List(Userform1.lstData.ListIndex, 4) & ".pdf"
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 11:29 pm
by snasui
แนบตัวอย่างไฟล์พร้อม Code ที่มีปัญหามาด้วยครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 11:32 pm
by piman
ไฟล์แนบครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Mon Aug 31, 2020 11:40 pm
by snasui
ชื่อ สกุลไม่ได้เหมือนกันทุกบรรทัด จะเลือกบรรทัดไหน ใช้หลักเกณฑ์ใดในการเลือกบรรทัดนั้นครับ
Re: เลือกข้อมูลใน List Box แล้วกดปุ่มปริ๊น
Posted: Tue Sep 01, 2020 8:40 am
by piman
ขอบคุณครับอาจารย์ ผมขอไปหาข้อมูลเพิ่มเติมในส่วนนี้ก่อนครับ
ผมเลยลองกลับไปใช้แบบเดิมก่อน คือ รันโปรแกรม แล้วเลือกข้อมูลใน List Box แล้วกดปุ่มแก้ไข เพื่อให้ข้อมูลไปแสดงใน Text Box ก่อนครับ
หลังจากนั้นจึงค่อยกดปุ่มปริ๊นครับ สามารถแสดงผลได้ปกติครับ
***ผมได้ทำก่อนซ่อนชีท Historyemp ที่สร้างเป็นฟอร์มสำหรับปริ๊นไว้ พอกดรัน ขึ้น Error ที่บรรทัดนี้ครับ***
Code: Select all
sh.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & Application.PathSeparator & Userform1.txtName.Value & ".pdf"
โปรแกรมน่าจะหา Sheet Historyemp ที่ต้องนำข้อมูลไปกรอกใช่หรือไม่ครับอาจารย์