Page 1 of 1

เปลี่ยนค่าเฉพาะที่ Filter ไว้เท่านั้น VBA

Posted: Fri Sep 01, 2023 9:48 am
by Jirawat namrach
รบกวนสอบถามหน่อยครับ พอดีว่ามีรายการ Bom จำนวนมาก ในแต่ละ Bom มี Part หลายรายการ ถ้าต้องการเปลี่ยน Part ใน Bom หากไม่ได้ Filter ไว้ ให้เปลี่ยนทุก Bom หาก Filter ไว้ ให้เปลี่ยนเฉพาะ Bom ที่ Filter เท่านั้น ต้องแก้ไข Code ยังไงครับ

Code: Select all

r = Range("c" & Rows.Count).End(xlUp).Offset(1, 0).Row
For i = 2 To r
    If Range("m1").Value = Range("c" & i).Value Then
    Range("c" & i).Value = Range("n1").Value
    Range("e" & i).Value = Range("m1").Value
    End If
Next i

Re: เปลี่ยนค่าเฉพาะที่ Filter ไว้เท่านั้น VBA

Posted: Sat Sep 02, 2023 1:25 pm
by snasui
:D กรุณาแนบตัวอย่างไฟล์พร้อม Code ที่เขียนมาเองแล้ว แสดงตัวอย่างคำตอบที่ต้องการให้เห็นเด่นชัด จะได้สะดวกในการตอบของเพื่อนสมาชิกครับ

Re: เปลี่ยนค่าเฉพาะที่ Filter ไว้เท่านั้น VBA

Posted: Mon Sep 04, 2023 8:43 am
by Jirawat namrach
ตามไฟล์แนบ ต้องการเปลี่ยน Code SX31000W02 (M1) เป็น SX31000W03 (N1) ถ้าหาก filter ไว้ในบาง Bom (A:A) ให้เปลี่ยนเฉพาะที่ filter ไว้เท่านั้น แต่หากไม่ได้ filter ไว้เลย ให้เปลี่ยนทุก Bom ครับ ขอคำแนะนำด้วยครับอาจารย์

Code: Select all

Sub updata()
Dim i As Long
Dim r As Long

Application.ScreenUpdating = False

r = Range("c" & Rows.Count).End(xlUp).Offset(1, 0).Row
For i = 2 To r
    If Range("m1").Value = Range("c" & i).Value Then
    Range("c" & i).Value = Range("n1").Value
    Range("e" & i).Value = Range("m1").Value
    End If
Next i

Application.ScreenUpdating = True
End Sub

Re: เปลี่ยนค่าเฉพาะที่ Filter ไว้เท่านั้น VBA

Posted: Mon Sep 04, 2023 10:39 am
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
For i = 2 To r
    If Range("c" & i).EntireRow.Hidden = False And Range("m1").Value = Range("c" & i).Value Then
        Range("c" & i).Value = Range("n1").Value
        Range("e" & i).Value = Range("m1").Value
    End If
Next i
'Other code

Re: เปลี่ยนค่าเฉพาะที่ Filter ไว้เท่านั้น VBA

Posted: Mon Sep 04, 2023 10:54 am
by Jirawat namrach
ขอบคุณมากครับอาจารย์