: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

รบกวนสอบถามเรื่อง Macro ค่ะ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

รบกวนสอบถามเรื่อง Macro ค่ะ

#1

Post by duangneth.ko »

ถึง คุณคนควน

หากข้อมูลเรามีบรรทัดจำนวนมากและมีหลาย sheet แต่บางบรรทัดไม่มีตัวเลข ซึ่งเราต้องการเขียน macro เพื่อให้ลบบรรทัดที่ไม่มีตัวเลขออก เพื่อให้การทำงานเร็วขึ้น เราต้องทำอย่างไรค่ะ ?? รบกวนขอคำแนะนำดังนี้ค่ะ
1. ต้องการ macro เพื่อลบบรรทัดที่ไม่มีตัวเลขเพื่อความรวดเร็วค่ะ
2. ต้องการ macro เพื่อซ่อนแถวที่ไม่มีตัวเลขเพื่อความรวดเร็วค่ะ
3. ต้องการ macro เพื่อโชว์แถวที่ซ่อนไว้ทั้งหมดค่ะ

ขอบคุณค่ะ
Duangneth Ko,
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#2

Post by snasui »

:D สิ่งที่ถามมานั้นสามารถทำการบันทึก Macro แล้วนำ Code ที่ได้มาปรับปรุงต่อไปเพื่อให้ใช้ได้กับหลาย ๆ ชีท ผู้ที่จะใช้ Macro แสดงว่าเข้าใจ สามารถปรับปรุงแก้ไขเองได้บ้าง จึงควรเขียนมาเองครับ ติดขัดตรงไหนก็ถามมาได้เรื่อย ๆ ครับ
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#3

Post by duangneth.ko »

ถึง คุณคนควน

ดิฉันต้องขอโทษด้วยค่ะ แต่ดิฉันไม่เคยเขียน Macro เพียงแต่ทราบว่าถ้าเขียน Macro แล้วสามารถทำได้ จึงรบกวนขอคำแนะนำจากคุณค่ะ

ขอบคุณค่ะ
จุ๊บ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#4

Post by snasui »

:D พยายามงดถามถึงผมโดยตรงนะครับ เนื่องจากท่านที่ทราบจะไม่เข้ามาตอบจะทำให้เสียเวลารอคอยนานหากผมไม่ว่าง

ผมได้แนะนำเพื่อนสมาชิกทั้งหลายที่เคยถามปัญหาเกี่ยวกับ Macro มาก่อนหน้านี้ว่าให้ทำมาก่อน แล้วมาสอบถามกันเฉพาะส่วนที่ติดขัด โดยผมไม่ทำตัวอย่างหรือตอบไปให้ก่อนซึ่งผมจำเป็นต้องปฏิบัติให้เสมอภาคกันกับทุก ๆ ท่านครับ

อย่างที่บอกไปแล้วว่าผู้ถามจำเป็นจะต้องมีความรู้เพื่อที่จะปรับปรุงเองได้ ซึ่งนั่นหมายความว่า สามารถบันทึก Macro เองได้ด้วย หากยังไม่เคยบันทึก Macro ผมขอแนะนำให้หาหนังสือมาอ่านก่อนดีกว่าครับ
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#5

Post by duangneth.ko »

ต้องขอโทษด้วยค่ะ ดิฉันพยายามค้นหาจาก Internet โดยดิฉันได้วิธีการเขียน code แต่เมื่อนำไปใช้จริง มันไม่สามารถใช้ได้ค่ะ ดิฉันไม่แน่ใจว่าติดตรงส่วนใด
ดิฉันทดลองคีย์ข้อมูล A1:A13 โดย A6:A9 ไม่มีมูลค่าค่ะ

Sub HideRows()
Dim cell As Range
For Each cell In Range("e:e")
If UCase(cell.Value) = "NO" Then
cell.EntireRow.Hidden = True
End If
Next
End Sub

จริง ๆ แล้ว สิ่งที่ดิฉันต้องการคือ การลบบรรทัดที่ไม่มีมูลค่าออกไป เนื่องจากข้อมูลดิฉันเยอะมากค่ะ ถ้าเขียนได้ มันจะช่วยประหยัดเวลาการทำงานได้มากเลยทีเดียว

รบกวนแนะนำด้วยค่ะ
จุ๊บ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#6

Post by snasui »

:D ช่วยแนบไฟล์ตัวอย่างพร้อม Code มาด้วยครับ จะได้ช่วยกันทดสอบได้
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#7

Post by duangneth.ko »

ไม่ทราบว่า File ที่แนบไปผ่านหรือเปล่าค่ะ เนื่องจากพอคลิกที่ตั้งกระทู้ แล้ว error ค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#8

Post by snasui »

:shock: คุณจุ๊บนำ Code มาใช้ตรง ๆ โดยไม่ปรับปรุงก็ย่อมใช้ไม่ได้ ซึ่ง Code ที่แนบมากับสิ่งที่ต้องการให้ทำงานอยู่คนละช่วงเซลล์ครับ เซลล์ที่ต้องการให้ตรวจสอบอยู่ในคอลัมน์ A แต่ Code ที่แนบมานั้นไปตรวจสอบค่าในคอลัมน์ E

นอกจากนี้การตรวจสอบจะตรวจสอบค่าที่เป็น 0 ไม่ใช่ตรวจสอบค่าที่มีค่าเท่ากับ NO

ลองปรับปรุง Code มาดูครับ โดยเปลี่ยน

Range("e:e") เป็น Range("A:A") และเปลี่ยน UCase(cell.Value) = "NO" เป็น cell.Value = 0
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#9

Post by duangneth.ko »

ได้แล้วค่ะ Hiderow แล้วถ้าเป็น Delete จุ๊บลองเปลี่ยน code ดู
Sub Deleterow()
Dim cell As Range
For Each cell In Range("a:a")
If UCase(cell.Value) = "0" Then
cell.EntireRow.Delete = True
End If
Next
End Sub
เหตุใด macro ถึงลบให้จุ๊บแค่บรรทัด A9 บรรทัดเดียวค่ะ บรรทัด A6:A8 ไม่ยอมลบค่ะ

รบกวนด้วยค่ะ
จุ๊บ
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#10

Post by duangneth.ko »

รบกวนช่วยแนะนำหนังสือด้วยได้หรือเปล่าค่ะ จุ๊บจะได้หามาศึกษาเพิ่มเติม เกรงใจค่ะ

ขอบคุณค่ะ
จุ๊บ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#11

Post by snasui »

:D การลบไม่เหมือนการซ่อนหรือยกเลิกการซ่อนครับ ปกติเมื่อลบด้วยการ Loop จะลบจากล่างขึ้นบนหรือจากขวาไปซ้าย Code ถึงจะทำงานถูกต้อง แต่ถ้าใช้เทคนิคการหา Special cells เช่น เซลล์ว่างก็สามารถลบเซลล์ว่างทั้งหมดได้พร้อมกันทันที

ตัวอย่างการปรับปรุง Code เพื่อซ่อนบรรทัดที่มีค่าเป็น 0

Code: Select all

Sub HideRows()
    Dim cell As Range
    Dim AllCell As Range
    With Sheets("Sheet1")
        Set AllCell = .Range("A1", .Range( _
            "A" & Rows.Count).End(xlUp))
    End With
    For Each cell In AllCell
        If cell = 0 Then
            cell.EntireRow.Hidden = True
        End If
    Next
End Sub
ตัวอย่างการลบบรรทัดที่มีค่าเป็น 0

Code: Select all

Sub Deleterow()
    Dim cell As Range
    Dim AllCell As Range
    With Sheets("Sheet1")
        Set AllCell = .Range("A1", .Range( _
            "A" & Rows.Count).End(xlUp))
    End With
    For Each cell In AllCell
        If cell = 0 Then
            cell.ClearContents
        End If
    Next
    AllCell.SpecialCells(xlCellTypeBlanks) _
        .EntireRow.Delete
End Sub
สำหรับหนังสือลองดูที่นี่ครับ http://www.spreadsheetpage.com/index.php/book/C45/
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#12

Post by duangneth.ko »

ขอบคุณมากค่ะ เดี๋ยวจุ๊บจะลองทำดูน๊ะค่ะ เมื่อสักครู่ออกไปหาซื้อหนังสือมา แต่ยังไม่ได้ค่ะ

จุ๊บ
User avatar
ChoBkuN
Member
Member
Posts: 239
Joined: Tue Nov 29, 2011 3:43 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#13

Post by ChoBkuN »

สุดยอด
โปรแกรมบัญชีบางตัวเมื่อ export GL ออกมาแล้ว มักจะพบปัญหา รายงานออกมาบรรทัดเว้นบรรทัด
ถ้าใช้วิธีนี้ ก็สามารถแก้ปัญหาได้

แต่เดิมใช้เพิ่มช่องลากเลขจนสุด แล้ว filter เอา blank ออก
ขอบคุณครับ
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#14

Post by duangneth.ko »

ทำไมข้อมูลที่ Post ส่วนท้ายถึงหายไปค่ะ เพราะล่าสุด จุ๊บ เปิดดูวันอังคาร ยังมี Macro ที่เขียนเรื่องการลบบรรทัดทั้ง Sheet เลยค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#15

Post by snasui »

:D ฟอรัมถูก Restore มาใหม่เนื่องจากมีปัญหาครับ ต้องขออภัยสำหรับกรณีดังกล่าวครับ
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#16

Post by duangneth.ko »

จุ๊บไม่ Save ตัว Macro ที่ลบบรรทัด แบบทั้ง Sheet ไว้เลยค่ะ รบกวนขออีกครั้งได้ ??? ขอบคุณค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#17

Post by snasui »

:) ลองตาม Code นี้ครับ

Code: Select all

Sub Deleterow()
    Dim cell As Range
    Dim AllCell As Range
    Dim wsh As Worksheet
    On Error Resume Next
    For Each wsh In Worksheets
        With wsh
            Set AllCell = wsh.Range("A1", wsh.Range( _
                "A" & Rows.Count).End(xlUp))
        End With
        For Each cell In AllCell
            If cell = 0 Then
                cell.ClearContents
            End If
        Next
        AllCell.SpecialCells(xlCellTypeBlanks) _
            .EntireRow.Delete
    Next wsh
End Sub
duangneth.ko
Member
Member
Posts: 16
Joined: Sat Jun 05, 2010 9:18 pm

Re: รบกวนสอบถามเรื่อง Macro ค่ะ

#18

Post by duangneth.ko »

ขอบคุณค่ะ
Post Reply