เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Page 1 of 2 12 LastLast
Results 1 to 10 of 12

Thread: การเลือกข้อมูลแบบต่างๆ โดย VBE

  1. #1
    abbtum
    Guest

    การเลือกข้อมูลแบบต่างๆ โดย VBE

    สวัสดีครับผู้รู้ทุกท่าน
    วันนี้มี 2 คำถามติดๆเลยครับ
    คำถามนี้ จะเกี่ยวกับการที่ผมต้องการ เลือกข้อมูลแล้วให้ VBE ทำการ copy ไปวางไว้อีก sheet หนึ่ง
    ปัญหาก็คือ บางครั้งข้อมูลมันก็อยู่คนละบรรทัดกันครับ
    ผมได้ส่งตัวอย่างมาด้วยโดยในตัวอย่างจะมีการเลือกพื้นที่ และ ผลลัพธ์ อยู่ 4 ตัวอย่างครับ
    ขออภัยที่ถามหลายคำถามครับ เพราะผมอยากทราบถึงคำสั่งที่แตกต่างกัน
    เพื่อที่ผมจะนำไปศึกษา และประยุกต์ต่อด้วยครับ
    รบกวนท่านผู้รู้ด้วยนะครับ

  2. #2
    vajra
    Guest
    ทุกข้อสามารถทำได้ โดย
    Copy ไปทั้งหมดแล้วลบแถว(แนวตั้ง,แนวนอน)ที่ไม่ต้องการออก

  3. #3
    abbtum
    Guest
    Quote Originally Posted by vajra View Post
    ทุกข้อสามารถทำได้ โดย
    Copy ไปทั้งหมดแล้วลบแถว(แนวตั้ง,แนวนอน)ที่ไม่ต้องการออก
    ขอขอบคุณครับ สำหรับคำตอบ แต่ว่า แต่ถ้าข้อมูลมันมีมากๆ (หลายคอลัมน์ต่อๆ ไปอีก)
    แล้วแต่ละครั้งมันก็ไม่แน่นอนด้วยครับ เช่น
    - บางครั้งเลือกข้อมูลติดกัน 3 บรรทัด แล้ว สั่ง copy ไป เพื่อไปทำต่อ
    - บางครั้งเลือกข้อมูลบรรทัดที่ 1,3,4,7,... (แบบไม่แน่นอน)ครับ
    ยกตัวอย่างนะครับ ปกติผมเลือกช่องแต่ คอลัมน์เดียว ผมก็จะ ใช้เม้าส์ จิ้ม เลือกไว้ (กดปุ่ม Clt ค้างไว้)
    จากนั้นก็กดปุ่ม (มาโคร) เพื่อให้ copy active cell แล้วไปแปะไว้ใน sheet ใหม่ จากนั้น ก็แทรกคอลัมน์
    สลับคอลัมน์ เพื่อให้ข้อมูลมีลักษณะ ตรงกับ แบบฟอร์มปลายทาง แล้วก็ copy ไปแปะที่ปลายทางครับ

    แต่มารอบนี้ ขอมูลมันไม่ใช่ช่องเดี่ยวๆ ครับ มันกลายเป็น บรรทัด (หลายๆ บรรทัด)
    พอมีการเลือกแบบเว้นบรรทัดปุ๊บ มาโครมันก็จะ copy แต่ข้อมูลช่องบนๆ ครับ
    ผมก็เลยงงครับ

    ขออภัยที่อธิบายไม่ชัดเจนนะครับ
    ผมอยากได้คำสั่งไว้ ศึกษาความแตกต่างด้วยครับว่า VBE มันทำงานยังไงครับ

    รบกวนผู้รู้หน่อยนะครับ

  4. #4
    สมเกียรติ
    Guest
    คอมพิวเตอร์จะทำงานได้ต่อเมื่อมีขั้นตอนที่ชัดเจนหรือทำตามเงื่อนไขที่กำหนดไว้แล้วชัดเจนครับ ถ้ายังไม่แน่นอน ก็ใช้ VBA ไม่ได้

  5. #5
    abbtum
    Guest
    สวัสดีครับ อาจารย์สมเกียรติ และคุณ Vajra
    ก่อนอื่นๆ ต้องขออภัย เรื่องความสับสนครับ ผมคุ้นๆ ว่าเคยอ่านเกี่ยวกับ ว่า “ไม่ต้องส่งข้อมูลหรือไฟล์จริงมา” ผมก็เลย นั่งทำ Sheet ตัวอย่างอันแรกส่งไปครับ คงจะยิ่งงงกันไปใหญ่เลย ว่าผมจะเอาไปทำอะไร

    คราวนี้ผมตัวตัวอย่างข้อมูลมาให้ช่วยดูนะครับ
    -คำถามคือ ถ้าผมเลือกข้อมูลจากคอลัมน์ C บรรทัดที่ 3,5,6 แล้วต้องการให้ VBE copy ทั้ง 3 Row (ดังกล่าว) ไปวางใน sheet ที่2 ต้องเขียนคำสั่งอย่างไรครับ

    (คราวนี้ขอคำถามเดียวครับ)
    เพราะว่าคุณ Vajra ให้เทคนิคเรื่องการตัดช่องไปแล้วผมจะไปจัดช่องเองอีกทีครับ

  6. #6
    vajra
    Guest
    Quote Originally Posted by abbtum View Post
    -คำถามคือ ถ้าผมเลือกข้อมูลจากคอลัมน์ C บรรทัดที่ 3,5,6 แล้วต้องการให้ VBE copy ทั้ง 3 Row (ดังกล่าว) ไปวางใน sheet ที่2 ต้องเขียนคำสั่งอย่างไรครับ

    ActiveSheet.Range("3:3,5:5,6:6").Copy (Sheets("Sheet2").Range("A1"))
    หรือ
    ActiveSheet.Range("C3,C5,C6").EntireRow.Copy (Sheets("Sheet2").Range("A1"))

  7. #7
    abbtum
    Guest
    Quote Originally Posted by vajra View Post
    ActiveSheet.Range("3:3,5:5,6:6").Copy (Sheets("Sheet2").Range("A1"))
    หรือ
    ActiveSheet.Range("C3,C5,C6").EntireRow.Copy (Sheets("Sheet2").Range("A1"))
    ขอบคุณครับ คุณ vajra
    คำสั่งที่ให้มา เป็นคำสั่ง ที่ทำตั้งแต่
    1 เลือก จากนั้น
    2 คัดลอก จากนั้น
    3 วาง
    แต่ถ้าเราต้องการ ที่จะ เลือกเอง จากนั้นให้ VBE รันตั้งแต่
    1. คัดลอก
    2. วาง
    อย่างที่ผมใช้อยู่จะเป็นแบบนี้ครับ

    Sub copyolddataPh1()
    Selection.Copy
    ActiveWindow.ActivateNext
    Sheets("Summary").Select
    Range("A4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    End Sub

    แต่ปัญหาก็คือ ถ้ามีการเลือกข้อมูลทั้ง Row คำสั่งของผมมันทำไม่ได้ครับ (เพราะมันจะคัดลอกเฉพาะช่องที่ได้เลือกไว้)มีคำสั่งที่ทำให้ copy ทั้ง EntireRow บ้างหรือไม่ครับ
    รบกวนหน่อยนะครับ

  8. #8
    workshop
    Guest
    Quote Originally Posted by abbtum View Post
    ขอบคุณครับ คุณ vajra
    คำสั่งที่ให้มา เป็นคำสั่ง ที่ทำตั้งแต่
    1 เลือก จากนั้น
    2 คัดลอก จากนั้น
    3 วาง
    แต่ถ้าเราต้องการ ที่จะ เลือกเอง จากนั้นให้ VBE รันตั้งแต่
    1. คัดลอก
    2. วาง
    อย่างที่ผมใช้อยู่จะเป็นแบบนี้ครับ

    Sub copyolddataPh1()
    Selection.Copy
    ActiveWindow.ActivateNext
    Sheets("Summary").Select
    Range("A4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    End Sub

    แต่ปัญหาก็คือ ถ้ามีการเลือกข้อมูลทั้ง Row คำสั่งของผมมันทำไม่ได้ครับ (เพราะมันจะคัดลอกเฉพาะช่องที่ได้เลือกไว้)มีคำสั่งที่ทำให้ copy ทั้ง EntireRow บ้างหรือไม่ครับ
    รบกวนหน่อยนะครับ
    ก็เลือกทั้ง entire row ก่อนจะรัน macro นี้ก็น่าจะได้แล้วนี่ครับ

  9. #9
    vajra
    Guest
    Quote Originally Posted by abbtum View Post
    แต่ถ้าเราต้องการ ที่จะ เลือกเอง จากนั้นให้ VBE รันตั้งแต่
    1. คัดลอก
    2. วาง
    เขียนแบบนี้น่าจะได้
    Code:
    Selection.EntireRow.Copy (Sheets("Sheet2").Range("A1"))

  10. #10
    สมเกียรติ
    Guest
    ผมดูสิ่งที่ต้องการแล้วคิดว่าน่าลองใช้ Macro Recorder บันทึกแล้วนำรหัสมาใช้ต่อ ถ้าติดขัดแล้วจึงมาถามกันดีกว่าครับ

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •