Page 1 of 2

มีปัญหาด้านประมวลผล

Posted: Mon Feb 27, 2012 10:43 am
by yodpao.b
" มีปัญหาด้านประมวลผล "
ปัญหา ประมวลช้า
ผมได้ทดลองหลายแบบแล้วพบสาเหตุที่ประมวลผลช้าเพราะมี VLOOKUP เข้ามาเกียว
แต่เมื่อ Copy ที่เป็น VLOOKUP แล้ว วางแบบค่า ปัญหาที่พบหายไป

:!: แต่เนื่องจากต้องการใช้ VLOOKUP ในการแสดงที่ฐานข้อมูล
:?: คำถาม จะทำอย่างไรให้ประมวลผลเร็วขึ้น

แสดงขั้นตอนการทำงาน
1.ไปที่หน้า "FormPrint" คลิกที่ช่อง Range("V15")
2.ฟอร์มจะขึ้นมาให้เห็น
3.คลิกที่ปุ่ม "จัดเก็บข้อมูล"
จบขั้นตอน จะเห็นว่าเครื่องทำงานประมวลช้ามาก
แต่ถ้า VLOOKUP ที่อยู่ในหน้า "DataReimbursement" วางแบบค่า ก็จะเป็นปกติ

ทั้งนี้ได้แนบไฟล์มาให้อาจาร์ยดูครับ

Re: มีปัญหาด้านประมวลผล

Posted: Mon Feb 27, 2012 11:32 am
by prawitj
vlookup ทำให้ Excel คำนวณช้าอยู่แล้วครับ เพราะมองทั้ง ทางกว้าง ทางลึก ลองใช้ index กับ match ดูครับ จะเร็วขึ้นเพราะมองทางลึกอย่างเดียว

Re: มีปัญหาด้านประมวลผล

Posted: Mon Feb 27, 2012 11:51 am
by bank9597
:D ลองสูตรนี้แทนดูน่ะครับ ว่าจะดีขึ้นไหม

ที่ชีท DataReimbursement
เซลล์ I11 คีย์ =IF(C11="","",INDEX(DataEachUse!$H$11:$H$1000,MATCH(C11,DataEachUse!$C$11:$C$1000,0))) คัดลอกลงมา
เซลล์ T11 คีย์ =IF(C11="","",INDEX(DataEachUse!$I$11:$I$1000,MATCH(C11,DataEachUse!$C$11:$C$1000,0))) คัดลอกลงมา
เซลล์ U11 คีย์ =IF(C11="","",INDEX(DataEachUse!$J$11:$J$1000,MATCH(C11,DataEachUse!$C$11:$C$1000,0))) คัดลอกลงมา
เซลล์ V11 คีย์ =IF(C11="","",INDEX(DataEachUse!$L$11:$L$1000,MATCH(C11,DataEachUse!$C$11:$C$1000,0))) คัดลอกลงมา
เซลล์ W11 คีย์ =IF(C11="","",INDEX(DataEachUse!$M$11:$M$1000,MATCH(C11,DataEachUse!$C$11:$C$1000,0))) คัดลอกลงมา

หรือจะให้สะดวกขึ้นมาหน่อย ก็กำหนด Range Name ก่อนครับ เพื่อให้ดึงข้อมูลตามจริง ไม่ต้องกำหนดในสูตรเผื่อไป ทำให้ช้านั่นเอง
ตามไฟล์แนบครับ

Re: มีปัญหาด้านประมวลผล

Posted: Mon Feb 27, 2012 12:10 pm
by yodpao.b
ได้แล้วครับ เร็วขึ้นทันตาเห็นเลยครับ
ขอบคุณมากครับ
จุดนี้ใช้เวลาเกือบ 1 อาทิตย์ กว่าจะรู้ว่าปัญหามันเกิดตรงไหน หาวิธ๊แก้ไขก็ไม่ได้ เลยตัดสินใจโพสต์ถาม
ขอบคุณครับ

Re: มีปัญหาด้านประมวลผล

Posted: Thu Mar 22, 2012 2:10 pm
by yodpao.b
เรียนอาจาร์ยครับผมลองทดลองการใช้ INDEX ก็ยังรู้สึกว่าทำงานช้าไม่ทันใจ
แต่ถ้าไม่ใช้สูตรก็จะทำงานเร็วมาก

คำถาม มีวิธีการอะไรบ้างให้ประมวลผลเร็วครับ

Re: มีปัญหาด้านประมวลผล

Posted: Thu Mar 22, 2012 3:00 pm
by snasui
:lol: กรณีใช้สูตรจำนวนมากย่อมที่จะคำนวณช้าอยู่แล้วครับ ในงานเดียวกันหากต้องการให้คำนวณเร็วมีปัจจัยเข้ามาเกี่ยวข้องทั้ง Software และ Hardware

เช่น ด้าน Software ใช้ Excel 2010 ทำงานเร็วกว่า 2007 และ 2007 ทำงานเร็วกว่า 2003
ใช้ Windows 64Bits จะสามารถใช้ทรัพยากรของเครื่องได้ดีกว่า Windows 32Bits

ด้าน Hardware มี CPU ความเร็วสูง มี Ram ให้ใช้เยอะ คำนวณเร็วกว่า CPU ความเร็วต่ำ และ Ram น้อย

Re: มีปัญหาด้านประมวลผล

Posted: Thu Mar 22, 2012 3:20 pm
by yodpao.b
ผมขอลองใช้แบบนี้ไปก่อนนะครับ
ผมก็เลยจะไม่ใช้สูตร
ที่นี้ก็มีปัญหาในการเก็บข้อมูล
ขั้นตอนการทำงานดังนี้
1.เรียกฟอร์ม ดังรูป
Untitled0.gif
2.แก้ไขตรงช่อง สถานที่ติดตั้ง เป็นอะไรก็ได้
Untitled1.gif
3.คลิก " จัดเก็บข้อมูล "
โปรแกรมจะทำการ Update ข้อมูลลงใน Sheet "DataEachUset"และ Sheet "DataReimbursement"
โดยใช้ ตัวแปรรหัส1 เป็นตัวอ้างอิง เทียบกับ TextBox10
ดังโคดด้านล่างนี้ (โคดนี้ใช้ Update ข้อมูลลงใน Sheet "DataEachUset" เท่านั้น

Code: Select all

Private Sub CommandButton6_Click()
       If TextBox21.Text <> "" And TextBox22.Text <> "" And TextBox23.Text <> "" And TextBox24.Text <> "" And TextBox31.Text <> "" _
            And TextBox32.Text <> "" And TextBox33.Text <> "" And TextBox34.Text <> "" And TextBox35.Text <> "" Then
                If MsgBox("     ท่านต้องการ  ปรับปรุงข้อมูล ไว้ในฐานข้อมูลนี้ใช่หรือไม่ ?    ", vbYesNo + vbQuestion, "การจัดเก็บข้อมูลนี้ มิใช่ เป็นการ Save โปรแกรม") = vbYes Then
                            Sheets("DataEachUse").Select
                            Range("C11").Select
                                 Do While True
                                        If ActiveCell.Value = TextBox10.Text Then
                                                ActiveCell.Offset(0, 6).Value = TextBox21.Text
                                                ActiveCell.Offset(0, 7).Value = TextBox22.Text
                                                ActiveCell.Offset(0, 8).Value = TextBox23.Text
                                                ActiveCell.Offset(0, 5).Value = DateSerial(Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
                                                ActiveCell.Offset(0, 9).Value = TextBox31.Text
                                                ActiveCell.Offset(0, 10).Value = TextBox32.Text
                                                ActiveCell.Offset(0, 11).Value = TextBox33.Text
                                                ActiveCell.Offset(0, 12).Value = TextBox34.Text
                                                ActiveCell.Offset(0, 13).Value = TextBox35.Text
                                                Unload Me
                                                MsgBox "ได้ทำการปรับปรุง Record ID  " & Sheets("CalPrint").Range("B5") & "  นี้เรียบร้อยแล้ว"
                                                Exit Sub
                                        End If
                                        ActiveCell.Offset(1, 0).Select
                                 Loop
                        End If
                    Else	
                                        MsgBox "                   ท่านต้องใส่ข้อมูลให้ครบทุกช่องถ้าไม่มีข้อมูลให้ใช้สัญลักษณ์" & " ( - ) " & "หรือแบบอื่นก็ได้                   ", vbExclamation, "    โปรแกรมการเบิกจ่ายหลอด T5 "	
                End If	
End Sub	
ส่วนการ Update ข้อมูลลงใน Sheet "DataReimbursement" ยังไม่ได้ทำ เนื่องจากติดปัญหาดังนี้
ยกตัวอย่างที่ GP-2554-00080 ซ้ำกันถึง 3 บรรทัด ต้องการ Update ทั้ง 3 บรรทัด

อยากให้อาจาร์ยกรุณาเขียนโคดให้ด้วยครับ

จุดประสงค์คือ ต้องการ อัพเดททั้ง 2 หน้า บรรทัดที่ใช้รหัส GP-2554-00080

ขอบคุณมากครับ
พร้อมกันนี้ได้แนบไฟล์มาด้วยครับ

Re: มีปัญหาด้านประมวลผล

Posted: Thu Mar 22, 2012 6:06 pm
by snasui
yodpao.b wrote:ส่วนการ Update ข้อมูลลงใน Sheet "DataReimbursement" ยังไม่ได้ทำ เนื่องจากติดปัญหาดังนี้
ยกตัวอย่างที่ GP-2554-00080 ซ้ำกันถึง 3 บรรทัด ต้องการ Update ทั้ง 3 บรรทัด

อยากให้อาจาร์ยกรุณาเขียนโคดให้ด้วยครับ

จุดประสงค์คือ ต้องการ อัพเดททั้ง 2 หน้า บรรทัดที่ใช้รหัส GP-2554-00080

ขอบคุณมากครับ
พร้อมกันนี้ได้แนบไฟล์มาด้วยครับ
ลองเขียนมาก่อนครับ เขียนแล้วติดตรงไหนก็ค่อยมาดูกันต่อครับ :P

Re: มีปัญหาด้านประมวลผล

Posted: Fri Mar 23, 2012 11:50 am
by yodpao.b

Code: Select all

Private Sub CommandButton6_Click()
                            Sheets("DataEachUse").Select
                            Range("C11").Select
                                 Do While True
                                        If ActiveCell.Value = TextBox10.Text Then
                                                ActiveCell.Offset(0, 6).Value = TextBox21.Text
                                                ActiveCell.Offset(0, 7).Value = TextBox22.Text
                                                ActiveCell.Offset(0, 8).Value = TextBox23.Text
                                                ActiveCell.Offset(0, 5).Value = DateSerial(Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
                                                ActiveCell.Offset(0, 9).Value = TextBox31.Text
                                                ActiveCell.Offset(0, 10).Value = TextBox32.Text
                                                ActiveCell.Offset(0, 11).Value = TextBox33.Text
                                                ActiveCell.Offset(0, 12).Value = TextBox34.Text
                                                ActiveCell.Offset(0, 13).Value = TextBox35.Text
                                                'Unload Me
                                                'MsgBox "ä´é·Ó¡ÒûÃѺ»Ãا Record ID  " & Sheets("CalPrint").Range("B5") & "  ¹ÕéàÃÕºÃéÍÂáÅéÇ"
                                                Exit Sub
                                        End If
                                        ActiveCell.Offset(1, 0).Select
                                 Loop
                                 
                            Sheets("DataReimbursement").Select
                            Range("C11").Select
                                 Do While True
                                        If ActiveCell.Value = TextBox10.Text Then
                                                ActiveCell.Offset(0, 17).Value = TextBox21.Text
                                                ActiveCell.Offset(0, 18).Value = TextBox22.Text
                                                ActiveCell.Offset(0, 6).Value = DateSerial(Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
                                                ActiveCell.Offset(0, 19).Value = TextBox31.Text
                                                ActiveCell.Offset(0, 20).Value = TextBox32.Text
                                                Unload Me
                                                MsgBox "ä´é·Ó¡ÒûÃѺ»Ãا Record ID  " & Sheets("CalPrint").Range("B5") & "  ¹ÕéàÃÕºÃéÍÂáÅéÇ"
                                                Exit Sub
                                        End If
                                        ActiveCell.Offset(1, 0).Select
                                 Loop
                        
End Sub
โดด ด้านบนได้ทดลองทำแต่ดูเหมือนว่ามันจะสั่งทำงานแค่นี้ครับ
Sheets("DataEachUse").Select
Range("C11").Select
Do While True
If ActiveCell.Value = TextBox10.Text Then
ActiveCell.Offset(0, 6).Value = TextBox21.Text
ActiveCell.Offset(0, 7).Value = TextBox22.Text
ActiveCell.Offset(0, 8).Value = TextBox23.Text
ActiveCell.Offset(0, 5).Value = DateSerial(Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
ActiveCell.Offset(0, 9).Value = TextBox31.Text
ActiveCell.Offset(0, 10).Value = TextBox32.Text
ActiveCell.Offset(0, 11).Value = TextBox33.Text
ActiveCell.Offset(0, 12).Value = TextBox34.Text
ActiveCell.Offset(0, 13).Value = TextBox35.Text
'Unload Me
'MsgBox "ä´é·Ó¡ÒûÃѺ»Ãا Record ID " & Sheets("CalPrint").Range("B5") & " ¹ÕéàÃÕºÃéÍÂáÅéÇ"
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
ไม่รู้ว่าจะสั่งให้ทำงานไป update อีกหน้าได้อย่างไรครับ

Re: มีปัญหาด้านประมวลผล

Posted: Fri Mar 23, 2012 1:11 pm
by tupthai
ถ้าผมเข้าใจถูกนะครับ :D
ผมลองเพิ่ม code

Code: Select all

Sheets("CalPrint").Select
Range("B11:X" & Cells(Rows.Count, 2).End(xlUp).Row).Copy Sheets("DataReimbursement").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0)
ไว้ในนี้

Code: Select all

Private Sub CommandButton6_Click()
       If TextBox21.Text <> "" And TextBox22.Text <> "" And TextBox23.Text <> "" And TextBox24.Text <> "" And TextBox31.Text <> "" _
            And TextBox32.Text <> "" And TextBox33.Text <> "" And TextBox34.Text <> "" And TextBox35.Text <> "" Then
                If MsgBox("     ·èÒ¹µéͧ¡Òà  »ÃѺ»Ãا¢éÍÁÙÅ äÇéã¹°Ò¹¢éÍÁÙŹÕéãªèËÃ×ÍäÁè ?    ", vbYesNo + vbQuestion, "¡ÒèѴà¡çº¢éÍÁÙŹÕé ÁÔãªè à»ç¹¡Òà Save â»Ãá¡ÃÁ") = vbYes Then
                            Sheets("DataEachUse").Select
                            Range("C11").Select
                                 Do While True
                                        If ActiveCell.Value = TextBox10.Text Then
                                                ActiveCell.Offset(0, 6).Value = TextBox21.Text
                                                ActiveCell.Offset(0, 7).Value = TextBox22.Text
                                                ActiveCell.Offset(0, 8).Value = TextBox23.Text
                                                ActiveCell.Offset(0, 5).Value = DateSerial(Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
                                                ActiveCell.Offset(0, 9).Value = TextBox31.Text
                                                ActiveCell.Offset(0, 10).Value = TextBox32.Text
                                                ActiveCell.Offset(0, 11).Value = TextBox33.Text
                                                ActiveCell.Offset(0, 12).Value = TextBox34.Text
                                                ActiveCell.Offset(0, 13).Value = TextBox35.Text
                                                Unload Me
                                                
                                               Sheets("CalPrint").Select
                                               
                                                Range("B11:X" & Cells(Rows.Count, 2).End(xlUp).Row).Copy Sheets("DataReimbursement").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0)
                                                MsgBox "ä´é·Ó¡ÒûÃѺ»Ãا Record ID  " & Sheets("CalPrint").Range("B5") & "  ¹ÕéàÃÕºÃéÍÂáÅéÇ"
                                                Exit Sub
                                        End If
                                        ActiveCell.Offset(1, 0).Select
                                 Loop
                        End If
                    Else
                                        MsgBox "                   ·èÒ¹µéͧãÊè¢éÍÁÙÅãËé¤Ãº·Ø¡ªèͧ¶éÒäÁèÁÕ¢éÍÁÙÅãËéãªéÊÑ­Åѡɳì" & " ( - ) " & "ËÃ×ÍẺÍ×蹡çä´é                   ", vbExclamation, "    â»Ãá¡ÃÁ¡ÒÃàºÔ¡¨èÒÂËÅÍ´ T5 "
                End If
End Sub

Re: มีปัญหาด้านประมวลผล

Posted: Fri Mar 23, 2012 1:48 pm
by bank9597
เรียนอาจาร์ยครับผมลองทดลองการใช้ INDEX ก็ยังรู้สึกว่าทำงานช้าไม่ทันใจ
แต่ถ้าไม่ใช้สูตรก็จะทำงานเร็วมาก

คำถาม มีวิธีการอะไรบ้างให้ประมวลผลเร็วครับ
:D สามารถใช้ VBA แทนได้ครับ

Re: มีปัญหาด้านประมวลผล

Posted: Fri Mar 23, 2012 2:17 pm
by snasui
bank9597 wrote:
เรียนอาจาร์ยครับผมลองทดลองการใช้ INDEX ก็ยังรู้สึกว่าทำงานช้าไม่ทันใจ
แต่ถ้าไม่ใช้สูตรก็จะทำงานเร็วมาก

คำถาม มีวิธีการอะไรบ้างให้ประมวลผลเร็วครับ
:D สามารถใช้ VBA แทนได้ครับ
กรณีเงื่อนไขเหมือนกัน พื้นที่การทำงานเท่ากัน การใช้ VBA มักจะไม่เร็วกว่าการใช้ฟังก์ชั่นครับ :mrgreen:

Re: มีปัญหาด้านประมวลผล

Posted: Fri Mar 23, 2012 2:21 pm
by bank9597
กรณีเงื่อนไขเหมือนกัน พื้นที่การทำงานเท่ากัน การใช้ VBA มักจะไม่เร็วกว่าการใช้ฟังก์ชั่นครับ
:tt: :tt: :tt: ขอบคุณมากครับ :tt: :tt: :tt:

Re: มีปัญหาด้านประมวลผล

Posted: Fri Mar 23, 2012 2:39 pm
by yodpao.b

Code: Select all

Sheets("CalPrint").Select
Range("B11:X" & Cells(Rows.Count, 2).End(xlUp).Row).Copy Sheets("DataReimbursement").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0)
ได้ทดลองทำแล้ว ผลที่ได้ข้อมูลไปใส่บรรทัดใหม่

ความต้องการคือนำข้อมูลไปใส่บรรทัดเดิมครับผม

นำข้อมูลหน้า CalPrint ไปใส่ที่หน้า DataReimbursement อย่างที่อาจาร์ยเข้าใจก็ได้ครับ
จะได้รูปแบบใหม่ในการ Update ข้อมูล

แต่ถ้าไม่ได้ก็ให้Updateจากในฟอร์มก็ได้ครับ

Re: มีปัญหาด้านประมวลผล

Posted: Fri Mar 23, 2012 5:19 pm
by tupthai

Code: Select all

With Worksheets(2).Range("c11:c" & Cells(Rows.Count, 3).End(xlUp).Row)
    Set c = .Find(TextBox10.Text, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Offset(0, 1).Value = "---test----"
            c.Offset(0, 2).Value = TextBox22.Text
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
2 บรรทัดนี่ตัวอย่าง
c.Offset(0, 1).Value = "---test----"
c.Offset(0, 2).Value = TextBox22.Text
:D

Re: มีปัญหาด้านประมวลผล

Posted: Sat Mar 24, 2012 10:05 am
by snasui
:D กรณีต้องการ Update ให้ครบทุกรายการก็ควรจะ Loop ให้จบก่อนที่จะ Exit do, Exit For, Exit Sub หรือ Unload Me ยกเว้นต้องการ Update แค่รายการเดียว

ลองปรับ Code เป็นตามด้านล่างแล้วทดสอบดูครับ

Code: Select all

Private Sub CommandButton6_Click()
    Sheets("DataEachUse").Select
    Range("C11").Select
         Do While ActiveCell <> ""
            If ActiveCell.Value = TextBox10.Text Then
                ActiveCell.Offset(0, 6).Value = TextBox21.Text
                ActiveCell.Offset(0, 7).Value = TextBox22.Text
                ActiveCell.Offset(0, 8).Value = TextBox23.Text
                ActiveCell.Offset(0, 5).Value = DateSerial( _
                    Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
                ActiveCell.Offset(0, 9).Value = TextBox31.Text
                ActiveCell.Offset(0, 10).Value = TextBox32.Text
                ActiveCell.Offset(0, 11).Value = TextBox33.Text
                ActiveCell.Offset(0, 12).Value = TextBox34.Text
                ActiveCell.Offset(0, 13).Value = TextBox35.Text
'                Unload Me
'                MsgBox "ได้ทำการปรับปรุง Record ID  " & Sheets("CalPrint").Range("B5") & "  นี้เรียบร้อยแล้ว"
'                    Exit Sub
            End If
            ActiveCell.Offset(1, 0).Select
         Loop
         
    Sheets("DataReimbursement").Select
    Range("C11").Select
         Do While ActiveCell <> ""
            If ActiveCell.Value = TextBox10.Text Then
                ActiveCell.Offset(0, 17).Value = TextBox21.Text
                ActiveCell.Offset(0, 18).Value = TextBox22.Text
                ActiveCell.Offset(0, 6).Value = DateSerial( _
                    Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
                ActiveCell.Offset(0, 19).Value = TextBox31.Text
                ActiveCell.Offset(0, 20).Value = TextBox32.Text
'                Unload Me
'                MsgBox "ได้ทำการปรับปรุง Record ID  " & Sheets("CalPrint").Range("B5") & "  นี้เรียบร้อยแล้ว"
'                Exit Sub
            End If
            ActiveCell.Offset(1, 0).Select
         Loop
    MsgBox "ได้ทำการปรับปรุง Record ID  " & Sheets("CalPrint").Range("B5") & "  นี้เรียบร้อยแล้ว"
    Unload Me
End Sub
กรณีการเยื้องในบรรทัดที่เป็น Code ย่อยของ Code หลักให้กดแป้น Tab ไปสักครั้งก็พอครับ จะทำให้อ่าน Code ได้สะดวก

กรณีที่มีการเว้นวรรคจำนวนมากเพื่อความสวยงาม สามารถใช้ฟังก์ชั่น Space เข้ามาช่วยแทนการเคาะวรรคจำนวนมาก เช่น

Code: Select all

MsgBox Space(20) & "Please try again."
เทียบเท่ากับเคาะ Space bar ไป 20 ครั้งก่อนประโยค Please try again.

นอกจากนี้การตัดข้อความขึ้นบรรทัดใหม่ด้วยการเคาะ Space bar 1 ครั้งแล้วตามด้วยเครื่องหมาย _ จะทำให้ Code ไม่ล้นหน้า สะดวกต่อการอ่านครับ

Re: มีปัญหาด้านประมวลผล

Posted: Sun Mar 25, 2012 11:21 pm
by tupthai
เห็นบอกว่าต้องการเรื่องความเร็ว
ผมจึงใช้ codeนี้ update ชีท DataReimbursement ที่ข้อมูล 30000 row ใช้เวลาไม่เกิน2วินาที
เพราะ Find หรือ ใช้ Ctrl+F ใช้หาข้อมูลได้รวดเร็วอยู่แล้ว
แต่ถ้าข้อมูลไม่มากก็ใช้แบบเดิมก็ได้ครับ

ลองใช้ดูครับ

ที่มา..http://msdn.microsoft.com/en-us/library ... 11%29.aspx

Code: Select all

Private Sub CommandButton6_Click()
 Sheets("DataReimbursement").Select
 With Range("c11:c" & Cells(Rows.Count, 3).End(xlUp).Row)
    Set c = .Find(TextBox10.Text, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Offset(0, 17).Value = TextBox21.Text
            c.Offset(0, 18).Value = TextBox22.Text
            c.Offset(0, 6).Value = DateSerial(Year(CDate(TextBox24)), Month(CDate(TextBox24)), Day(CDate(TextBox24)))
            c.Offset(0, 19).Value = TextBox31.Text
            c.Offset(0, 20).Value = TextBox32.Text
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
Unload Me

End Sub

Re: มีปัญหาด้านประมวลผล

Posted: Mon Mar 26, 2012 12:17 pm
by yodpao.b
ขอบคุณมากครับใช้ได้ดีทั้ง 2 ตัวอย่างเลย

Re: มีปัญหาด้านประมวลผล

Posted: Thu Mar 29, 2012 10:18 am
by yodpao.b
กรณีที่มีการเว้นวรรคจำนวนมากเพื่อความสวยงาม สามารถใช้ฟังก์ชั่น Space เข้ามาช่วยแทนการเคาะวรรคจำนวนมาก

คำถาม ฟังก์ชั่น Space คืออะไร กดตรงไหน

Re: มีปัญหาด้านประมวลผล

Posted: Thu Mar 29, 2012 10:30 am
by snasui
:shock:
yodpao.b wrote:กรณีที่มีการเว้นวรรคจำนวนมากเพื่อความสวยงาม สามารถใช้ฟังก์ชั่น Space เข้ามาช่วยแทนการเคาะวรรคจำนวนมาก

คำถาม ฟังก์ชั่น Space คืออะไร กดตรงไหน
ผมเขียนอธิบายไว้เรียบร้อยแล้ว
snasui wrote:กรณีที่มีการเว้นวรรคจำนวนมากเพื่อความสวยงาม สามารถใช้ฟังก์ชั่น Space เข้ามาช่วยแทนการเคาะวรรคจำนวนมาก เช่น
โค้ด: เลือกทั้งหมด
MsgBox Space(20) & "Please try again."

เทียบเท่ากับเคาะ Space bar ไป 20 ครั้งก่อนประโยค Please try again.
:roll: ลองอ่านทบทวนอีกครั้งครับ