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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#1
Post
by jaruek » Sat Mar 01, 2014 11:17 pm
TestPost.xlsm
code ใน userform ไม่ทำงาน (21.08 KiB) Downloaded 9 times
ผมเขียน vba code รันในหน้า Worksheet ปกติได้ครับ พอสร้าง Userform แล้ว vba code ไม่ทำงาน ช่วยปรับ Code ให้ด้วยครับ
ขอบคุณมากครับ
แนบไฟล์มาให้ด้วยแล้ว
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Sat Mar 01, 2014 11:21 pm
ช่วยอธิบายคำว่าไม่ทำงานอย่างไรครับ ทั้งช่วยแจ้งมาด้วยว่าผมสามารถทดสอบการ Run UserForm ด้วยวิธีใดเพื่อให้เกิดเหตุการณ์นั้นครับ
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#3
Post
by jaruek » Sat Mar 01, 2014 11:36 pm
snasui wrote: ช่วยอธิบายคำว่าไม่ทำงานอย่างไรครับ ทั้งช่วยแจ้งมาด้วยว่าผมสามารถทดสอบการ Run UserForm ด้วยวิธีใดเพื่อให้เกิดเหตุการณ์นั้นครับ
ขอโทษครับ ใน Sheet1 จะมีปุ่มรันมาโคร 2 ปุ่ม คือ Service และ OT จะทำงานคือ เมื่อเลือกรหัสในคอลัมน์ A2 แล้วใส่จำนวนเงินในช่อง D2 เมื่อกดปุ่ม Service จะบันทึกจำนวนเงิน ตามรหัสที่เราเลือกใน A2 ครับ ผมต้องการสร้าง Userform แล้ว เลื่อกรหัส และ จำนวนเงิน และให้ได้ผลเหมือนกับที่เรากดปุ่ม Service ครับ เพิ่มเติมครับ Userform ลองรันในหน้า VBACode ได้เลยครับ
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Sat Mar 01, 2014 11:45 pm
การที่จะให้ UserForm Run ได้ต้องเขียน Code ไปเรียก UserForm มาก่อน เช่นด้านล่างครับ
ส่วนการทดสอบ UserForm ที่ผมพูดถึง ผมต้องการทราบว่าคุณ jaruek ทดสอบด้วยวิธีใดจึงไม่ทำงาน
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#5
Post
by jaruek » Sun Mar 02, 2014 12:00 am
snasui wrote: การที่จะให้ UserForm Run ได้ต้องเขียน Code ไปเรียก UserForm มาก่อน เช่นด้านล่างครับ
ส่วนการทดสอบ UserForm ที่ผมพูดถึง ผมต้องการทราบว่าคุณ jaruek ทดสอบด้วยวิธีใดจึงไม่ทำงาน
ครับ ส่งไฟล์ใหม่มาให้ครับ สร้างปู่ม Showform มาให้แล้ว ความต้องการคื่อ ให้แสดงผลเหมือนเมื่อเรากดปุ่ม ServiceหรือOt จะบันทึกจำนวนเงินตามที่เราใส่ค่าและบันทึกตามรหัสพนักงานที่เราเลือก ใน code userform ที่ผมทำ จะผิดตรง Eservice ซึ่งเป็นค่าจำนวนเงิน มันทำงานไม่ถูกต้องคือไม่ save ค่าลงตามรหัสพนักงาน ที่เราเลือกครับ อาจาร์ย ทดสอบ กับปุ่ม Service หรือ Ot ครับ มันจะบันทึกค่าจำนวนเงินตรงตามรหัสที่เลือกครับ พอผมทำให้ Userform ไม่ได้ตามที่ต้องการเหมือนที่กดปุ่ม Service หรือ ot ครับ
Attachments
TestPost.xlsm
(23.24 KiB) Downloaded 23 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Sun Mar 02, 2014 7:02 am
ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim Ecode As String
Dim Eservice As String
Dim Empname As String
Ecode = TextBox1.Value
Eservice = TextBox3.Value
Empname = TextBox2.Value
Range("A2").Select
Ecode = ActiveCell.FormulaR1C1 + 3
Eservice = Range("D" & Ecode).Address
Range("D2").Select
Empname = ActiveCell.FormulaR1C1
Range(Eservice).Select
ActiveCell.FormulaR1C1 = Val(ActiveCell.FormulaR1C1) + Val(Empname)
Range("D2").Select
ActiveCell.FormulaR1C1 = ""
End Sub
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#7
Post
by jaruek » Sun Mar 02, 2014 8:36 am
snasui wrote: ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim Ecode As String
Dim Eservice As String
Dim Empname As String
Ecode = TextBox1.Value
Eservice = TextBox3.Value
Empname = TextBox2.Value
Range("A2").Select
Ecode = ActiveCell.FormulaR1C1 + 3
Eservice = Range("D" & Ecode).Address
Range("D2").Select
Empname = ActiveCell.FormulaR1C1
Range(Eservice).Select
ActiveCell.FormulaR1C1 = Val(ActiveCell.FormulaR1C1) + Val(Empname)
Range("D2").Select
ActiveCell.FormulaR1C1 = ""
End Sub
ขอบคุณมากครับ
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#8
Post
by jaruek » Sun Mar 02, 2014 5:11 pm
jaruek wrote: snasui wrote: ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim Ecode As String
Dim Eservice As String
Dim Empname As String
Ecode = TextBox1.Value
Eservice = TextBox3.Value
Empname = TextBox2.Value
Range("A2").Select
Ecode = ActiveCell.FormulaR1C1 + 3
Eservice = Range("D" & Ecode).Address
Range("D2").Select
Empname = ActiveCell.FormulaR1C1
Range(Eservice).Select
ActiveCell.FormulaR1C1 = Val(ActiveCell.FormulaR1C1) + Val(Empname)
Range("D2").Select
ActiveCell.FormulaR1C1 = ""
End Sub
ขอบคุณมากครับ
รบกวนอีกครั้งครับ ผมลอง รัน แล้วจะติด Debug ที่บรรทัด
Eservice = Range("D" & Ecode).Address
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#9
Post
by jaruek » Sun Mar 02, 2014 5:14 pm
jaruek wrote: jaruek wrote: snasui wrote: ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim Ecode As String
Dim Eservice As String
Dim Empname As String
Ecode = TextBox1.Value
Eservice = TextBox3.Value
Empname = TextBox2.Value
Range("A2").Select
Ecode = ActiveCell.FormulaR1C1 + 3
Eservice = Range("D" & Ecode).Address
Range("D2").Select
Empname = ActiveCell.FormulaR1C1
Range(Eservice).Select
ActiveCell.FormulaR1C1 = Val(ActiveCell.FormulaR1C1) + Val(Empname)
Range("D2").Select
ActiveCell.FormulaR1C1 = ""
End Sub
ขอบคุณมากครับ
รบกวนอีกครั้งครับ ผมลอง รัน แล้วจะติด Debug ที่บรรทัด
Eservice = Range("D" & Ecode).Address
ผมอาจจะอธิบายเข้าใจอยากไป ต้องขอโทษครับ ความต้องการก็คือ เมื่อคีย์ข้อมูลใน Userform ที่สร้าง แล้ว พอดกปุ่ม Saveให้บันทึกข้อมูลลงใน Sheet1 เหมือนที่ผมทำปุ่ม Service ครับ
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#10
Post
by snasui » Sun Mar 02, 2014 5:19 pm
ลองยกตัวอย่างการกรอกข้อมูลให้ติด Bug ที่บรรทัดนั้นมาด้วยครับ
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#11
Post
by jaruek » Sun Mar 02, 2014 8:35 pm
snasui wrote: ลองยกตัวอย่างการกรอกข้อมูลให้ติด Bug ที่บรรทัดนั้นมาด้วยครับ
ผมพยายาม Capture หน้าจอ แต่ไม่ได้ครับ เลยขอพิมพ์แล้วกันครับ ตัวอย่าง ใน Userform ช่อง Code ใส่เลข 6 ช่อง Name ใส่ F ช่อง Amount ใส่ 5000 พอกดปุ่ม Save ก็จะติด Debug บรรทัดที่ผมแจ้งไว้ก่อนหน้าครับ ส่วนความต้องการก็คือ เมื่อเรากด Save ให้ช่องจำนวนเงิน 5000 บันทึกค่าลงในตารางของ Sheet1 บรรทัดที่ 9 ซึ่งเป็นบรรทัดของรหัส 6 ตามที่คีย์ใน Useform ครับ ขอบคุณครับ
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#12
Post
by snasui » Mon Mar 03, 2014 8:55 am
ผมทดสอบ Code แล้วไม่ติด Bug
ตัวอย่าง Code สำหรับการนำค่าใน TextBox3 ไปใส่ในคอลัมน์ D หากคอลัมน์ A มีค่าตรงกับ TextBox1 ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim Ecode As String
Dim Eservice As String
Dim Empname As String
Dim line As Integer
Ecode = TextBox1.Value
Eservice = TextBox3.Value
Empname = TextBox2.Value
line = Application.Match(CInt(Ecode), Range("a:a"), 0)
Range("d" & line) = CInt(TextBox3.Text)
'Other code
End Sub
jaruek
Member
Posts: 94 Joined: Mon Dec 10, 2012 10:43 am
#13
Post
by jaruek » Mon Mar 03, 2014 11:43 am
snasui wrote: ผมทดสอบ Code แล้วไม่ติด Bug
ตัวอย่าง Code สำหรับการนำค่าใน TextBox3 ไปใส่ในคอลัมน์ D หากคอลัมน์ A มีค่าตรงกับ TextBox1 ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim Ecode As String
Dim Eservice As String
Dim Empname As String
Dim line As Integer
Ecode = TextBox1.Value
Eservice = TextBox3.Value
Empname = TextBox2.Value
line = Application.Match(CInt(Ecode), Range("a:a"), 0)
Range("d" & line) = CInt(TextBox3.Text)
'Other code
End Sub
ได้แล้วครับ ขอบคุณมากๆ ครับ