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

ตัวอย่าง 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
