
ถูกต้องครับอาจารย์ ให้ยึดที่ใบPo เป็นหลักครับ อิอิ
เสริมอีกนิดครับ พอดีว่าในชีทEdit คอลัมน์ "C","E","G","F" ผมจะตั้งค่า Validation - Definition คือจะเป็น DropDown ให้เลือกรายการเวลาแก้ไข
แต่ทีนี้ เวลาเราดึงข้อมูลมาแสดง ค่าValidation จะหายไป จะมีก็แต่บรรทัดบนสุดครับ ถ้าเป็นแบบนี้ก็จะทำให้แก้ไขยากมาก เช่น ต้องการแก้ไขรายการสินค้า ก็ต้องพิมพ์ชื่อสินค้าให้ตรงกับในฐานข้อมูลรายการสินค้า หากไม่ตรงกันก็ไม่สามารถจะคำนวนค่าอะไรได้ เนื่องจากชื่อไม่ตรงกับรหัสใด อีกทั้งรายการสินค้านั้นก็เยอะมากๆ
ตรงนี้เราจะแก้อย่างไรได้บ้างครับ
แต่ก่อนจะใช้โค๊ดนี้ในการดึงข้อมูลครับ
Code: Select all
Sub Button2_Click()
Dim rFind As Range, rDataAll As Range
Dim r As Range, rTarget As Range
Set rFind = Sheets("Edit").Range("D2")
If Sheets("Edit").Range("D2") = "" Then Exit Sub
With Sheets("DataStore")
Set rDataAll = .Range("B2", .Range("B" & Rows.Count).End(xlUp))
If .Columns("b:b").Find(rFind, LookIn:=xlValues) Is Nothing Then
MsgBox "äÁèÁÕàÅ¢·Õè¹Õé!"
Exit Sub
End If
End With
For Each r In rDataAll
If r = rFind Then
Set rTarget = Sheets("Edit").Range("C" & Rows.Count).End(xlUp) _
.Offset(1, 0)
r.Resize(1, 8).Copy
rTarget.PasteSpecial xlPasteValues
rTarget.Offset(0, -1) = Date
End If
Next r
Application.CutCopyMode = False
MsgBox "Get data has finished."
End Sub
ไม่มีปัญหาอะไร ค่า Validation ไม่ได้ถูกลบเวลาดึงข้อมูลมา เพียงแต่ข้อมูลจะถูกดึงมาต่อกันกันเรื่อยๆ ซึ่งต่างกับวิธีที่ใช้อยู่ ซึ่งจะดึงข้อมูลใหม่มาแทนข้อมูลเก่าทันทีครับ