: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

Hide แถวโดย VBA

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Hide แถวโดย VBA

#1

Post by March201711 »

คือได้ทำการบันทึก Marco แต่ต้องมาเปลี่ยนแถวที่จะ hide เองทุกวัน ต้องปรับสูตรใน code vba ใช้คำสั่งอะไรคะให้ vba รู้ได้เอง โยไม่ต้องเข้าไปแก้ในสูตรทุกวันและทุกครั้งไปค่ะ

เช่น ถ้าจะ Hide row ใน row ที่มีสีแดง โดยข้อความที่เป็นสีแดงจะมีเพิ่มหรือลดขึ้นทุกวัน ต้องมาปรับสูตรเปลียน cell ทุกครั้งไปค่ะ
Attachments
Hide.xlsm
(20.19 KiB) Downloaded 10 times
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: Hide แถวโดย VBA

#2

Post by puriwutpokin »

ครั้งหน้าแอดโค้ดไว้ที่เว็บด้วยครับตามตัวอย่างครับ
ปรับโค้ดตามนี้ครับ

Code: Select all

Sub Hide_rowText()
    Dim ws As Worksheet, headerRow As Range, cel As Range
    Set ws = Sheet1
    Set headerRow = ws.Range("f5:f100")
    For Each cel In headerRow.Cells
        cel.EntireRow.Hidden = (cel.Font.Color = RGB(255, 0, 0))
    Next cel
End Sub
:shock: :roll: :D
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: Hide แถวโดย VBA

#3

Post by March201711 »

ไม่ใช่ค่ะ เช่น

จะ hide row ตั้งแต่ Rowที่ 23 ถึง Rowที่ 80 โดยดูว่าข้อความที่เจอตัวสุดท้ายอยู่ที่ row ไหน ในตัวอย่างนี้ อยู่ที่ row 22 ก็ให้ vba เลื่อนลงมา 1 บรรทัด โดยทำการ hide row ถึง row 80 ค่ะ

Code: Select all

 Sub Hide_rowText()
    Range("B10").Select
    Selection.End(xlDown).Select
    Rows("23:23").Select
    Range("B23").Activate
    Range(Selection, Selection.End(xlDown)).Select
    Rows("23:80").Select
    Range("B23").Activate
    Selection.EntireRow.Hidden = True
    Range("B3").Select
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Hide แถวโดย VBA

#4

Post by snasui »

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

Code: Select all

On Error Resume Next
With Worksheets("Sheet1")
    .Columns(1).Cells.EntireRow.Hidden = False
    .Range(.Range("b10").End(xlDown), .Range("b" & .Rows.Count) _
        .End(xlUp)).SpecialCells(xlCellTypeBlanks) _
        .EntireRow.Hidden = True
End With
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: Hide แถวโดย VBA

#5

Post by March201711 »

ทำไม row 85 ถึง row 94 ไม่ hide ด้วยคะ ถ้าเพิ่มข้อมูลที่ link มาจาก sheet อื่น
Attachments
Hide2.xlsm
(32.22 KiB) Downloaded 6 times
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: Hide แถวโดย VBA

#6

Post by puriwutpokin »

ลองปรับเป็น

Code: Select all

Sub Hide_rowText()
    Dim c As Range
    For Each c In ActiveSheet.Range("b5:b" & Range("b" & Rows.Count).End(xlUp).Row)
    If c = "" Then c.EntireRow.Hidden = True
    Next c
End Sub
:shock: :roll: :D
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: Hide แถวโดย VBA

#7

Post by March201711 »

ไฟล์ทำงานจริงมี 2ตารางค่ะ

ถ้ามี 2 ตาราง ตารางบนให้ hide แค่ถึง row ที่ 20

ตารางล่าง ให้ hide แค่ถึง row ที่ 130
โดยที่ High light สีเหลือง ห้าม hide เลย เพราะมีข้อมูลอื่นๆอีก ปรับแก้สูตร vba อย่างไรคะ
Attachments
Hide3.xlsm
(34.47 KiB) Downloaded 8 times
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: Hide แถวโดย VBA

#8

Post by puriwutpokin »

ตัวอย่างการปรับโค้ดครับ

Code: Select all

Sub Hide_rowText3()
    Dim f As Range
    For Each f In ActiveSheet.Range("e3:e20", "e31:e130")
    If f = "" Then f.EntireRow.Hidden = True
    Next f
End Sub
:shock: :roll: :D
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: Hide แถวโดย VBA

#9

Post by March201711 »

เกือบได้แล้วค่ะ ติดตรงที่ row 21,25,29 high light สีเหลือง hide ไปด้วยน่ะค่ะ
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: Hide แถวโดย VBA

#10

Post by puriwutpokin »

ปรับเป็น

Code: Select all

Sub Hide_rowText3()
    Dim f As Range
    For Each f In ActiveSheet.Range("e3:e20,e31:e130")
    If f = "" Then f.EntireRow.Hidden = True
    Next f
End Sub
:shock: :roll: :D
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: Hide แถวโดย VBA

#11

Post by March201711 »

ได้แล้วค่ะ ขอบคุณมากค่ะ K.Puriwutpokin :D
Post Reply