Page 1 of 1

ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Tue May 10, 2011 10:56 am
by tommmaster
โปรแกรมนี้จะเป็นการรันเลขที่เอกสารตามจำนวนที่ใส่ค่าเข้าไปนะครับ (ตามไฟล์แนบ)
เพียงแต่มันสามารถทำได้แค่ใส่จำนวนที่จะพิมพ์ แล้วนำค่านั้นๆมาแสดง

เช่น ในเซล N11 จะมีค่า =54000000+R11 (R11 คือจำนวนที่สั่งพิมพ์)
แล้วแสดงผลออกมาทางเครื่องพิมพ์
แต่ที่ต้องการเพิ่มเติมคือ พอรัน VBA แล้ว มี ช่องให้ใส่ค่าในเซล N11 ด้วยน่ะครับ
เช่น ต้องการเอกสารเลขที่ 54091001-54091500 ก็ใส่ เลข 54091000 ลงไปพร้อมกับใส่จำนวนที่ต้องการซึ่งคือ 499
ผลลัพที่ได้ก็จะเป็น เอกสารเลขที่ 54091001-54091500 รวมทั้งสิ้น 499 ชุด

และอีกอย่างนะครับถ้าเราส่งไฟล์นี้ไปให้คนอื่นมีวิธีที่ไม่ต้องให้เค้ากดเิปิดใช้งานมาโครทุกครั้งไหมครับ

ขอบคุณมากนะครับ
-------------------------------------------------------------
Option Explicit
Sub PrintOutput()
Dim i As Integer
Dim a As Integer
On Error Resume Next
a = InputBox( _
Title:="Program by TommMaster", _
prompt:="ãÊè¨Ó¹Ç¹·Õèµéͧ¡ÒÃÊÑè§¾ÔÁ¾ì ?")
If Err = 13 Then
MsgBox "¨Ó¹Ç¹·ÕèÊÑè§¾ÔÁ¾ìäÁè¶Ù¡µéͧ !!!"
Exit Sub
End If
For i = 1 To a
Range("R11") = i
Range("Page" & "R11").NumberFormat = "0000"
Range("A3:Q41").PrintOut
Next i
End Sub

------------------------------------------------------
Credit

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Tue May 10, 2011 12:00 pm
by snasui
ไม่เจอ Code VBA ในไฟล์แนบ ช่วยแนบ Code มาให้ด้วยครับ

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Tue May 10, 2011 1:36 pm
by tommmaster
โค้ดตามนี้เลยครับ


Option Explicit
Sub PrintOutput()
Dim i As Integer
Dim a As Integer
On Error Resume Next
a = InputBox( _
Title:="Title", _
prompt:="ãÊè¨Ó¹Ç¹·Õèµéͧ¡ÒÃÊÑè§¾ÔÁ¾ì ?")
If Err = 13 Then
MsgBox "¨Ó¹Ç¹·ÕèÊÑè§¾ÔÁ¾ìäÁè¶Ù¡µéͧ !!!"
Exit Sub
End If
For i = 1 To a
Range("R11") = i
Range("Page" & "R11").NumberFormat = "0000"
Range("A3:Q41").PrintOut
Next i
End Sub

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Tue May 10, 2011 5:31 pm
by snasui
ช่วยแนบมากับไฟล์และปรับ code ให้ตรงกับไฟล์ตัวอย่างที่แนบมาด้วยครับ ผมจะได้เขียนเฉพาะส่วนที่ติดปัญหาให้ครับ :D

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Tue May 10, 2011 11:21 pm
by tommmaster
ตามไฟลแนบนะครับ
รบกวนด้วยนะครับ

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Tue May 10, 2011 11:50 pm
by snasui
:D ลองตามไฟล์แนบครับ

เพิ่ม Module1 และปรับ Code เป็นตามด้านล่าง

Code: Select all

Sub PrintOutput()
Dim i As Integer
Dim a As Long, b As Long
On Error Resume Next
a = InputBox( _
        Title:="Title", _
        prompt:="ใส่เลขที่เอกสาร ?")
b = InputBox( _
        Title:="Title", _
        prompt:="ใส่จำนวนที่ต้องการพิมพ์ ?")
If Err = 13 Then
    MsgBox "จำนวนที่สั่งพิมพ์ไม่ถูกต้อง !!!"
    Exit Sub
End If
For i = 1 To b
    Range("N11").NumberFormat = "00000000"
    Range("N11") = a + i
    Range("A3:Q41").PrintOut
Next i
End Sub

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Thu May 12, 2011 12:53 am
by tommmaster
ขอบคุณอาจารย์มากนะครับ

จะไปลองใช้งานดูนะครับ

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Thu May 12, 2011 1:00 am
by tommmaster
ขอถามเพิ่มเติมอีกนิดดนึงนะครับ

เราสามารถทำให้ ใช้ InputBox แ่ค่ 1 กล่อง แต่รับ ค่า ทั้ง 2 ค่าเลยได้ไหมครับ

แบบพอกดรันแล้ว -->ใส่เลขเอกสาร -->tap -->ใส่จำนวนหน้า -->Enter

น่าจะทำให้ User ใช้งานสะดวกกว่าที่จะมากด Enter 2ครั้งน่ะครับ

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Thu May 12, 2011 7:09 am
by snasui
Inputbox ไม่สามารถทำให้รับได้หลายค่าพร้อมกันในคราวเดียวครับ การทำเช่นนั้นต้องสร้าง Form ขึ้นมารับค่า แล้วนำค่านั้น ๆ ไปใช้ ผมทำตัวอย่างให้แล้วในไฟล์แนบ

หลักการคือเมื่อคลิกปุ่มสั่งพิมพ์ในชีท YUM จะมี Form ขึ้นมาให้กรอกค่าที่ต้องการ จากนั้นคลิกปุ่ม OK โปรแกรมก็จะ Run Number และพิมพ์ใบแจ้งหนี้ให้

Re: ช่วยทีครับ การใช้ VBA ใส่ค่าลงในเซลแล้วสั่งพิมพ์ครับ

Posted: Fri May 13, 2011 12:31 am
by tommmaster
ขอขอบพระคุณอย่างสูงครับ