Page 1 of 1

รบกวนแก้ไขเพิ่มเติมแนะนำให้หน่อยครับ ผมว่ามันซับซ้อนไป(VBA)

Posted: Tue May 01, 2018 5:01 am
by Kittinun210
อันนี้โค้ดนะครับ

Code: Select all

Private Sub CommandButton1_Click()
emptyRow = WorksheetFunction.CountA(Range("B:B")) + 1

Cells(emptyRow, 1).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value
Cells(emptyRow, 3).Value = TextBox3.Value
End Sub

Private Sub CommandButton2_Click()
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
End Sub



Private Sub UserForm_Initialize()
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
End Sub
คือผมแนบตัวอย่างไฟล์ให้ด้วยนะครับ

สิ่งที่ต้องการ

1.ผมอยากให้VBAมันรันเองตามตัวเลขสายที่บันทึกเลยได้ไหม โดยยึดเลขสายเป็นสำคัญ เช่น ผมจะบันทึกข้อมูลสาย 13 ก็ให้มันไปบันทึก

ที่สาย 13 เลย

คือปัจจุบันข้อมูลที่บันทึก มันไม่ได้มาเรียงกัน เช่นลำดับสาย 4 อาจจะมาก่อน ลำดับสาย 1 แต่ตามโค้ดที่เขียน มันบันทึกเรียงต่อกันลงมา

แต่เวลานำเสนอจริงๆ มันไม่สวย เลยต้องมาซ้อนVlookupเรียงกันใหม่

2.อยากได้โค้ดเพิ่ม เมื่อมีการลงข้อมูลซ้ำ โดยอยากให้ขึ้นเตือนว่า "ข้อมูลซ้ำ ต้องการบันทึกแทนที่หรือไม่" หากตอบใช่ ก็ให้บันทึกแทนข้อมูลเดิมไปเลย

Re: รบกวนแก้ไขเพิ่มเติมแนะนำให้หน่อยครับ ผมว่ามันซับซ้อนไป(VBA)

Posted: Tue May 01, 2018 7:49 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub CommandButton1_Click()
    If Application.CountIf(Range("a:a"), TextBox1.Text) > 0 Then
        emptyRow = Application.Match(CLng(TextBox1.Text), Range("a:a"), 0)
    Else
        emptyRow = WorksheetFunction.CountA(Range("a:a")) + 1
    End If
    Cells(emptyRow, 1).Value = TextBox1.Value
    Cells(emptyRow, 2).Value = TextBox2.Value
    Cells(emptyRow, 3).Value = TextBox3.Value
End Sub

Re: รบกวนแก้ไขเพิ่มเติมแนะนำให้หน่อยครับ ผมว่ามันซับซ้อนไป(VBA)

Posted: Tue May 01, 2018 8:33 pm
by Kittinun210
ขอบคุณมากครับอาจารย์ จะนำไปปรับใช้ครับ