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
:D 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
:D ตัวอย่างการ 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 ครับ ผมเลยเพิ่ม

Code: Select all

 Dim i As Long, j As Long
รันผ่าน ไม่แน่ใจว่าถูกหรือไม่ครับอาจารย์

ส่วนที่ 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
:D ในส่วนของการดึงค่าจาก 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
:D ได้ผลเป็นอย่างไรหรือติดปัญหาอะไร หรือแค่แจ้งเพื่อทราบว่าทำงานได้ปกติแล้วครับ :?:

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
:D ลักษณะการแสดงที่ไม่ตรงกับตำแหน่งเป้าหมาย ต้องเข้าไปปรับใน 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
:D แนบตัวอย่างไฟล์พร้อม 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
:D ชื่อ สกุลไม่ได้เหมือนกันทุกบรรทัด จะเลือกบรรทัดไหน ใช้หลักเกณฑ์ใดในการเลือกบรรทัดนั้นครับ :?:

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 ที่ต้องนำข้อมูลไปกรอกใช่หรือไม่ครับอาจารย์