Page 1 of 1

สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Wed Dec 25, 2013 12:10 pm
by brakubra
รบกวนอาจารย์ทุกท่าน

ผมอยากจะทำการแก้ไขข้อมูลข้าม Sheet จากไฟล์ตัวอย่างในSheet Input ที่
Repair Record.xlsm
แก้ไขข้อมูลเครื่อง ผมต้องการแก้ไข Computermodel ตามที่ต้องการและกดปุ่ม แก้ไขข้อมูล computermodel ที่ผมได้พิมพ์ลงไปก็จะไปบันทึกว่าที่ Sheet 1 คอลัม D ครับ

ตัวอย่าง ผมต้องการแก้ไขCOMPUTER MODEL ของเครื่อง LOCATION คือ FINANCE และ POSITION คือ FINANCE CONTROLLER และแก้ไข madel computer เครื่องเก่าจะเป็น SVOA INSPIRE INS-760XXX-601 ให้เป็น MAC Probook โดยการกดปุ่ม แก้ไขข้อมูล ครับ

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Wed Dec 25, 2013 7:27 pm
by snasui
:D Code ที่เขียนมาแล้วอยู่ที่ Module ไหน ชื่อว่าอะไร ติดขัดบรรทัดใดครับ

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Mon Dec 30, 2013 3:28 pm
by brakubra
snasui wrote::D Code ที่เขียนมาแล้วอยู่ที่ Module ไหน ชื่อว่าอะไร ติดขัดบรรทัดใดครับ
เรียนอาจารย์ snasui

ผมยังไม่ได้เขียนโค็ดเลยครับ โค้ดที่เป็นการบันทึกผมก็ไปก็อบเขามาครับ

อาจารย์มีเว็ปหรือโค้ดอะไรแนะนำในการบันทึกข้อมูลแบบที่ค้นหาข้อมูลที่มีอยู่แล้ว แล้วก็บันทึกทับลงไปเลยครับ

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Mon Dec 30, 2013 3:46 pm
by snasui
:D ลองดูตัวอย่างหนึ่งตาม Link นี้ครับ viewtopic.php?f=3&t=1568

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Wed Jan 08, 2014 3:17 pm
by brakubra
snasui wrote:snasui
เรียนอาจารย์ snasui

ใน Sheet Input ในส่วนแก้ไขข้อมูลเครื่อง ผมต้องการเอา เมนู Position คือ FINANCE CONTROLLER นำไปค้นหาใน Sheet1 ถ้าตรงกันให้ Copy เมนู COMPUTER MODEL ไปว่างแทนที่ COMPUTER MODEL ตัวเก่า ในSheet1
เมื่อผมคลิกปุ่มแก้ไข แล้วจะcopyใน Sheet1 แต่มันจะcopyไม่ต้องตำแหนงที่ต้องการครับ

รบกวนอาจารย์ช่วยดูโค้ดให้ด้วยครับ

ไฟล์ครับ
Repair Record.xlsm

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Wed Jan 08, 2014 11:41 pm
by snasui
:D ตัวอย่าง Code ลองปรับใช้ดูครับ

Code: Select all

Sub Edit()
    Dim ValForFind As String
    Dim r As Range
    Dim i As Integer
    ValForFind = Sheets("Input").Range("b8").Value
    Set r = Sheets("Sheet1").Columns("d:d").Find(ValForFind, LookIn:=xlValues)
    If r Is Nothing Then
        MsgBox "Not found"
        Exit Sub
    Else
        i = r.Address
    End If
    Worksheets("input").Range("c8").Copy
    Worksheets("Sheet1").Range("D" & i).PasteSpecial xlPasteValues, Transpose:=True
    Application.CutCopyMode = False
    MsgBox "Update data has finished."
End Sub

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Thu Jan 09, 2014 4:48 pm
by brakubra
snasui wrote::D ตัวอย่าง Code ลองปรับใช้ดูครับ

Code: Select all

Sub Edit()
    Dim ValForFind As String
    Dim r As Range
    Dim i As Integer
    ValForFind = Sheets("Input").Range("b8").Value
    Set r = Sheets("Sheet1").Columns("d:d").Find(ValForFind, LookIn:=xlValues)
    If r Is Nothing Then
        MsgBox "Not found"
        Exit Sub
    Else
        i = r.Address
    End If
    Worksheets("input").Range("c8").Copy
    Worksheets("Sheet1").Range("D" & i).PasteSpecial xlPasteValues, Transpose:=True
    Application.CutCopyMode = False
    MsgBox "Update data has finished."
End Sub

อาจารย์ snasui
รบกวนอธิบายโค้ดให้ผมด้วยได้ไหมครับ
ขอบคุณมากครับอาจารย์

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Thu Jan 09, 2014 4:50 pm
by snasui
:D ควรยกมาถามเฉพาะส่วนที่ไม่เข้าใจครับ

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Thu Jan 09, 2014 5:22 pm
by brakubra
snasui wrote::D ควรยกมาถามเฉพาะส่วนที่ไม่เข้าใจครับ

Sub Edit()
Dim ValForFind As String
Dim r As Range
Dim i As Integer
ValForFind = Sheets("Input").Range("b8").Value8
Set r = Sheets("Sheet1").Columns("d:d").Find(ValForFind, LookIn:=xlValues) //ผมไม่เข้าใจตรงส่วนนี้ครับคำสั่ง Set r คืออะไร
If r Is Nothing Then
MsgBox "Not found"
Exit Sub
Else
i = r.Address // i มันเก็บค่าอะไรและ r.address มีไว้ทำไมครับ
End If
Worksheets("input").Range("c8").Copy
Worksheets("Sheet1").Range("D" & i).PasteSpecial xlPasteValues, Transpose:=True // .Range("D" & i) ค่าของอะไรครับ
Application.CutCopyMode = False
MsgBox "Update data has finished."
End Sub

รบกวนด้วยครับอาจารย์

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Thu Jan 09, 2014 9:07 pm
by snasui
brakubra wrote:Set r = Sheets("Sheet1").Columns("d:d").Find(ValForFind, LookIn:=xlValues) //ผมไม่เข้าใจตรงส่วนนี้ครับคำสั่ง Set r คืออะไร
เป็นการ Assign เซลล์ที่ค้นพบค่าตัวแปร ValForFind ให้เป็น Range
brakubra wrote:i = r.Address // i มันเก็บค่าอะไรและ r.address มีไว้ทำไมครับ
Code นี้ผมเขียนผิด จริง ๆ ต้องการจะเขียนเป็นi = r.Row ซึ่งหมายถึงให้ตัวแปร i มีค่าเท่ากับบรรทัดของตัวแปร r ส่วน r.address หมายถึงตำแหน่งของตัวแปร r เช่น $D$20 เช่นนี้เป็นต้น
brakubra wrote:.Range("D" & i) ค่าของอะไรครับ
เมื่อ i คือค่าบรรทัด .range("d" & i) จึงหมายถึงคอลัมน์ D บรรทัดที่เป็นค่าของ i ครับ

Re: สร้างปุ่ม แก้ไขข้อมูลใน Excel

Posted: Fri Jan 10, 2014 9:14 am
by brakubra
snasui wrote:
brakubra wrote:Set r = Sheets("Sheet1").Columns("d:d").Find(ValForFind, LookIn:=xlValues) //ผมไม่เข้าใจตรงส่วนนี้ครับคำสั่ง Set r คืออะไร
เป็นการ Assign เซลล์ที่ค้นพบค่าตัวแปร ValForFind ให้เป็น Range
brakubra wrote:i = r.Address // i มันเก็บค่าอะไรและ r.address มีไว้ทำไมครับ
Code นี้ผมเขียนผิด จริง ๆ ต้องการจะเขียนเป็นi = r.Row ซึ่งหมายถึงให้ตัวแปร i มีค่าเท่ากับบรรทัดของตัวแปร r ส่วน r.address หมายถึงตำแหน่งของตัวแปร r เช่น $D$20 เช่นนี้เป็นต้น
brakubra wrote:.Range("D" & i) ค่าของอะไรครับ
เมื่อ i คือค่าบรรทัด .range("d" & i) จึงหมายถึงคอลัมน์ D บรรทัดที่เป็นค่าของ i ครับ
ขอบพระคุณมากครับอาจารย์สำเร็จแล้วครับ :cp: :cp: