snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#1
Post
by March201711 » Wed Jun 26, 2019 4:46 pm
คือได้ทำการบันทึก Marco แต่ต้องมาเปลี่ยนแถวที่จะ hide เองทุกวัน ต้องปรับสูตรใน code vba ใช้คำสั่งอะไรคะให้ vba รู้ได้เอง โยไม่ต้องเข้าไปแก้ในสูตรทุกวันและทุกครั้งไปค่ะ
เช่น ถ้าจะ Hide row ใน row ที่มีสีแดง โดยข้อความที่เป็นสีแดงจะมีเพิ่มหรือลดขึ้นทุกวัน ต้องมาปรับสูตรเปลียน cell ทุกครั้งไปค่ะ
Attachments
Hide.xlsm
(20.19 KiB) Downloaded 10 times
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#2
Post
by puriwutpokin » Wed Jun 26, 2019 5:22 pm
ครั้งหน้าแอดโค้ดไว้ที่เว็บด้วยครับตามตัวอย่างครับ
ปรับโค้ดตามนี้ครับ
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
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#3
Post
by March201711 » Wed Jun 26, 2019 5:40 pm
ไม่ใช่ค่ะ เช่น
จะ 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
snasui
Site Admin
Posts: 31214 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Wed Jun 26, 2019 7:41 pm
ตัวอย่าง 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
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#5
Post
by March201711 » Thu Jun 27, 2019 11:25 am
ทำไม row 85 ถึง row 94 ไม่ hide ด้วยคะ ถ้าเพิ่มข้อมูลที่ link มาจาก sheet อื่น
Attachments
Hide2.xlsm
(32.22 KiB) Downloaded 6 times
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#6
Post
by puriwutpokin » Thu Jun 27, 2019 11:54 am
ลองปรับเป็น
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
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#7
Post
by March201711 » Thu Jun 27, 2019 3:56 pm
ไฟล์ทำงานจริงมี 2ตารางค่ะ
ถ้ามี 2 ตาราง ตารางบนให้ hide แค่ถึง row ที่ 20
ตารางล่าง ให้ hide แค่ถึง row ที่ 130
โดยที่ High light สีเหลือง ห้าม hide เลย เพราะมีข้อมูลอื่นๆอีก ปรับแก้สูตร vba อย่างไรคะ
Attachments
Hide3.xlsm
(34.47 KiB) Downloaded 8 times
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#8
Post
by puriwutpokin » Thu Jun 27, 2019 4:20 pm
ตัวอย่างการปรับโค้ดครับ
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
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#9
Post
by March201711 » Thu Jun 27, 2019 4:50 pm
เกือบได้แล้วค่ะ ติดตรงที่ row 21,25,29 high light สีเหลือง hide ไปด้วยน่ะค่ะ
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#10
Post
by puriwutpokin » Thu Jun 27, 2019 5:03 pm
ปรับเป็น
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
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#11
Post
by March201711 » Thu Jun 27, 2019 7:33 pm
ได้แล้วค่ะ ขอบคุณมากค่ะ K.Puriwutpokin