Page 1 of 1

การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Mon Mar 07, 2016 7:58 pm
by tejasid

Code: Select all

Sub print()
If b1 = 1 Then
Sheets("sheet2").setect
ActiveWindow.SelectedSheets.PrintOut From:=1 To:=4, Copies:=1, Collate_
:=True, IgnorePrintAreas:=False
Sheets("sheet4").setect
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True, IgnorePrintAreas:=False
Else 
If b1 = 2 Then
Sheets("sheet1").setect
ActiveWindow.SelectedSheets.PrintOut From:=1 To:=4, Copies:=1, Collate_
:=True, IgnorePrintAreas:=False
Sheets("sheet5").setect
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True, IgnorePrintAreas:=False
Else
End if
End Sub

สิ่งที่ต้องการดังนี้ครับ
1 กดปุ่มสั่งพิมพ์ แล้ว vba จะทำการตรวจสอบ ช่อง b1 ว่างบที่จะพิมพ์เป็นงบอะไรแล้วสั่งพิมพ์ชีทที่เป็นงบนั้น
2 ให้ตรวจสอบว่า ขออนุมัติว่าเป็นจัดซื้อหรือจัดจ้าง หากเป็นจัดซื้อให้พิมพ์ชีทใบสั่งซื้อเพิ่ม และหากเป็นจัดจ้างก็ให้พิมพ์ใบสั่งจ้าง โดยมีเงื่อนไขว่าจะสั่งพิมพ์เมื่อราคาเกิน 5000 บาท

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Mon Mar 07, 2016 8:02 pm
by snasui
:D ช่วยเพิ่มคำอธิบายมาในกระทู้นี้ด้วยครับ ว่าต้องการจะทำอะไร ที่ไหน อย่างไร

กระทู้ที่ตั้งสามารถแก้ไขได้ภายใน 60 นาที และสามารถลบได้ภายใน 10 นาทีหลังจากโพสต์ครั้งแรก หากเกินเวลาดังกล่าวจะแก้ไขและลบไม่ได้แล้วแต่กรณีครับ

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Mon Mar 07, 2016 8:04 pm
by tejasid
1 กดปุ่มสั่งพิมพ์ แล้ว vba จะทำการตรวจสอบ ช่อง b1 ว่างบที่จะพิมพ์เป็นงบอะไรแล้วสั่งพิมพ์ชีทที่เป็นงบนั้น
2 ให้ตรวจสอบว่า ขออนุมัติว่าเป็นจัดซื้อหรือจัดจ้าง หากเป็นจัดซื้อให้พิมพ์ชีทใบสั่งซื้อเพิ่ม และหากเป็นจัดจ้างก็ให้พิมพ์ใบสั่งจ้าง โดยมีเงื่อนไขว่าจะสั่งพิมพ์เมื่อราคาเกิน 5000 บาท

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Mon Mar 07, 2016 8:06 pm
by tejasid
ผมทดลองใช้เงื่อนไขแต่ไม่เข้าใจเงื่อนไขการใช้ if ใน vba ในการใช้คำสั่ง

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Mon Mar 07, 2016 8:21 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Sub พิมพ์งาน()
    Sheets(Range("b2").Value).Select
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    If Range("b3").Value = "จัดซื้อ" Then
        Sheets("จัดซื้อ").Select
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    End If
    If Range("b3").Value = "จัดจ้าง" And Range("b4").Value > 5000 Then
        Sheets("ใบสั่งจ้าง").setect
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    End If
End Sub
ในคราวถัดไป ไฟล์ที่แนบมาขอให้แนบ Code ที่โพสต์มาในฟอรัมด้วย ผู้ตอบจะได้สะดวกในการตอบ ไม่ต้องคอยคัดลอกไปวางเองครับ

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Mon Mar 07, 2016 8:25 pm
by tejasid
ขอบคุณอาจารย์มากครับ จะทำตามอาจารย์แนะนำทุกครั้งครับ

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Wed Mar 09, 2016 5:45 pm
by tejasid
เพิ่มเติมครับสำหรับการใช้ชุดคำสั่งนี้เพื่อมีใครสนใจนำไปใช้ครับ ผมได้ทดลองรันคำสั่งแล้ว การใช้งานทำได้ไม่สมบูรณ์ครับอาจารย์งานที่พิมพ์ออกมาจะรันแค่คำสั่งแรกอย่างเดียว ตามเงื่อนไขใช้ไม่ได้ครับ ผมต้องทำการแก้ไข code ดังนี้

Code: Select all

Sub ¾ÔÁ¾ì§Ò¹()
        If Range("B3").Value = "¨Ñ´«×éÍ" And Range("B4").Value >= 5000 Then
        Sheets("ãºÊÑ觫×éÍ").Select
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    End If
    If Range("B3").Value = "¨Ñ´¨éÒ§" And Range("B4").Value >= 5000 Then
        Sheets("ãºÊÑ觨éÒ§").Select
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    End If
End Sub
ต้องแก้ไขcodeดังนี้ครับถึงจะได้

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Thu Mar 10, 2016 11:34 am
by pongpang
เรียน อาจารย์ และ สมาชิก ทุกท่าน ผมทดลองใช้ Code ตามข้างล่างครับ
tejasid wrote:เพิ่มเติมครับสำหรับการใช้ชุดคำสั่งนี้เพื่อมีใครสนใจนำไปใช้ครับ ผมได้ทดลองรันคำสั่งแล้ว การใช้งานทำได้ไม่สมบูรณ์ครับอาจารย์งานที่พิมพ์ออกมาจะรันแค่คำสั่งแรกอย่างเดียว ตามเงื่อนไขใช้ไม่ได้ครับ ผมต้องทำการแก้ไข code ดังนี้

Code: Select all

Sub ¾ÔÁ¾ì§Ò¹()
        If Range("B3").Value = "¨Ñ´«×éÍ" And Range("B4").Value >= 5000 Then
        Sheets("ãºÊÑ觫×éÍ").Select
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    End If
    If Range("B3").Value = "¨Ñ´¨éÒ§" And Range("B4").Value >= 5000 Then
        Sheets("ãºÊÑ觨éÒ§").Select
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
        ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    End If
End Sub
ต้องแก้ไขcodeดังนี้ครับถึงจะได้
ผลที่ได้ จะ เป็นดังภาพ ครับ
เป็นสีแดง.jpg
ขอความกรุณา ช่วยแนะนำแก้ไข Code ให้ใช้ได้ด้วยครับ สำหรับไฟล์ที่มีCodeได้แนบมาด้วยแล้ว ครับ
test (1).xlsm

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Thu Mar 10, 2016 2:08 pm
by logic
โค้ดสีแดงเป็นโค้ดที่รันไม่ได้ต้องแก้ไม่ให้เป็นสีแดงก่อนครับ ผมลบค่าว่างด้านหน้าแต่ละบรรทัดให้โค้ดไปชิดหน้าสุดก็ใช้การได้แล้วครับ :)

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Thu Mar 10, 2016 4:53 pm
by tejasid
ไฟล์ที่ใช้ได้ครับ

Re: การสั่งพิมพ์แบบมีเงื่อนไข

Posted: Thu Mar 10, 2016 5:40 pm
by pongpang
ขอบคุณทั้ง 2 ท่าน ครับ