: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

อัพเดทข้อมูลข้ามไฟล์

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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

อัพเดทข้อมูลข้ามไฟล์

#1

Post by bank9597 »

:D จากโค๊ดด้านล่าง ผมไม่แน่ใจว่ามีอะไรผิดพลาด โค๊ดไม่อัพเดทข้อมูลให้ ซึ่งปกติหากเปิดไฟล์ทั้งสองอยู่ ก็สามารถอัพเดทข้อมูลได้ปกติครับ รบกวนดูให้หน่อยครับ

Code: Select all

Option Explicit
Dim db As Worksheet
Dim ws As Worksheet
Dim objWorkbook As Workbook

Private Sub cmd_save_Click()
      
            Set objWorkbook = Workbooks.Open("D:\ระบบงานออฟฟิศ\database.xlsm")
            Set db = objWorkbook.Sheets("tbl_supplier")
            Set ws = Workbooks("center.xlsm").Worksheets("temp_sup")
            
            With Application
                .DisplayAlerts = False
                .ScreenUpdating = False
            End With
                       
            Dim rsAll As Range, rtAll As Range
            Dim rs As Range, i As Integer
            If Me.txt_name <> "" Then
                Set rsAll = ws.Range("A13:K13")
                Set rtAll = db.Range("A2", db.Range("A" & Rows.Count).End(xlUp))
        
            For Each rs In rsAll
                For i = rtAll.Count To 1 Step -1
                    If rs = rtAll(i) And rs.Offset(0, 0) = rtAll(i).Offset(0, 0) Then
                        rs.Offset(0, 1).Resize(1, 10).Copy
                        rtAll(i).Offset(0, 1).PasteSpecial xlPasteValues
                        Application.CutCopyMode = False
                        MsgBox ("อัพเดทข้อมูลเรียบร้อยแล้ว")
                        ws.Range("C17:K17").ClearContents
                    End If
                Next i
            Next rs
            Else
            MsgBox "คุณยังไม่ระบุชื่อบุคคล", vbCritical
            End If
            
            objWorkbook.Close True
            With Application
                .DisplayAlerts = True
                .ScreenUpdating = True
            End With
                 
End Sub
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อัพเดทข้อมูลข้ามไฟล์

#2

Post by snasui »

:D ลอง Run ดูทีละ Step แล้วสังเกตดูว่า Code สำหรับการ Copy และ Paste ทำงานหรือไม่ครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: อัพเดทข้อมูลข้ามไฟล์

#3

Post by bank9597 »

snasui wrote::D ลอง Run ดูทีละ Step แล้วสังเกตดูว่า Code สำหรับการ Copy และ Paste ทำงานหรือไม่ครับ
:D ครับผม เดี๋ยวจะมารายงานผลอีกครั้งครับ
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: อัพเดทข้อมูลข้ามไฟล์

#4

Post by bank9597 »

:( รบกวนด้วยครับอาจารย์ แก้ไม่ได้ซักที


ผมแนบไฟล์ทั้งสองมาให้ครับ

โมดูล cmd_save ในไฟล์ center.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: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อัพเดทข้อมูลข้ามไฟล์

#5

Post by snasui »

:D อาการของการ Update ข้อมูลไม่ได้โปรแกรมฟ้องหรือแสดงผลอย่างไรครับ :?:
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: อัพเดทข้อมูลข้ามไฟล์

#6

Post by bank9597 »

snasui wrote::D อาการของการ Update ข้อมูลไม่ได้โปรแกรมฟ้องหรือแสดงผลอย่างไรครับ :?:

:( อัพเดทข้อมูลไม่ได้ครับ ถ้าผมใช้โค๊ดแค่ :ard:

Code: Select all

Dim rsAll As Range, rtAll As Range
            Dim rs As Range, i As Integer
            With ws
                Set rsAll = .Range("A13")
                Set rs = .Range("A13:A13")
            End With
            With db
                Set rtAll = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
            End With
            With ws
                            For Each rs In rsAll
                            For i = rtAll.Count To 1 Step -1
                                If rs = rtAll(i) And rs.Offset(0, 0) = rtAll(i).Offset(0, 0) Then
                                    rs.Offset(0, 1).Resize(1, 10).Copy
                                    rtAll(i).Offset(0, 1).PasteSpecial xlPasteValues
                                    Application.CutCopyMode = False
                                    MsgBox ("อัพเดทข้อมูลเรียบร้อยแล้ว")
                                End If
                Next i
            Next rs
            End With
แล้วเปิดไฟล์ทั้งสองอยู่ มันจะอัพเดทได้ปกติครับ แต่พอปิดไฟล์ database แล้วเรียกขึ้นมาบันทึก มันก็อัพเดทไม่ได้ซะงั้น

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

Re: อัพเดทข้อมูลข้ามไฟล์

#7

Post by snasui »

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

Code: Select all

Option Explicit

Sub cmd_save()
    Dim rsAll As Range, rtAll As Range
    Dim rs As Range, i As Integer
    Dim db As Worksheet
    Dim ws As Worksheet
    Dim objWorkbook As Workbook
    Dim rowNum As Integer
    
    Set objWorkbook = Workbooks.Open("D:\ระบบงานออฟฟิศ\database.xlsx")
    Set db = objWorkbook.Sheets("tbl_supplier")
    Set ws = Workbooks("center.xlsm").Worksheets("temp_sup")
    
    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With
               
    With ws
        Set rsAll = .Range("A13:A13")
    End With
    With db
        Set rtAll = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
    End With
    For Each rs In rsAll
        With Application
            If .CountIf(rtAll, rs) > 0 Then
                rowNum = .Match(rs, rtAll, 0)
                rtAll(rowNum).Offset(0, 1).Resize(1, 10) = rs.Offset(0, 1).Resize(1, 10).Value
            End If
        End With
    Next rs
    
    objWorkbook.Close True
    
    With Application
        .DisplayAlerts = True
        .ScreenUpdating = True
    End With
    MsgBox "Your records updated"
End Sub
ผมเอา Message Box มาไว้หลังสุดเพื่อแสดงว่าได้เปิดไฟล์ บันทึกข้อมูลและปิดไฟล์ไปแล้วจึงค่อยแจ้งว่าการบันทึกสำเร็จ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: อัพเดทข้อมูลข้ามไฟล์

#8

Post by bank9597 »

:D ทดสอบแล้วผ่านครับ เดี๋ยวผมจะนำไปปรับใช้กับของจริงครับ :thup:
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: อัพเดทข้อมูลข้ามไฟล์

#9

Post by bank9597 »

:( อาจารย์ครับ สั่งรันจาก userform แล้วโค๊ดไม่ทำงานเลยครับ ผมเอาโค๊ดไปปรับใช้ใน command button ปรากฏว่าโค๊ดไม่ทำงาน

ต้องแยกโค๊ดออกมาเขียนใน module แทน แล้วเขียนโค๊ดใน command button ว่า

Code: Select all

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

Re: อัพเดทข้อมูลข้ามไฟล์

#10

Post by snasui »

:D ลองแนบไฟล์ตัวอย่างพร้อม Code ชุดที่ไม่ทำงานมาดูครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: อัพเดทข้อมูลข้ามไฟล์

#11

Post by bank9597 »

snasui wrote::D ลองแนบไฟล์ตัวอย่างพร้อม Code ชุดที่ไม่ทำงานมาดูครับ
:D อาจารย์ครับ รบกวนอีกครั้งน่ะครับ

ผมต้องใช้ userform เพื่อความสะดวกของผู้ใช้งานครับ :)

โค๊ดที่ใช้งานได้ผลอยู่ในโมดูล update ครับ

ส่วนโค๊ดที่ไม่ทำงาน อยู่ใน userform ครับ มีอยู่ฟอร์มเดียวครับ
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: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อัพเดทข้อมูลข้ามไฟล์

#12

Post by snasui »

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

Re: อัพเดทข้อมูลข้ามไฟล์

#13

Post by bank9597 »

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

Re: อัพเดทข้อมูลข้ามไฟล์

#14

Post by snasui »

:D ลองกดแป้น F8 เพื่อ Run ทีละ Step ดูว่าติดที่บรรทัดใดครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: อัพเดทข้อมูลข้ามไฟล์

#15

Post by bank9597 »

:( อาจารย์ครับ มันไม่ติดบันทัดไหนครับ

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

Re: อัพเดทข้อมูลข้ามไฟล์

#16

Post by snasui »

:D ผมลองเปลี่ยนแปลงข้อมูลแล้วก็เปลี่ยนได้ครับ Code ใน Module ให้ลบทิ้งไปก่อนหรือ Mark เป็น Comment ไปก่อน

เราสามารถเขียน Code ใน UserForm ทำงานดังกล่าวได้ไม่จำเป็นต้องอาศัย Module เข้ามาช่วย

Code ที่เขียนมานั้นเป็นการแก้ไขข้อมูลเดิม ไม่ใช่เป็นการเพิ่ม Record หากไม่มี Record เดิมอยู่จะไม่เห็นการเปลี่ยนแปลงใด

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

Re: อัพเดทข้อมูลข้ามไฟล์

#17

Post by bank9597 »

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