snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sup
Member
Posts: 136 Joined: Mon Sep 13, 2010 11:36 am
#1
Post
by sup » Thu Jul 05, 2012 12:00 pm
Code: Select all
Private Sub CommandButton3_Click()
Application.ActivePrinter = "\\qa02\Brother HL-2140 series on Ne04:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="\\qa02\Brother HL-2140 series on Ne04:", Collate:=True
End Sub
เรียนอาจารย์และท่านผู้รู้ทุกท่านครับ
ผมได้ Code จาก macro สั่งปริ้นฟอร์มออกมาซึ่งจะปริ้นได้เพียง 1 แผ่นเท่านั้น(ตามด้านบน) แล้วผมเอา Code นี้มาใส่ใน commandbutton ใช้คลิ๊กสั่งปริ้นท์ และหากต้องการที่จะปริ้นมากกว่า 1 แผ่น โดยทำ Textbox วางใน Sheet "Print Form" ให้ใส่จำนวนแผ่นที่ต้องการแล้วส่งข้อมูลนี้ไปยัง Code ไม่ทราบว่าจะปรับแก้ไข Code ตรงไหนครับ ผมรบกวนหน่อยครับ โดยส่วนตัวเข้าใจว่าจะต้องเปลี่ยนตรง "Copies:1" แต่ลองแล้วไม่เป็นผลครับ
ขอบคุณทุกท่านล่วงหน้าครับ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#2
Post
by bank9597 » Thu Jul 05, 2012 2:50 pm
ไม่ถนัดเรื่อง VBA เลยครับ เลยต้องรอให้ท่านอื่นๆช่วยเข้าดูให้อีกทีครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
sup
Member
Posts: 136 Joined: Mon Sep 13, 2010 11:36 am
#3
Post
by sup » Thu Jul 05, 2012 3:00 pm
ขอบคุณครับคุณ bank9597 ไม่เป็นไรครับ สิ่งที่คุณทำอยู่ดีอยู่แล้วครับ ยังมีอีกหลายปัญหาที่ผมต้องเอามาถามครับ ขอบคุณมากๆในน้ำใจที่ได้รับครับ ผมรู้กเยอะขึ้นกว่าเมื่อก่อนก็จากอาจารย์และหลายๆท่านครับ และเจริญรอยตามครับ มอบความรู้เล็กๆน้อยๆที่พอจะรู้บ้างให้คนน้องๆ ในที่ทำงาน มุมเล็ก มุมหนึ่งของคนไทยที่ยังมีน้ำใจให้กันครับ
yoguzaa
Member
Posts: 87 Joined: Mon Jan 09, 2012 4:48 pm
#4
Post
by yoguzaa » Thu Jul 05, 2012 3:30 pm
เห็นด้วยกับ ความเห็นของเจ้าของกระทู้ ครับ
คุณ แบงค์ เหมือนเป็น ต้นแบบที่ดีในการศึกษาหาความรู้ครับ
ลองหาดูจากกระทู้แรกๆของคุณแบงค์
จนถึงเดี๋ยวนี้ พัฒนาขึ้นจนช่วยตอบคำถามแทน ท่านอาจารย์ได้ ในหลายๆคำถาม
สังเกตที่ โปรไฟล์ ทางด้านซ้ายของโพสที่คุณแบงค์ตอบสิ
เดี๋ยวนี้ได้ ระดับ กูรู ไปแล้ว
สักวัน ผมคงจะได้เป็นมั่ง
ใช้คำว่า"ไม่รู้"เพื่อที่จะได้"รู้"
ไม่ใช่ใช้เพื่อ"ปฏิเสธความรับผิดชอบ"
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#5
Post
by bank9597 » Thu Jul 05, 2012 4:42 pm
เห็นด้วยกับ ความเห็นของเจ้าของกระทู้ ครับ
คุณ แบงค์ เหมือนเป็น ต้นแบบที่ดีในการศึกษาหาความรู้ครับ
ลองหาดูจากกระทู้แรกๆของคุณแบงค์
จนถึงเดี๋ยวนี้ พัฒนาขึ้นจนช่วยตอบคำถามแทน ท่านอาจารย์ได้ ในหลายๆคำถาม
สังเกตที่ โปรไฟล์ ทางด้านซ้ายของโพสที่คุณแบงค์ตอบสิ
เดี๋ยวนี้ได้ ระดับ กูรู ไปแล้ว
สักวัน ผมคงจะได้เป็นมั่ง
ผมลาออกจากการเป็นกูรูวันละหลายสิบรอบครับ เพราะทำหน้าที่ไม่ดีพอ
ทุกคนสามารถเก่งได้ครับ ผมแค่ทำงานที่ต้องใช้เอ็กเซลล์ เลยต้องคลุกคลีมากหน่อย แต่อย่างไรก็ตาม ผมแค่ต้องการช่วยเหลือเพื่อนสมาชิกทุกคนเท่าที่ช่วยได้ ถึงไม่ไ้ด้ก็จะเข้ามาแจ้งเพื่อไม่อยากให้เข้าใจว่าไม่มีใครสนใจครับ
สุดท้ายคือ ผมทำไปไม่ได้ต้องการอะไรทั้งสิ้นครับ แค่คำขอบคุณก็ประทับใจมากแล้วครับ อีกทั้งผมก็ยังไม่รู้อะไรมากยังต้องศึกษาอีกมากครับ เจ็บใจอยู่เหมือนกันที่ช่วยตอบเรื่อง VBA ไม่ได้
ขอบคุณผู้ถามทั้ง 2 ท่านครับ สำหรับคำชมที่ให้มา และหากมีอะไรผิดพลาด ก็สามารถบอกกล่าวผมได้เช่นกันครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
snasui
Site Admin
Posts: 31253 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Thu Jul 05, 2012 9:12 pm
sup wrote: โดยส่วนตัวเข้าใจว่าจะต้องเปลี่ยนตรง "Copies:1" แต่ลองแล้วไม่เป็นผลครับ
Code ที่ลองแล้วคือ Code ใดช่วยโพสต์มาด้วยครับ
sup
Member
Posts: 136 Joined: Mon Sep 13, 2010 11:36 am
#7
Post
by sup » Sat Jul 07, 2012 11:54 am
Code: Select all
Private Sub CommandButton3_Click()
Dim x As Integer
x = Worksheets("Form Print").TextBox1.Value
Application.ActivePrinter = "\\qa02\Brother HL-2140 series on Ne04:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=x, _
ActivePrinter:="\\qa02\Brother HL-2140 series on Ne04:", Collate:=True
End Sub
ขอโทษครับอาจารย์เข้ามาดูความคืบหน้าช้าไป พอดีงานเร่งมาครับเลยต้องเอางานไว้ก่อนครับ เดี๋ยวตกงานครับ
Code ตามด้านบนครับ ผมลองให้ x = 1 ผลสามารถ Runได้ครับ แต่พอเอาค่าจาก Textbox1 มาใส่ไม่ได้ครับ ไม่แน่ใจว่าผมเขียน Codeผิดตรงไหนอย่างไรครับ ยังงูๆปลาอยู่มากครับ รบกวนช่วยดูให้หน่อยครับ
ขอบคุณล่วงหน้าครับ
snasui
Site Admin
Posts: 31253 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Sat Jul 07, 2012 12:25 pm
ลองปรับเป็นตามด้านล่างครับ
Code: Select all
Private Sub CommandButton3_Click()
Dim x As Integer
x = CInt(Worksheets("Form Print").TextBox1.Value)
Application.ActivePrinter = "\\qa02\Brother HL-2140 series on Ne04:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=x, _
ActivePrinter:="\\qa02\Brother HL-2140 series on Ne04:", Collate:=True
End Sub
sup
Member
Posts: 136 Joined: Mon Sep 13, 2010 11:36 am
#9
Post
by sup » Sat Jul 07, 2012 2:03 pm
ขอบคุณครับอาจารย์ ใช้การได้ดังใจแล้วครับ ยังมีเรื่องติดใจนิดหนึ่งครับ ตรง CInt ช่วยอธิบายให้หน่อยครับ คืออะไร หลักการใช้อย่างไรครับ ขอบคุณมากๆครับ อ้อผมเพิ่ม Code Textbox1.Value="" ให้เคลียร์ค่าใน Textbox1 เข้าไปด้วยเพื่อเคลียร์เลขออกเมื่อคำสั่งสั่งจบครับ
snasui
Site Admin
Posts: 31253 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#10
Post
by snasui » Sat Jul 07, 2012 3:28 pm
Cint เป็นฟังก์ชั่นสำหรับแปลงตัวแปร x ให้กลับไปเป็น Interger ครับ
จาก Code เดิมได้ประกาศตัวแปร x เป็น Interger แต่เรามีการ Assign ค่าตัวแปร x ให้มีค่าเท่ากับค่าใน TextBox1 ซึ่งค่าเป็น
Text จึงต้องแปลง Text ให้กลับไปเป็น Interger ก่อนที่จะ Assign ค่าให้กับตัวแปร x เพื่อที่จะนำไปใช้ต่อไป
สำหรับฟังก์ชั่นการแปลงตัวแปร ดูเพิ่มเติมได้ที่นี่ครับ
http://msdn.microsoft.com/en-us/library/gg278896.aspx
sup
Member
Posts: 136 Joined: Mon Sep 13, 2010 11:36 am
#11
Post
by sup » Sat Jul 07, 2012 5:21 pm
ขอบคุณมากครับอาจารย์
หากมีข้อสงสัยตรงไหนผมจะมาถามต่อครับ