Page 1 of 1
สอบถามการเขียน VBA เพื่อเรียกข้อมูลมาแก้ไขครับ
Posted: Sun Sep 18, 2011 3:39 pm
by khainui
กำลังหัดการเขียน VBA อยู่ครับ
เลยลองทำไฟล์บันทึกชื่อรายการหนังไว้ โดยด้านซ้ายเป็นสูตรการค้นหาข้อมูลในหนัง
ด้านขวาด้านบนเป็นการบันทึกชื่อรายการหนังเข้าฐานข้อมูล ซึ่งสามารถบันทึกชื่อไปยัง Sheet MOVIE โดยถ้าคีย์ CODE ซ้ำ จะทำ msg box แสดงว่าเลขที่นี้มีแล้ว
ถ้าลบข้อมูล จะมี msg box ถ้า CODE นั้นไม่มีในฐานข้อมูล
ทีนี้อันล่าง (หรือในอันเดียวกับตัวบันทึกข้อมูลก็ได้ครับ) อยากให้สามารถดึงข้อมูลโดยใช้ CODE เป็นตัวดึงมา และแก้ไขไขข้อมูลพร้อมบันทึกกลับไปที่ตำแหน่งเดิม
ยังทำไม่ได้ซักที รบกวนขอคำสั่ง VBA ที่ถูกต้องด้วยครับ
Re: สอบถามการเขียน VBA เพื่อเรียกข้อมูลมาแก้ไขครับ
Posted: Sun Sep 18, 2011 5:12 pm
by snasui
ลองเพิ่ม Code ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
If Range("i2") = "" Then Exit Sub
If Worksheets("movie").Columns("b:b").Find(Range("i2"), LookIn:=xlValues) Is Nothing Then
MsgBox "ไม่มีเลขที่นี้!"
Else
i = Worksheets("movie").Columns("b:b").Find(Range("i2"), LookIn:=xlValues).Row
Worksheets("movie").Range("B" & i).Resize(1, 5).Copy
Worksheets("ค้นหา บันทึก").Range("I2").PasteSpecial xlPasteValues, Transpose:=True
Application.CutCopyMode = False
MsgBox "Get data has finished."
End If
End Sub
Private Sub CommandButton2_Click()
If Range("i2") = "" Then Exit Sub
If Worksheets("movie").Columns("b:b").Find(Range("i2"), LookIn:=xlValues) Is Nothing Then
MsgBox "ไม่มีเลขที่นี้!"
Else
i = Worksheets("movie").Columns("b:b").Find(Range("i2"), LookIn:=xlValues).Row
Worksheets("ค้นหา บันทึก").Range("I2:I6").Copy
Worksheets("movie").Range("B" & i).PasteSpecial xlPasteValues, Transpose:=True
Application.CutCopyMode = False
MsgBox "Update data has finished."
End If
End Sub
โดย CommmandButton1 จะเป็นการดึงข้อมูลตาม Code ที่ต้องการมาแสดง ส่วน CommmandButton2 จะเป็นการบันทึกข้อมูลกลับลงไปที่เดิมเพื่อแทนที่ข้อมูลเดิม
Re: สอบถามการเขียน VBA เพื่อเรียกข้อมูลมาแก้ไขครับ
Posted: Sun Sep 18, 2011 10:30 pm
by khainui
นำมาใช้แล้วครับ
ใช้ได้ดีเลยครับ จะนำไปประยุกต์ใช้อย่างอื่นต่อไปครับ อาจารย์ควน
Re: สอบถามการเขียน VBA เพื่อเรียกข้อมูลมาแก้ไขครับ
Posted: Mon Sep 19, 2011 4:32 pm
by khainui
Code: Select all
i = Worksheets("movie").Columns("b:b").Find(Range("i2"), LookIn:=xlValues).Row
Worksheets("movie").Range("B" & i).Resize(1, 5).Copy
Worksheets("ค้นหา บันทึก").Range("I2").PasteSpecial xlPasteValues, Transpose:=True
คำสั่งสามแถวนี้ทำงานอย่างไรครับ โดยเฉพาะความหมายของคำสั่งช่วงหลังครับ
Code: Select all
lookin:=xlvalues).row
resize(1,5).copy
transpose:=true
Re: สอบถามการเขียน VBA เพื่อเรียกข้อมูลมาแก้ไขครับ
Posted: Mon Sep 19, 2011 5:59 pm
by snasui
khainui wrote:lookin:=xlvalues).row
resize(1,5).copy
transpose:=true
1. .row เป็นการบอกว่าอยู่บรรทัดที่เท่าไร
2. resize(1,5) เป็นการบอกว่าให้ปรับขนาดเป็น 1 บรรทัด 5 คอลัมน์
3. .copy คือสั่งให้ Copy
4. transpose:=true เป็นการสั่งให้สลับแกน
Re: สอบถามการเขียน VBA เพื่อเรียกข้อมูลมาแก้ไขครับ
Posted: Tue Feb 23, 2016 1:34 pm
by daopuprang09
คุณ khainui ค่ะ ตัวแปร amount คุณสร้างมาจากตรงไหนอะคะ
Re: สอบถามการเขียน VBA เพื่อเรียกข้อมูลมาแก้ไขครับ
Posted: Tue Feb 23, 2016 7:45 pm
by snasui
ตัวแปร amount ที่กล่าวถึงดูจากโพสต์ไหนครับ