Page 1 of 1

Hide แถวโดย VBA

Posted: Wed Jun 26, 2019 4:46 pm
by March201711
คือได้ทำการบันทึก Marco แต่ต้องมาเปลี่ยนแถวที่จะ hide เองทุกวัน ต้องปรับสูตรใน code vba ใช้คำสั่งอะไรคะให้ vba รู้ได้เอง โยไม่ต้องเข้าไปแก้ในสูตรทุกวันและทุกครั้งไปค่ะ

เช่น ถ้าจะ Hide row ใน row ที่มีสีแดง โดยข้อความที่เป็นสีแดงจะมีเพิ่มหรือลดขึ้นทุกวัน ต้องมาปรับสูตรเปลียน cell ทุกครั้งไปค่ะ

Re: Hide แถวโดย VBA

Posted: Wed Jun 26, 2019 5:22 pm
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

Re: Hide แถวโดย VBA

Posted: Wed Jun 26, 2019 5:40 pm
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

Re: Hide แถวโดย VBA

Posted: Wed Jun 26, 2019 7:41 pm
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

Re: Hide แถวโดย VBA

Posted: Thu Jun 27, 2019 11:25 am
by March201711
ทำไม row 85 ถึง row 94 ไม่ hide ด้วยคะ ถ้าเพิ่มข้อมูลที่ link มาจาก sheet อื่น

Re: Hide แถวโดย VBA

Posted: Thu Jun 27, 2019 11:54 am
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

Re: Hide แถวโดย VBA

Posted: Thu Jun 27, 2019 3:56 pm
by March201711
ไฟล์ทำงานจริงมี 2ตารางค่ะ

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

ตารางล่าง ให้ hide แค่ถึง row ที่ 130
โดยที่ High light สีเหลือง ห้าม hide เลย เพราะมีข้อมูลอื่นๆอีก ปรับแก้สูตร vba อย่างไรคะ

Re: Hide แถวโดย VBA

Posted: Thu Jun 27, 2019 4:20 pm
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

Re: Hide แถวโดย VBA

Posted: Thu Jun 27, 2019 4:50 pm
by March201711
เกือบได้แล้วค่ะ ติดตรงที่ row 21,25,29 high light สีเหลือง hide ไปด้วยน่ะค่ะ

Re: Hide แถวโดย VBA

Posted: Thu Jun 27, 2019 5:03 pm
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

Re: Hide แถวโดย VBA

Posted: Thu Jun 27, 2019 7:33 pm
by March201711
ได้แล้วค่ะ ขอบคุณมากค่ะ K.Puriwutpokin :D