Page 1 of 1
Vba code ใน userform ไม่ทำงาน
Posted: Sat Mar 01, 2014 11:17 pm
by jaruek
TestPost.xlsm
- code ใน userform ไม่ทำงาน
- (21.08 KiB) Downloaded 18 times
ผมเขียน vba code รันในหน้า Worksheet ปกติได้ครับ พอสร้าง Userform แล้ว vba code ไม่ทำงาน ช่วยปรับ Code ให้ด้วยครับ
ขอบคุณมากครับ
แนบไฟล์มาให้ด้วยแล้ว
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sat Mar 01, 2014 11:21 pm
by snasui

ช่วยอธิบายคำว่าไม่ทำงานอย่างไรครับ ทั้งช่วยแจ้งมาด้วยว่าผมสามารถทดสอบการ Run UserForm ด้วยวิธีใดเพื่อให้เกิดเหตุการณ์นั้นครับ
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sat Mar 01, 2014 11:36 pm
by jaruek
snasui wrote:
ช่วยอธิบายคำว่าไม่ทำงานอย่างไรครับ ทั้งช่วยแจ้งมาด้วยว่าผมสามารถทดสอบการ Run UserForm ด้วยวิธีใดเพื่อให้เกิดเหตุการณ์นั้นครับ
ขอโทษครับ ใน Sheet1 จะมีปุ่มรันมาโคร 2 ปุ่ม คือ Service และ OT จะทำงานคือ เมื่อเลือกรหัสในคอลัมน์ A2 แล้วใส่จำนวนเงินในช่อง D2 เมื่อกดปุ่ม Service จะบันทึกจำนวนเงิน ตามรหัสที่เราเลือกใน A2 ครับ ผมต้องการสร้าง Userform แล้ว เลื่อกรหัส และ จำนวนเงิน และให้ได้ผลเหมือนกับที่เรากดปุ่ม Service ครับ เพิ่มเติมครับ Userform ลองรันในหน้า VBACode ได้เลยครับ
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sat Mar 01, 2014 11:45 pm
by snasui

การที่จะให้ UserForm Run ได้ต้องเขียน Code ไปเรียก UserForm มาก่อน เช่นด้านล่างครับ
ส่วนการทดสอบ UserForm ที่ผมพูดถึง ผมต้องการทราบว่าคุณ jaruek ทดสอบด้วยวิธีใดจึงไม่ทำงาน
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sun Mar 02, 2014 12:00 am
by jaruek
snasui wrote:
การที่จะให้ UserForm Run ได้ต้องเขียน Code ไปเรียก UserForm มาก่อน เช่นด้านล่างครับ
ส่วนการทดสอบ UserForm ที่ผมพูดถึง ผมต้องการทราบว่าคุณ jaruek ทดสอบด้วยวิธีใดจึงไม่ทำงาน
ครับ ส่งไฟล์ใหม่มาให้ครับ สร้างปู่ม Showform มาให้แล้ว ความต้องการคื่อ ให้แสดงผลเหมือนเมื่อเรากดปุ่ม ServiceหรือOt จะบันทึกจำนวนเงินตามที่เราใส่ค่าและบันทึกตามรหัสพนักงานที่เราเลือก ใน code userform ที่ผมทำ จะผิดตรง Eservice ซึ่งเป็นค่าจำนวนเงิน มันทำงานไม่ถูกต้องคือไม่ save ค่าลงตามรหัสพนักงาน ที่เราเลือกครับ อาจาร์ย ทดสอบ กับปุ่ม Service หรือ Ot ครับ มันจะบันทึกค่าจำนวนเงินตรงตามรหัสที่เลือกครับ พอผมทำให้ Userform ไม่ได้ตามที่ต้องการเหมือนที่กดปุ่ม Service หรือ ot ครับ
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sun Mar 02, 2014 7:02 am
by snasui

ตัวอย่าง 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
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sun Mar 02, 2014 8:36 am
by jaruek
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
ขอบคุณมากครับ
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sun Mar 02, 2014 5:11 pm
by jaruek
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
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sun Mar 02, 2014 5:14 pm
by jaruek
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 ครับ
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sun Mar 02, 2014 5:19 pm
by snasui

ลองยกตัวอย่างการกรอกข้อมูลให้ติด Bug ที่บรรทัดนั้นมาด้วยครับ
Re: Vba code ใน userform ไม่ทำงาน
Posted: Sun Mar 02, 2014 8:35 pm
by jaruek
snasui wrote:
ลองยกตัวอย่างการกรอกข้อมูลให้ติด Bug ที่บรรทัดนั้นมาด้วยครับ
ผมพยายาม Capture หน้าจอ แต่ไม่ได้ครับ เลยขอพิมพ์แล้วกันครับ ตัวอย่าง ใน Userform ช่อง Code ใส่เลข 6 ช่อง Name ใส่ F ช่อง Amount ใส่ 5000 พอกดปุ่ม Save ก็จะติด Debug บรรทัดที่ผมแจ้งไว้ก่อนหน้าครับ ส่วนความต้องการก็คือ เมื่อเรากด Save ให้ช่องจำนวนเงิน 5000 บันทึกค่าลงในตารางของ Sheet1 บรรทัดที่ 9 ซึ่งเป็นบรรทัดของรหัส 6 ตามที่คีย์ใน Useform ครับ ขอบคุณครับ
Re: Vba code ใน userform ไม่ทำงาน
Posted: Mon Mar 03, 2014 8:55 am
by snasui

ผมทดสอบ 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
Re: Vba code ใน userform ไม่ทำงาน
Posted: Mon Mar 03, 2014 11:43 am
by jaruek
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
ได้แล้วครับ ขอบคุณมากๆ ครับ