: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

สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#1

Post by jakawan »

เรียนสอบถามครับ ผมได้ทำปุ่มเรียกดูข้อมูล จาก Sheet DATA ไปยัง Sheet Form โดยประยุกต์จากพี่ๆที่ให้ข้อมูลในบอร์ดนี้ จากการเลือกลำดับตามหมายเลข แต่ปรากฎว่า เมื่อผมเลือกลำดับ จะแสดงผลลัพธ์ ไม่ตรงกับที่เลือก เช่นเรียกดูข้อมูลหมายเลข 11 ข้อมูลที่แสดงจะเป็นข้อมูลของหมายเลข 9 ครับ เหมือนจะห่างกัน 2 ลำดับ ผมได้แนบไฟล์มาให้เพื่อขอความกรุณาช่วยเหลือด้วยครับ
Attachments
ค้นหา ID.xlsm
(34.95 KiB) Downloaded 13 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#2

Post by snasui »

:D ปรับ Code จาก r = Worksheets("Data").Cells(l, i) เป็น r = Worksheets("Data").Cells(l + 2, i) ครับ
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#3

Post by jakawan »

ขอบคุณครับอาจารย์ แล้วถ้าเราจะระบุให้ระบบหาลำดับหมายเลขเคสได้เลยมั้ยครับ เพราะตอนนี้มันจะเรียกดูตาม Cells ที่ตั้งไว้ครับ
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#4

Post by jakawan »

Code: Select all

Sub PreviewData()
Dim myRange As Range
Dim r As Range
Dim i As Integer
Dim j As Long
Dim l As Range
Set l = Worksheets("Input").Range("G10")

j = Worksheets("Database").Range("A1:BB1").Columns.Count

If l = 0 Then
    MsgBox "Not found data. Try again."
    Exit Sub
End If
    
Set myRange = Worksheets("Input").Range("C9, C10, C11, C12, C14, G14, L14, C15," & _
    "G15, L15, C16, L16, D17, F20, C21, C24,F24, I24, A29, A40, A47, C51, E51," & _
    "J66, A55, C55, D55, G55, J55, A57, C57,D57, G57, J57, A59, C59, D59, G59, J59, A61, C61, D61, G61, J61, A63, C63, D63, G63, J63, A65, C65, D65")
For Each r In myRange
    i = i + 1
    r = Worksheets("Database").Cells(l + 2, i)
Next r
MsgBox "Finish"
Range("C4").Locked = True
 End Sub
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#5

Post by jakawan »

เรียนสอบถามอาจารย์อีกประเด็นครับ ช่วงโค้ดนี้ เวลาผมเพิ่มเซลล์ เช่น G19 J17 หรือตัวอื่นๆแล้วจะขึ้น Code Eror 1004 ครับพอจะมีวิธีแก้ไหมครับ ขอบคุณครับ

Code: Select all

Set myRange = Worksheets("Input").Range("C9, C10, C11, C12, C14, G14, L14, C15," & _
    "G15, L15, C16, L16, D17, F20, C21, C24,F24, I24, A29, A40, A47, C51, E51," & _
    "J66, A55, C55, D55, G55, J55, A57, C57,D57, G57, J57, A59, C59, D59, G59, J59, A61, C61, D61, G61, J61, A63, C63, D63, G63, J63, A65, C65, D65")
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#6

Post by snasui »

:D แนบไฟล์ที่ Update ด้วย Code ด้านบนมาแล้ว จะได้ช่วยทดสอบได้ครับ
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#7

Post by jakawan »

รบกวนอาจารย์ด้วยนะครับ เหมือนที่มีอยู่ใส่ Cells ได้ไม่เกิน 52 Cells ถ้าเกินจะขึ้น Error ครับ ขอบคุณครับ
Attachments
ค้นหา ID.xlsm
(34.75 KiB) Downloaded 10 times
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#8

Post by jakawan »

โดย Cells ที่ใส่ทั้งหมดจะมี

Code: Select all

("C9", "C10", "C11", _
        "C12", "C14", "G14", "L14", "C15", "G15", _
        "L15", "C16", "G16", "L16", "D17", "J17", "C18", "E18", "G18", "I18", "K18", "C19", "G19", "C20", "F20", "J20", "L20", _
        "C21", "C24", "F24", "I24", "C25", "H25", "D26", "G26", "L26", "A29", _
        "A40", "A47", "C51", "E51", "H51", "C66", "j66", _
        "A55", "C55", "D55", "G55", "j55", _
        "A57", "C57", "D57", "G57", "j57", _
        "A59", "C59", "D59", "G59", "j59", _
        "A61", "C61", "D61", "G61", "j61", _
        "A63", "C63", "D63", "G63", "j63", _
        "A65", "C65", "D65", "G65", "j65")
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#9

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub PreviewData()
    Dim myRange As Variant
    Dim i As Integer
    Dim j As Long
    Dim l As Range
    Dim k As Integer
    Set l = Worksheets("Form").Range("A1")
    
    j = Worksheets("Data").Range("A1:AV1").Columns.Count
    
    If l = 0 Then
        MsgBox "Not found data. Try again."
        Exit Sub
    End If
    With Sheets("Form")
        myRange = Array("C9", "C10", "C11", "C12", "C14", "G14", "L14", "C15", "G15", "L15", "C16", _
            "L16", "D17", "F20", "C21", "C24", "F24", "I24", "A29", "A40", "A47", "C51", "E51", _
            "J66", "A55", "C55", "D55", "G55", "j55", "A57", "C57", "D57", "G57", "j57", "A59", "C59", "D59", "G59", _
            "j59", "A61", "C61", "D61", "G61", "j61", "A63", "C63", "D63", "G63", "j63", "A65", "C65", "D65", "G65", "j65")
            For k = 0 To UBound(myRange)
                i = i + 1
                .Range(myRange(k)).Value = Worksheets("Data").Cells(l + 2, i)
            Next k
    End With
    MsgBox "Finish"
    Range("C4").Locked = True
End Sub
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#10

Post by jakawan »

ได้แล้วครับ แต่ถ้าเราจะกำหนดให้เรียกข้อมูลตามลำดับหมายเลขเคสจริงๆ
เช่นลำดับที่ 20 อยู่ในCells ที่ 25 คำสั่งจะเรียกลำดับเคสที่อยู่ในCells ที่20 มาแทนครับ เหมือนเรียกตามแถว แต่ไม่ได้เรียกตามหมายเลขเคสนั้นจริงๆครับ พอที่จะมีวิธีระบุมั้ยครับ

ขอบคุณครับอาจารย์
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#11

Post by snasui »

:D ตามไฟล์ที่แนบมาและ Code ที่ผมตอบไปด้านบนหาตามลำดับใน A1ของชีท Form หากกรอก 20 จะได้หมายเลขเคสที่ 20 มาแสดง ถามด้วยไฟล์ไหนก็ควรอ้างอิงจากไฟล์นั้น จะได้เข้าใจตรงกันครับ
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#12

Post by jakawan »

ขอบคุณครับอาจารย์ อ้างอิงจากไฟล์เดิมครับ พอดีผมลองสลับลำดับกันใน ชีท Data ระหว่าง หมายเลข 19 กับ 20 เช่น 17 18 20 19 พอผมเรียกดูหมายเลข 19 ใน ชีท Form จะเป็นหมายเลข 20 ที่ขึ้นมาแสดงแทนครับ รบกวนอาจารย์ให้คำแนะนำด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#13

Post by snasui »

:D หากเป็นเช่นนั้นให้เขียนการปรับ Code มาเองก่อน ติดตรงไหนแล้วค่อยถามกันต่อ ตัวอย่าง Code ลักษณะนั้นดูได้จาก Link เหล่านี้ครับ Application.Match
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#14

Post by jakawan »

:D ขอบคุณครับอาจารย์ผมจะนำกลับไปศึกษาและมาให้อาจารย์ดูใหม่ครับ

ประเด็นสุดท้ายและท้ายสุดนี้ เป็นประเด็นต่อเนื่องครับ จึงขออนุญาติไม่สร้างกระทู้ใหม่ โดยถ้าเมื่อเราเรียกดูข้อมูลแล้วทำการแก้ไข ผมอยากที่จะให้ข้อความที่แก้ไข แก้ทับไปใน Sheet Database แทนที่อันเดิม โดยกดปุ่มแก้ไขข้อมูลใน Sheet Input แล้วจะแก้ไข ตามหมายเลขเดิมที่อยู่ใน Sheet Database ครับ ซึ่งผมได้ลองทำและส่งไฟล์แนบมาให้อาจารย์ช่วยดูครับ :thup:
Attachments
คันหาID.xlsm
(34.61 KiB) Downloaded 17 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#15

Post by snasui »

:D เขียน Code สำหรับการแก้ไขข้อมูลมาด้วยพร้อมแจ้งว่าติดขัดบรรทัดใดครับ
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#16

Post by jakawan »

แบบนี้ครับอาจารย์

Code: Select all

Sub ReplaceData()
Dim rs As Range
Dim rt As Range
Set rs = Worksheets("Input").Range("A1")
Set rt = Worksheets("Database").Range("A3").Offset
    Worksheets("Input").Range("A1"), 0)
If Worksheets("Input").Range("A3") = "" Then
    MsgBox "Can't replace data"
    Exit Sub
End If
rs.Copy: rt.PasteSpecial xlPasteValues
Application.CutCopyMode = False
MsgBox "Replace Complete"
End Sub
Application.CutCopyMode = False
MsgBox "Replace Complete"
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#17

Post by snasui »

:D Code ที่เขียนมาไม่เกียวกับชีท Form และชีท Data

เขียนให้ตรงกับสิ่งที่จะทำจริง ไม่ใช่ยกเอา Code อื่นใดที่ไม่เกี่ยวข้องมาถามครับ
jakawan
Member
Member
Posts: 46
Joined: Tue Apr 07, 2015 11:24 am

Re: สอบถาม VBA ดึงข้อมูลจาก DATA ลำดับไม่ตรงกันครับ

#18

Post by jakawan »

:D ขอบคุณครับอาจารย์ตอนนี้ผมทำได้แล้วครับ โดยสร้าง Temp1 กับ Form1 และใช้ Code นี้ครับ

Code: Select all

Sub rdata()
Dim rs As Range
Dim rt As Range
Set rs = Worksheets("Temp1").Range("A4:CA4")
Set rt = Worksheets("Database").Range("A2").Offset( _
    Worksheets("Temp1").Range("CB2"), 0)
If Worksheets("Temp1").Range("A4") = "" Then
    MsgBox "Can't replace data"
    Exit Sub
End If
rs.Copy: rt.PasteSpecial xlPasteValues
Application.CutCopyMode = False
MsgBox "Replace Complete"
End Sub
:thup:
Post Reply