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
ช่วยเพิ่มคำอธิบายมาในกระทู้นี้ด้วยครับ ว่าต้องการจะทำอะไร ที่ไหน อย่างไร
กระทู้ที่ตั้งสามารถแก้ไขได้ภายใน 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
ตัวอย่าง 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 ท่าน ครับ