: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 copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
9KiTTi
Member
Member
Posts: 198
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#1

Post by 9KiTTi »

ขออนุญาติสอบถามกรณีใช้ VBA เพื่อ copy cell จากชีทที่นำเข้า คือ A1:Y1 ของทุกชีท มาวางที่แถว B5 ของชีท Main จนครบทุกชีทที่นำเข้า แต่หลังจากรัน VBA ข้อมูลที่ copy มา ไม่ถูกวางไว้ที่ B5 ต่อๆกันมา แต่จะข้ามไปวางที่ cell อื่นแทน รบกวนขอคำแนะนำด้วยครับ

Code: Select all


Sub copyunit()
    Dim s As Worksheet
    Dim M As Worksheet
    Set M = Sheets("Main")
    Dim lr As Long
    For Each s In Worksheets
        
        s.Range("A1:Y1").Copy
        
        lr = M.Range("B" & Rows.Count).End(xlUp).Row + 1
        M.Range("B5" & lr).PasteSpecial xlPasteValues
    Next s
    'MsgBox ("Completed")
End Sub

You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#2

Post by snasui »

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

Code: Select all

'Other code
For Each s In Worksheets
    If s.Name <> M.Name Then
        s.Range("A1:Y1").Copy
        lr = M.Range("c" & Rows.Count).End(xlUp).Row + 1
        M.Range("B" & lr).PasteSpecial xlPasteValues
    End If
Next s
'Other code
9KiTTi
Member
Member
Posts: 198
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

Re: สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#3

Post by 9KiTTi »

snasui wrote: Sun Oct 22, 2023 5:27 pm :D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
For Each s In Worksheets
    If s.Name <> M.Name Then 'ชื่อไม่ตรงกัน
        s.Range("A1:Y1").Copy
        lr = M.Range("c" & Rows.Count).End(xlUp).Row + 1 'แถวสุดท้ายที่มีข้อมูล
        M.Range("B" & lr).PasteSpecial xlPasteValues
    End If
Next s
'Other code
ขออนุญาตครับ เนื่องจากความผิดพลาดของผมเอง ผมได้เพิ่มแถวสูตรรวมไว้ที่แถว B32 : Z32 ทำให้copy ข้อมูลไปต่อที่แถว 32 พยายามปรับแก้แล้วครับ แต่ยังไม่ได้ รบกวนชี้แนะด้วยครับ ขอบพระคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#4

Post by snasui »

:D ปรับการกำหนดค่าให้กับตัวแปร lr เป็น lr = M.Range("C31").End(xlUp).Row + 1 ครับ
9KiTTi
Member
Member
Posts: 198
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

Re: สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#5

Post by 9KiTTi »

snasui wrote: Sun Oct 22, 2023 9:07 pm :D ปรับการกำหนดค่าให้กับตัวแปร lr เป็น lr = M.Range("C31").End(xlUp).Row + 1 ครับ
ผมไปปรับแก้ที่ตำแหน่งอื่นที่ไม่ใช่ตรงนี้ครับ ขอบพระคุณครับอาจารย์
9KiTTi
Member
Member
Posts: 198
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

Re: สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#6

Post by 9KiTTi »

ขออนุญาตครับ ผมได้เพิ่มคอลลัม์ C เข้ามา ทำให้รัน VB แล้วไม่สามารถ copy ข้อมูลจากชีทอื่นมาวางที่ชีท Main ตั้งแต่คอลัมม์ B ลงมาจนครบทุกชีทไม่ได้ รบกวนขอคำแนะด้วยครับ ขอบพระคุณครับ

Code: Select all

Sub copy_unit()
    Dim s As Worksheet
    Dim M As Worksheet
    Set M = Sheets("Main")
    Dim lr As Long
For Each s In Worksheets
    If s.Name <> M.Name Then 'ชื่อไม่ตรงกัน
        s.Range("A1:Z1").Copy
        lr = M.Range("C34").End(xlUp).Row + 1
        M.Range("B" & lr).PasteSpecial xlPasteValues
    End If
Next s
    'MsgBox ("Completed")
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#7

Post by snasui »

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

Code: Select all

'Other code
For Each s In Worksheets
    If s.Name <> M.Name Then 'ª×èÍäÁèµÃ§¡Ñ¹
        s.Range("A1:Z1").Copy
        lr = M.Range("C34").End(xlUp).Row + 1
        if lr < 5 then lr = 5
        M.Range("B" & lr).PasteSpecial Paste:=xlPasteValues
    End If
Next s
'Other code
9KiTTi
Member
Member
Posts: 198
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

Re: สอบถามปัญหาการใช้ VBA copy ข้อมูลจากชีทอื่นมาต่อท้ายแถวในชีทหลัก

#8

Post by 9KiTTi »

snasui wrote: Sat Mar 02, 2024 10:42 am :D เกิดจากหัว Report มีหลายบรรทัด มีการ Merge เอาไว้ การหาค่าบรรทัดว่างเพื่อวางข้อมูลจะผิดพลาด วิธีการด้านล่างเป็นการปรับตัวแปรให้เป็นบรรทัดที่พร้อมวางข้อมูลครับ

Code: Select all

'Other code
For Each s In Worksheets
    If s.Name <> M.Name Then 'ª×èÍäÁèµÃ§¡Ñ¹
        s.Range("A1:Z1").Copy
        lr = M.Range("C34").End(xlUp).Row + 1
        if lr < 5 then lr = 5
        M.Range("B" & lr).PasteSpecial Paste:=xlPasteValues
    End If
Next s
'Other code
ขอบพระคุณครับอาจารย์ ผมนำไปใช้ในงานอื่นได้พอดีเลยครับ
Post Reply