Page 1 of 1

ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Fri Jun 20, 2014 3:38 pm
by nilatxay
ช่วยปับ Code VBA ไม้ให้ตาลาง Full Name และ Duration ช้ำกัน

ตาลางของ passportNo ผมตั้งCode ไม้ให้ลงช้ำกันได้แล้ว ยังตาลาง Full Name และ Duration ไม้รู้จะวางCode ไม้ให้มันที่ป้อนลงช้ำกัน

ช้วยแก้ไขให้ด้วย

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Fri Jun 20, 2014 4:02 pm
by snasui
:D Code ใดที่ปรับมาเองแล้วและยังไม่ตรงกับที่ต้องการครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Fri Jun 20, 2014 4:16 pm
by nilatxay

Code: Select all

ws.Cells(irow, 10).Value = Me.TextBox9.Value
ws.Cells(irow, 11).Value = Me.TextBox10.Value
แล้วผมเพี่ม textbox12 ต้องการให้ข้อมูลป้อนลงในirow 10
textbox13 ต้องการให้ข้อมูลป้อนลงในirow 11

ต้องการให้เป็นเหมือนกันกับ irow 9 ที่สร้าง objAll(i) แต่ผมเพี่ม textbox เพี่มขื้นอีก

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Fri Jun 20, 2014 4:26 pm
by snasui
:D การแก้ปัญหามีหลายวิธีและไม่ง่ายครับ

วิธีแรก ให้บันทึกลงไปในเซลล์ปลายทางทุกรายการแล้วค่อยไปลบรายการที่ซ้ำออกทีหลัง

วิธีที่สอง ให้ตรวจสอบรายการที่ซ้ำใน UserForm เลยแล้วแจ้งว่าซ้ำ หรือ ลบรายการที่ซ้ำทิ้งไป หรือ ให้บันทึกเฉพาะรายการที่ไม่ซ้ำเท่านั้น

ไม่ว่าวิธีใดให้เขียนมาเองก่อน ติดแล้วค่อยถามกันต่อครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Fri Jun 20, 2014 5:06 pm
by nilatxay
ขอโทดครับบางทีผมอธิบายผิด

ผมต้องการให้เป็นแบบนี้ครับ

ตาลา Date, Document No:, Customer Number:, Bill To, Address, Mobile, Email Date ป้อนลงครั้งเดียวแล้วให้ข้อมูลลงไปตาม ตาลาง Passport No., Full Name, Duration.


ตัวอย่าง

Date: 20-jun-14
Document No: iJOBs-WP-001
Customer: COMA-012
Bill to: Construction Machinery Coration
Address: 125 Minh Khai-Ha Noi
Mobile: 020 91564323
Email Date: 15/06/2014

Passport No. Full Name Duration
B8530623 MR. BUI VAN THUOC 12M
B9063287 MR. CAO DUE THE 24M




แต่เวลาป้อนลงตัวจิง Full Name:MR. BUI VAN THUOC Duration:12M ลงช้ำมาสองครั้ง


ความเป็นจริง ตาลาง Passport No, Full Name, Duration จะมีมากกว่าสองคนขื้นไปครับ

ช่วยปรับcode ให้ด้วย

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Fri Jun 20, 2014 10:46 pm
by snasui
:D ผมทดสอบแล้วจากที่แจ้งมาว่า
nilatxay wrote:แต่เวลาป้อนลงตัวจิง Full Name:MR. BUI VAN THUOC Duration:12M ลงช้ำมาสองครั้ง
ไม่พบว่ามีการบันทึก ไม่ใช่มีการบันทึก 2 ครั้งตามที่แจ้งมาครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sat Jun 21, 2014 9:20 am
by nilatxay
ภ้าผมต้องการให้ข้อมูลเวลาป้อนลงต่อกันลงมา

เวลาป้อนข้อมมูลลง Form ในตาราง Passport No., ตารางFull Name, ตารางDuration

ภ้าผมป้อนสามPassport สามFull Name และก่อ สามDuration แล้วให้ข้อมูลลงไปใน ตารางexcel
ส่วนตาราง Date, Document No:, Customer Number:, Bill To, Address, Mobile, Email Date ก่อลงไปสามครั้งพ้อมกัน ในเวลามีข้อมูล passport no full Name, duration

ช่วยด้วยครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sat Jun 21, 2014 9:54 am
by snasui
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub Save_Click()
    Dim irow As Long
    Dim ws As Worksheet
    Dim objP As Variant
    Dim objF As Variant
    Dim objD As Variant
    Dim i As Integer
    Set ws = Worksheets("tracking")
    objP = Array(Me.TextBox8, Me.TextBox11, Me.TextBox14, _
        Me.TextBox17, Me.TextBox23, Me.TextBox26)
    objF = Array(Me.TextBox9, Me.TextBox12, Me.TextBox15, _
        Me.TextBox18, Me.TextBox24, Me.TextBox27)
    objD = Array(Me.TextBox10, Me.TextBox13, Me.TextBox16, _
        Me.TextBox19, Me.TextBox25, Me.TextBox28)
        
    If Me.TextBox1.Value <> "" Then
        Me.TextBox1 = Application.Trim(Me.TextBox1.Text)
        Me.TextBox7 = Application.Trim(Me.TextBox7.Text)
        'Find first empty row in database
        irow = ws.Cells(Rows.Count, 2) _
            .End(xlUp).Offset(1, 0).Row
            
        'Copy the Data To The Databse
        For i = o To UBound(objP)
             If objP(i).Text <> "" Then
                ws.Cells(irow, 2).Value = Me.TextBox1.Value
                ws.Cells(irow, 3).Value = Me.TextBox2.Value
                ws.Cells(irow, 4).Value = Me.TextBox3.Value
                ws.Cells(irow, 5).Value = Me.TextBox4.Value
                ws.Cells(irow, 6).Value = Me.TextBox5.Value
                ws.Cells(irow, 7).Value = Me.TextBox6.Value
                ws.Cells(irow, 8).Value = Me.TextBox7.Value
                ws.Cells(irow, 9).Value = objP(i).Value
                ws.Cells(irow, 10).Value = objF(i).Value
                ws.Cells(irow, 11).Value = objD(i).Value
                irow = irow + 1
            End If
        Next i
    Else
        MsgBox "Please check Data", vbCritical
    End If
End Sub

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sat Jun 21, 2014 8:40 pm
by nilatxay
ขอบคุณครับ

ภ้า Document No(TextBox2): ผมต้องการให้มันรันตัวเลขขื้นอัตโนมัติต่อจาก iJOBs-WP- เป็น001 002 003 ให้เป็นตัวเลข ขื้นเอง ในเวลาที่สร้างฟอร์มใหม่ครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sat Jun 21, 2014 8:46 pm
by snasui
:D เขียนมาเองก่อนครับ ติดแล้วค่อยถามกันต่อ ไม่ควรถามต่อโดยไม่ได้ทดลองเขียนมาเองก่อนครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sat Jun 21, 2014 9:17 pm
by nilatxay

Code: Select all

Private Sub UserForm_Initialize()
TextBox2.Value = ("iJOBs-WP-001")
End Sub
เพี่มเตีมให้ด้วยครับ
ผมต้องการให้มันรันตัวเลขขื้นอัตโนมัติ ต่อจาก 001 002 003 ไปเลื่อยฯ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sat Jun 21, 2014 9:40 pm
by snasui
:D ให้เขียน Code ตามหลักการนี้ครับ
  1. ดึงค่าสุดท้ายในคอลัมน์ C มาให้ได้ก่อน
  2. นำค่าในข้อ 1 มาดัดเอาค่าด้านหลังมา 3 อักขระแล้วบวกด้วย 1
  3. ตัดค่าด้านหน้าทั้งหมดยกเว้น 3 อักขระสุดท้ายมาเชื่อมกับข้อ 2
  4. นำไปกำหนดค่าให้กับ TextBox2

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sat Jun 21, 2014 10:57 pm
by nilatxay
ดึงค่าสุดท้ายในคอลัมน์ C มาได้แล้วครับ

ยังเพียงแต่ กำนดเอาค่าขื้นตั้น iJOBs-WP-

Code: Select all

Private Sub UserForm_Initialize()
TextBox2.Value = Format(Application.Max(Sheets("Tracking").Range("c:c")) + 1, "000")
End Sub
ช่วยปรับให้ด้วยครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sun Jun 22, 2014 7:37 am
by snasui
nilatxay wrote:ดึงค่าสุดท้ายในคอลัมน์ C มาได้แล้วครับ

ยังเพียงแต่ กำนดเอาค่าขื้นตั้น iJOBs-WP-

Code: Select all

Private Sub UserForm_Initialize()
TextBox2.Value = Format(Application.Max(Sheets("Tracking").Range("c:c")) + 1, "000")
End Sub
ช่วยปรับให้ด้วยครับ


:D ค่าในคอลัมน์ C เป็น Text คุณจะหาค่า Max เช่นเดียวกับหาค่า Max ของตัวเลขไม่ได้ครับ

ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Private Sub UserForm_Initialize()
    Dim t As String
    TextBox1.Value = Date
    TextBox7.Value = Date
    t = Sheets("Tracking").Range("c" & Rows.Count).End(xlUp).Value
    TextBox2.Value = "iJOBs-WP-"
    TextBox2.Value = TextBox2.Value & Format(Replace(t, TextBox2.Value, "") + 1, "000")
    a = "code!B6:b20"
End Su

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sun Jun 22, 2014 8:36 pm
by nilatxay
ได้แล้วครับ

แต่ว่า ทำไปทำมา เวลาจะใช้งาน มันฟ้อง


run-time error 13:
Type mismatch

Code: Select all

Private Sub Save_Click()
    Dim irow As String
    Dim ws As Worksheet
    Dim objP As Variant
    Dim objF As Variant
    Dim objD As Variant
    Dim i As Integer
    Set ws = Worksheets("tracking")
    objP = Array(Me.TextBox8, Me.TextBox11, Me.TextBox14, _
        Me.TextBox17, Me.TextBox20, Me.TextBox23, Me.TextBox26, _
        Me.TextBox29, Me.TextBox32, Me.TextBox35, Me.TextBox38, _
        Me.TextBox41, Me.TextBox44, Me.TextBox47, Me.TextBox50, _
        Me.TextBox53, Me.TextBox56, Me.TextBox59)
    objF = Array(Me.TextBox9, Me.TextBox12, Me.TextBox15, _
        Me.TextBox18, Me.TextBox21, Me.TextBox24, Me.TextBox27, _
        Me.TextBox30, Me.TextBox33, Me.TextBox36, Me.TextBox39, _
        Me.TextBox42, Me.TextBox45, Me.TextBox48, Me.TextBox51, _
        Me.TextBox54, Me.TextBox57, Me.TextBox60)
    objD = Array(Me.TextBox10, Me.TextBox13, Me.TextBox16, _
        Me.TextBox19, Me.TextBox22, Me.TextBox25, Me.TextBox28, _
        Me.TextBox31, Me.TextBox34, Me.TextBox37, Me.TextBox40, _
        Me.TextBox43, Me.TextBox46, Me.TextBox49, Me.TextBox52, _
        Me.TextBox55, Me.TextBox58, Me.TextBox61)
        
    If Me.TextBox1.Value <> "" Then
        Me.TextBox1 = Application.Trim(Me.TextBox1.Text)
        Me.TextBox7 = Application.Trim(Me.TextBox7.Text)
        'Find first empty row in database
        irow = ws.Cells(Rows.Count, 2) _
            .End(xlUp).Offset(1, 0).Row
            
        'Copy the Data To The Databse
            For i = o To UBound(objP)
             If objP(i).Text <> "" Then
                ws.Cells(irow, 2).Value = Me.TextBox1.Value
                ws.Cells(irow, 3).Value = Me.TextBox2.Value
                ws.Cells(irow, 4).Value = Me.TextBox3.Value
                ws.Cells(irow, 5).Value = Me.TextBox4.Value
                ws.Cells(irow, 6).Value = Me.TextBox5.Value
                ws.Cells(irow, 7).Value = Me.TextBox6.Value
                ws.Cells(irow, 8).Value = Me.TextBox7.Value
                ws.Cells(irow, 9).Value = Me.TextBox62.Value
                ws.Cells(irow, 10).Value = objP(i).Value
                ws.Cells(irow, 11).Value = objF(i).Value
                ws.Cells(irow, 12).Value = objD(i).Value
                irow = irow + 1
            End If
        Next i
    Else
        MsgBox "Please check Data", vbCritical
    End If
End Sub

Private Sub Com1_Click()
Unload UserForm1
End Sub
Private Sub UserForm_Initialize()
    TextBox1.Value = Date
    TextBox7.Value = Date
    Dim t As String
    TextBox1.Value = Date
    TextBox7.Value = Date
    t = Sheets("Tracking").Range("c" & Rows.Count).End(xlUp).Value
    TextBox2.Value = "iJOBs-WP-"
    TextBox2.Value = TextBox2.Value & Format(Replace(t, TextBox2.Value, "") + 1, "000")
End Sub
ช่วยดูให้หนอยครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Sun Jun 22, 2014 8:50 pm
by snasui
:shock: Error ก็ถือเป็นปกติครับ

Code ตัวอย่างที่ผมให้ไปนั้น ในคอลัมน์ C จะต้องมีการบันทึกรายการมาก่อนแล้วอย่างน้อย 1 รายการ หากไม่เคยบันทึกรายการใดเลยคุณต้องปรับ Code สำหรับแสดง Document No: ลองปรับมาเองดูก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: ช่วยปับฟอร์มไม้ให้ข้อมูลลงช้ำกัน

Posted: Tue Jul 01, 2014 9:22 pm
by nilatxay
ได้แล้วครับ ขอบใจหลายฯฯฯครับ :thup: