:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

การดึงข้อมูล,อัพเดท Record และ Delete

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

การดึงข้อมูล,อัพเดท Record และ Delete

#1

Post by bank9597 »

:D ยอมรับว่ายังไม่รู้เรื่องโค๊ดอะไรมากมาย ทำไปเรื่อยๆ เดาบ้างไรบ้าง สุดท้ายก็ได้ผลที่ไม่ค่อยน่าประทับใจเท่าที่ควร จึงต้องรบกวนอาจารย์อีก :mrgreen:
ผมได้ลองศึกษาตามเว็บดังกล่าว ทดลองทำเองตามตัวอย่างไม่มีปัญหาอะไร เลยนำมาปรับใช้กับงานตัวเอง แต่ปรากฏว่าไม่เป็นไปตามที่คาดหวัง พยายามหาวิธีแก้แล้วก็ยังไม่ได้อยู่ดี ประกอบกับความรู้พื้นฐานเรื่องโค๊ดก็อ่อนมากด้วย รบกวนอาจารย์ด้วยครับ

ในชีท Update ผมได้สร้างฟอร์มเพื่อดึงข้อมูลจากชีท Database มาแสดง พร้อมทั้งกำหนดให้สามารถแก้ไขข้อมูลและลบข้อมูลได้ แต่ปัญหาคือ เมื่อดึงข้อมูลมาแล้วยังมีส่วนที่ผิดพลาดอยู่ เช่นคอลัมน์ไม่ตรงกับที่กำหนด และมี Error รวมถึงการทำอัพเดทข้อมูลที่ยังไม่สามารถทำได้
ทั้งหมดนี้รบกวนอาจารย์ช่วยดูครับ เบื้องต้นได้เขียนโค๊ด Update มาแล้ว แต่ยังใช้การไม่ได้ ส่วนโค๊ด Delete ยังไม่ได้เขียน เพราะคิดว่าหากแก้ปัญหาแรกได้ รู้สาเหตุของปัญหา ก็น่าจะทำขั้นต่อไปได้เอง (บ้าง) :D
ทดสอบ1.xlsm
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#2

Post by snasui »

:D ผมปรับ Code สำหรับการค้นหามาให้แล้วตามด้านล่างครับ

Code: Select all

Option Explicit
Option Base 1
Sub ShowData()
Dim a() As Variant, lng As Long
Dim r As Range, rAll As Range
Dim rt As Range, rl As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
rl = Rows.Count
With Worksheets("Database")
    Set rAll = .Range("B4", .Range("B" & rl).End(xlUp))
End With
For Each r In rAll
    If r = Worksheets("Update").Range("K3") Then
        lng = lng + 1
        ReDim Preserve a(8, lng)
        a(8, lng) = lng
        a(1, lng) = r.Offset(0, 0)
        a(2, lng) = r.Offset(0, 1)
        a(3, lng) = r.Offset(0, 2)
        a(4, lng) = r.Offset(0, 3)
        a(5, lng) = r.Offset(0, 4)
        a(6, lng) = r.Offset(0, 5)
        a(7, lng) = r.Offset(0, 6)
    End If
Next r
If lng > 0 Then
    With Worksheets("Update")
        Set rt = .Range("A4", .Range("H" & lng - 1 + 4))
        .Range("A4", .Range("H" & rl)).ClearContents
        .Range("A4:H4").Copy
        rt.PasteSpecial xlPasteFormats
        rt = Application.Transpose(a)
        .Range("B4", .Range("B" & rl).End(xlUp)).NumberFormat = "00"
        .Range(.Range("B3").End(xlDown).Offset(1, 0), .Range("H" & rl)).Clear
    End With
Else
    MsgBox "Data not found."
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#3

Post by bank9597 »

ขอบคุณครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#4

Post by bank9597 »

:flw: ผมได้นำเอาโค๊ดไปปรับใช้กับตัวโมเดลแล้ว ปรากฏว่าไม่มีปัญหาแล้วครับ

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

ผมแนบไฟล์ตัวโมเดลมาให้ครับ อยู่ในชีท Edit โมดูลที่ 6 ครับ

รบกวนด้วยครับ :D
Model.xlsm
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#5

Post by snasui »

:D อยากทราบว่าเงื่อนไขในการ Update และ Delete ให้ดูค่าใดในชีท Edit บ้างครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#6

Post by bank9597 »

:D ตอนนี้อยากให้อาจารย์ช่วยดูแค่การ Update ครับ ส่วนการ Delete ผมยังไม่ลองเขียนโค๊ดมาให้เลย

ส่วนค่าที่จะให้อาจารย์ช่วยดูคือ

Code: Select all

For Each rs In rsAll
    For i = rtAll.Count To 1 Step -1
    
        If rs = rtAll(i) And rs.Offset(0, 8) = rtAll(i).Offset(0, 8) _
        And rs.Offset(0, 4) = "Update" Then
            rs.Offset(0, 8).Resize(1, 8).Copy
            rtAll(i).Offset(0, 8).PasteSpecial xlPasteValues
        End If
ผมไม่รู้ว่าต้องวางค่าอย่างไรให้ถูกต้อง
ในความคิดผม โค๊ด

Code: Select all

If rs = rtAll(i) And rs.Offset(0, 8) = rtAll(i).Offset(0, 8) _
(0,8)คือจำนวนคอลัมน์จาก "B4" จนถึง "J4" ห่างกัน 8 คอลัมน์
ส่วน

Code: Select all

And rs.Offset(0, 4) = "Update" Then
อันนี้ผมไม่รู้ครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#7

Post by snasui »

:D ค่าที่ให้ดูหมายถึงว่าให้ดูว่าหากค่าในคอลัมน์ใดในชีท Edit ตรงกับค่าในคอลัมน์ใดของชีท DataStore แล้ว ให้นำข้อมูลไป Update ในชีท DataStore ซึ่งผมเข้าใจว่าน่าจะต้องตรงกันมากกว่าหนึ่งค่าถึงจะ Update และเมื่อระบุค่าได้แล้ว ค่อยมาปรับที่ Code ว่าต้องปรับกันอย่างไรครับ :P
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#8

Post by bank9597 »

:tt: จะพยายามอธิบายน่ะครับ ไม่รู้ว่าจะเข้าใจไหม

ในชีท Edit นั้น ค่าที่ผมต้องการแก้ไขแล้วอัพเดทไปยังชีท DataStore คือ ค่าในคอลัมน์ "B" ถึง "I" ซึ่งค่าดังกล่าวจะตรงกับคอลัมน์"B"ถึง"I" ในชีท DataStore ซึ่งมากกว่า 1 ค่า
จาก "B" ถึง "I" มีทั้งหมด 8 ค่าที่ต้องทำการอัพเดทครับ ยกตัวอย่างเช่น ต้องการแก้ไขจำนวนการสั่งซื้อสินค้า ราคาสินค้า เป็นต้น

ในชีท Edit คอลัมน์ "J" จะมีตัวเลือกระหว่าง Update,Delete เมื่อแก้ไขเส็จแล้วก็เลือกตัวเลือกดังกล่าวว่าจะ Update หรือ Delete
ส่วนในชีท DataStore คอลัมน์ "J","K","L" จะบันทึกวันที่ที่ทำการแก้ไขไว้ เช่นรหัส ตส/ปท/TUD/54/10/001 ถูกแก้ไขไปแล้ว 1 ครั้งในวันที่ 12/8/2011 วันที่นี้ก็จะถูกบันทึกในคอลัมน์ "๋J" ซึ่งบอกให้รู้ว่าแก้ไขครั้งที่ 1

พยายามอธิบายให้ชัดเจนแล้ว หากไม่เข้าใจยังไงต้องขอโทษด้วยครับ :)
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#9

Post by snasui »

:D เข้าใจในสิ่งที่อธิบายมาครับ แต่ไม่ใช่สิ่งที่ผมต้องการทราบ เพราะทราบอยู่แล้วว่าต้องการนำข้อมูลจากที่ใดไป Update หรือ Delete ในที่ใด

สิ่งที่ต้องการทราบคือเงื่อนไขว่า จะต้องดูค่าในคอลัมน์ใดเพื่อตรวจสอบว่าข้อมูลต้นทางและปลายทางเป็นค่าเดียวกันแล้วค่อย Update หรือ Delete ค่านั้นในข้อมูลปลายทาง
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#10

Post by bank9597 »

สิ่งที่ต้องการทราบคือเงื่อนไขว่า จะต้องดูค่าในคอลัมน์ใดเพื่อตรวจสอบว่าข้อมูลต้นทางและปลายทางเป็นค่าเดียวกัน

:D ผมชักจะสับสนตัวเองแล้วครับ ไม่รู้ว่าโง่ หรือว่าขาดความรู้พื้นฐานหรือเปล่า อิอิ จากเงื่อนไขที่อาจารย์ถามถึง ความเข้าใจของผมน่าจะเป็นค่าที่อยู่ใน "D2" ซึ่งเป็นรหัส PO ที่ใช้เป็นค่าเปรียบเทียบในชีท DataStore คอลัมน์ "B" แล้วดึงข้อมูลมาแสดง ฉนั้นเงื่อนไขที่อาจารย์คือ รหัส Po ที่อยู่ในคอลัมน์ "B" ชีทEdit ครับ

ไม่รู้จะใช่หรือไม่ แต่พยายามเต็มที่แล้วครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#11

Post by snasui »

:D ถ้าเช่นนั้นสรุปได้ว่า เงื่อนไขคือให้ดูที่ PO เดียวกัน และหากมีคำว่า Update ก็ให้นำค่าไปวางทับที่เดิม หากมีคำว่า Delete ก็ให้ลบบรรทัดนั้นทิ้ง ถูกต้องไหมครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#12

Post by bank9597 »

:mrgreen: ถูกต้องครับอาจารย์ ให้ยึดที่ใบPo เป็นหลักครับ อิอิ


เสริมอีกนิดครับ พอดีว่าในชีทEdit คอลัมน์ "C","E","G","F" ผมจะตั้งค่า Validation - Definition คือจะเป็น DropDown ให้เลือกรายการเวลาแก้ไข
แต่ทีนี้ เวลาเราดึงข้อมูลมาแสดง ค่าValidation จะหายไป จะมีก็แต่บรรทัดบนสุดครับ ถ้าเป็นแบบนี้ก็จะทำให้แก้ไขยากมาก เช่น ต้องการแก้ไขรายการสินค้า ก็ต้องพิมพ์ชื่อสินค้าให้ตรงกับในฐานข้อมูลรายการสินค้า หากไม่ตรงกันก็ไม่สามารถจะคำนวนค่าอะไรได้ เนื่องจากชื่อไม่ตรงกับรหัสใด อีกทั้งรายการสินค้านั้นก็เยอะมากๆ
ตรงนี้เราจะแก้อย่างไรได้บ้างครับ

แต่ก่อนจะใช้โค๊ดนี้ในการดึงข้อมูลครับ :ard:

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 ไม่ได้ถูกลบเวลาดึงข้อมูลมา เพียงแต่ข้อมูลจะถูกดึงมาต่อกันกันเรื่อยๆ ซึ่งต่างกับวิธีที่ใช้อยู่ ซึ่งจะดึงข้อมูลใหม่มาแทนข้อมูลเก่าทันทีครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#13

Post by bank9597 »

เสริมอีกนิดครับ พอดีว่าในชีทEdit คอลัมน์ "C","E","G","F" ผมจะตั้งค่า Validation - Definition คือจะเป็น DropDown ให้เลือกรายการเวลาแก้ไข
ตรงนี้แก้ได้แล้วครับ :D
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#14

Post by snasui »

:D ที่บอกว่าให้ดูเฉพาะ PO นั้นดูเหมือนว่าจะไม่พอ เนื่องจากมี PO ซ้ำกันตามภาพด้านล่าง หากเป็นการ Update ทั้งสองบรรทัดที่ซ้ำกันนั้นจะถูก Update ด้วยค่าเดียวกันซึ่งอาจจะไม่ตรงกับที่ต้องการ
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#15

Post by bank9597 »

:? อาจารย์ครับ ใบPO 1 ใบ มีรายการสั่งซื้อได้สูงสุด 60 รายการ สมมุติใบ Po101 มี 10 รายการ าเวลาดึงข้อมูลมาแล้ว จะต้องมีรหัสPO ซ้ำอย่างแน่นอน

ถ้าเป็นอย่างนี้คงจะอัพเดทไม่ได้อย่างที่อาจารย์บอก

แต่สังเกตเห็นว่วคอลัมน์ "A" จะมีเลขลำดับอยู่ เราใช้ตัวนี้เป็นตัวตรวจสอบได้ไหมครับอาจารย์
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#16

Post by snasui »

:D หากค่าไม่ซ้ำกันก็ไม่น่าจะมีปัญหาใดครับ ว่าแต่เลขลำดับที่ว่านี้มีอยู่ในชีทต้นทางและชีทปลายทางหรือไม่ครับ เพราะเท่าที่ตรวจสอบพบว่าไม่มีอยู่ในชีท DataStore ครับ :?:
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#17

Post by bank9597 »

:D ผมคิดว่าสามารถใช้สูตรดึงตัวเลขลำดับไปยังชีท DataStore ได้ แต่ว่าข้อมูลจะเยอะขึ้นทุกวันๆ เราจะต้องเข้าไปก๊อปปี้สูตรลงมาเรื่อยๆ ผมคิดว่าไม่เหมาะครับ

คงต้องไปแก้ในขั้น Save ข้อมูลจาก Temp มาลง DataStore โดยให้มีเลขลำดับบันทึกมาด้วย จะได้กำกับได้อย่างชัดเจนเช่น Po 101 ลำดับ 1,2,3,4.....

คงต้องย้อนกลับไปแก้ครับ :(
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#18

Post by bank9597 »

ผมแก้ไขแล้วครับอาจารย์

ทีนี้ผมจะเขียนโค๊ดอย่างให้สามารถแก้ไขข้อมูลและลบข้อมูลได้ เพราะที่ผมได้เขียนไปนั้น ยังใช้การไม่ได้เลย ไม่รู้ต้องปรับตรงไหนบ้าง

อีกนิดครับ ในชีทEdit คอลัมน์A จะเป็นวันที่ที่แก้ไข เวลาแก้ไขเสร็จแล้ว ผมอยากใ้ห้ส่งค่าไปบันทึกในชีทDataStore คอลัมน์K เป็นต้นไป

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

โมดูล 7-8 ไม่ได้ใช้งาน
ส่วนอัพเดทอัพเดท อยู่ในโมดูล 6 ครับ
Model.xlsm
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#19

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Update()
Dim rsAll As Range, rtAll As Range
Dim rs As Range, i As Integer

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
On Error Resume Next

With Worksheets("Edit")
    Set rsAll = .Range("B4", .Range("B" & Rows.Count).End(xlUp))
End With

With Worksheets("DataStore")
    Set rtAll = .Range("B2", .Range("B" & Rows.Count).End(xlUp))
End With

For Each rs In rsAll
    For i = rtAll.Count To 1 Step -1    
        If rs = rtAll(i) And rs.Offset(0, 8) = rtAll(i).Offset(0, 8) _
        And rs.Offset(0, 9) = "Update" Then
            rs.Offset(0, -1).Resize(1, 10).Copy
            rtAll(i).Offset(0, -1).PasteSpecial xlPasteValues
        End If
    Next i
Next rs

Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การดึงข้อมูล,อัพเดท Record และ Delete

#20

Post by bank9597 »

:D ขอบคุณครับ ไม่ได้เข้ามดูหลายวันเลย

เดี๋ยวผมจะเขียนโค๊ด Delete ต่อเลยครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
Post Reply