Page 3 of 3

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Thu Oct 06, 2011 6:55 pm
by snasui
:D ลองทำมาดูก่อนครับ แล้วส่งไฟล์นั้นมาให้เพื่อน ๆ ช่วยกันดูหากว่าทำแล้วยังไม่ได้ตามต้องการครับ

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Fri Oct 07, 2011 8:33 am
by suka
อาจารย์คะ
ทำได้ใช้งานได้แล้วค่ะ ก่อนหน้านี้ไม่ได้เพราะวาง Code ไม่ครบค่ะ
ขอบคุณมากค่ะ

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Fri Nov 25, 2011 7:17 pm
by suka
อาจารย์คะ ขอรบกวนเรื่องปรับ Code เซลล์ B3 ของชีท Form เมือกดปุ่มบันทึกต้องการให้ Copy ไปต่อท้ายข้อมูลที่เซลล์ A2 ของชีท Paid ค่ะ
Code ด้านล่างนี้อยู่ Module1 ชื่อ PasteData Codeนี้ Copy ไปจุดอื่นๆได้ตามต้องการแล้ว แต่จะถูกหลักการเขียนโค๊ดหรือไม่อย่างไร ขอรบกวนอาจารย์ด้วยนะคะ

Code: Select all

Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
Set rSource = Worksheets("Form").Range("A2:J2")
Set rTarget = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Set rSource = Worksheets("Form").Range("B2:C2")
    Set rTarget = Worksheets("Paid").Range("B" & Rows.Count).End(xlUp) _
    .Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
    Set rSource = Worksheets("Form").Range("F2")
    Set rTarget = Worksheets("Paid").Range("D" & Rows.Count).End(xlUp) _
        .Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
    Set rSource = Worksheets("Form").Range("H2")
    Set rTarget = Worksheets("Paid").Range("E" & Rows.Count).End(xlUp) _
        .Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Sheets("Form").Range("C2,F2,H2:J2").ClearContents
    With Worksheets("Form")
        .Range("B2") = .Range("B2") + 1
    End With
    Application.ScreenUpdating = True
    With Worksheets("Form")
        .Range("B3") = .Range("B3") + 1
    End With
    Application.ScreenUpdating = True
End Sub

ขอบคุณค่ะ

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Fri Nov 25, 2011 8:02 pm
by snasui
:D ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub PasteData()
    Application.ScreenUpdating = False
    Sheets("Form").Range("A2:J2").Copy
    Sheets("Database").Range("A65536").End(xlUp).Offset(1, 0) _
        .PasteSpecial xlPasteValues
    Sheets("Form").Range("B2:C2").Copy
    Sheets("Paid").Range("B" & Rows.Count).End(xlUp) _
        .Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("Form").Range("F2").Copy
    Sheets("Paid").Range("D" & Rows.Count).End(xlUp) _
        .Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("Form").Range("H2").Copy
    Sheets("Paid").Range("E" & Rows.Count).End(xlUp) _
        .Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("Form").Range("C2,F2,H2:J2").ClearContents
    With Sheets("Form")
        .Range("B2") = .Range("B2") + 1
        .Range("B3") = .Range("B3") + 1
    End With
    Sheets("Paid").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = _
        Sheets("Form").Range("B3")
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Fri Nov 25, 2011 8:37 pm
by bank9597
:D น่าจะสร้างชีท Temp จัดระเบียบข้อมูลก่อน จะได้ง่ายในการส้รางโค๊ด :D

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Sat Nov 26, 2011 12:25 pm
by suka
อาจารย์คะ Copy ได้ตรงตามต้องการแล้วค่ะ
ขอบพระคุณมากๆค่ะ
bank9597 wrote::D น่าจะสร้างชีท Temp จัดระเบียบข้อมูลก่อน จะได้ง่ายในการส้รางโค๊ด :D
ขอบคุณค่ะ

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Sat Nov 26, 2011 12:45 pm
by bank9597
:D น่าจะลองสร้างชีท Temp มาเพิ่มน่ะครับ เพื่อจัดระเบียบข้อมูล ทำให้แก้โค๊ดได้ง่ายและส้นกว่า

ลองดูที่ไฟล์แนบน่ะครับ

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Tue Nov 29, 2011 4:39 pm
by suka
มีข้อสงสัยเรื่องทำ Template ค่ะ
หากจำไม่ผิดเคยอ่านโพสต์ของอาจารย์ ไฟล์ที่ใช้ VBA ควรทำชีท Template เพื่อจัดข้อมูลให้เป็นระเบียบ
เพราะการใช้ VBA อาจมีการ Copy ข้อมูลไปไว้หลายที่ หรือจะไม่มีชีท Template ก็ได้ ประมาณนี้ค่ะ
(หรือหากจำผิดต้องขออภัยอาจารย์ค่ะ พยายามจะหาอ่านทวนก็จำไม่ได้อ่านจากกระทู้ไหนค่ะ)
ดังนั้นตัวอย่างไฟล์ของกระทู้นี้จึงขอลองทำแบบไม่มีชีท Template ค่ะ
bank9597 wrote::D น่าจะลองสร้างชีท Temp มาเพิ่มน่ะครับ เพื่อจัดระเบียบข้อมูล ทำให้แก้โค๊ดได้ง่ายและส้นกว่า

ลองดูที่ไฟล์แนบน่ะครับ
ต้องขอขอบคุณ คุณ bank9597 ค่ะ

ขอสงสัยคือหากทำชีท Template ควรทำ 1 Template ต่อ 1 ฐานข้อมูล หรือสามารถใช้ 1 Template ต่อ หลายฐานข้อมูล
ลองส่งไฟล์ต้วอย่างการทำชีท Template 2 แบบมาให้อาจารย์ช่วยแนะนำการออกแบบชีท Template ที่ดีควรจะเป็นแบบใดค่ะ
Code นี้ของชีท Template

Code: Select all

Sub PasteData()
    Application.ScreenUpdating = False
    Sheets("Template").Range("B2:K2").Copy
    Sheets("Database").Range("A65536").End(xlUp).Offset(1, 0) _
        .PasteSpecial xlPasteValues
    Sheets("Template").Range("C2:D2").Copy
    Sheets("Paid").Range("B" & Rows.Count).End(xlUp) _
        .Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("Template").Range("G2").Copy
    Sheets("Paid").Range("D" & Rows.Count).End(xlUp) _
        .Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("Template").Range("I2").Copy
    Sheets("Paid").Range("E" & Rows.Count).End(xlUp) _
        .Offset(1, 0).PasteSpecial xlPasteValues
    Sheets("Form").Range("C2,F2,H2:J2").ClearContents
    With Sheets("Form")
        .Range("B2") = .Range("B2") + 1
        .Range("B3") = .Range("B3") + 1
    End With
    Sheets("Paid").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = _
        Sheets("Form").Range("B3")
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
Code นี้ของชีท Sheet2 แนบมากับไฟล์ตัวอย่างค่ะ

Code: Select all

Sub PasteData()
    Application.ScreenUpdating = False
    Sheets("Sheet2").Range("A2:J2").Copy
    Sheets("Database").Range("A65536").End(xlUp).Offset(1, 0) _
        .PasteSpecial xlPasteValues
    Sheets("Sheet2").Range("K2:O2").Copy
    Sheets("Paid").Range("A65536").End(xlUp).Offset(1, 0) _
        .PasteSpecial xlPasteValues
    Sheets("Form").Range("C2,F2,H2:J2").ClearContents
    With Sheets("Form")
         .Range("B2") = .Range("B2") + 1
        .Range("B3") = .Range("B3") + 1
    End With
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

Re: เซลล์ที่มีสูตรจะจัดการรูปแบบตามเงื่อนไขได้อย่างไรคะ

Posted: Tue Nov 29, 2011 5:26 pm
by bank9597
:D วิธีการของผมคือ จะบันทึกข้อมูลไปกี่ที่ ผมก็จะทำชีท Temp เท่านั้น ครับ จัดรูปแบบข้อมูลให้พร้อมที่จะบันทึกในแต่ล่ะชีทไปครับ

:D แต่หากขอคำปรึกษาจากอาจารย์ น่าจะมีวิธีที่รวบยอดมากกว่าของผมครับ :D