: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

สอบถามเรื่องการใช้autofilterของvbaครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

สอบถามเรื่องการใช้autofilterของvbaครับ

#1

Post by naphat456 »

เนื่องจากตอนนี้ผมทำโปรเจคอยู่ครับ โดยผมนั้นทำเรื่องเกี่ยวกับDatabaseครับ ในตัวDatabaseของผมนั้น ผมต้องการให้มันFilterรายการสินค้าที่จะต้องส่งในอีก 3 วันข้างหน้า หน้าซึ่งตัวDatabaseนั้นมีหน้าตาคร่าวๆประมาณนี้ ย้ำนะครับว่าคร่าวๆ
Image


จะเห็นได้ว่าสินค้าแต่ละตัวมีกำหนดส่งสินค้าตามวันเวลาที่เขียนไว้ จุดประสงค์ของผมคือใช้Macroเป็นตัวช่วยในการfilterให้มันแสดงว่าอีกสามวันข้างหน้าสินค้าตัวไหนจะต้องนำออกไปส่งให้ลูกค้า
ซึ่งผมต้องเขียนโค้ดออกมาในรูปไหนครับ เพราะที่ผมเขียนมาพอรันแล้วมันไม่ขึ้นครับ

Code: Select all

Sub Alert()
    Dim i As Integer, dayy As Variant
    Dim row As Long, x As Integer
    Dim ws As Worksheet
    Set ws = Worksheets("EXam")
    row = ws.Cells(ws.Rows.Count, "A").End(xlUp).row
    x = 2
    For i = 2 To row
        dayy = DateDiff("d", Date, ws.Range("B" & i).Value)
        If dayy = 3 Then
        ws.Range("$B$2:$B$300").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(
    End If
    Next i
End Sub
เนื่องจากผมไม่มีทักษะด้านVBAเลย พอเข้าใจแค่เล็กๆน้อย และโค้ดนี้ผมไม่ได้เขียนขึ้นมาเอง จึงอยากจะขอคำแนะนำหน่อยครับ
You do not have the required permissions to view the files attached to this post.
Last edited by naphat456 on Mon Dec 11, 2017 7:48 pm, edited 1 time in total.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#2

Post by puriwutpokin »

naphat456 wrote:เนื่องจากตอนนี้ผมทำโปรเจคอยู่ครับ โดยนี้ผมนั้นทำเรื่องเกี่ยวกับDatabaseครับ โดยในตัวDatabaseของผมนั้น ผมต้องการให้มันFilterรายการสินค้าที่จะต้องส่งในอีก 3 วันข้างหน้า หน้าซึ่งตัวDatabaseนั้นมีหน้าตาคร่าวๆประมาณนี้ ย้ำนะครับว่าคร่าวๆ 555555
Image


จะเห็นได้ว่าสินค้าแต่ละตัวมีกำหนดส่งสินค้าตามวันเวลาที่เขียนไว้ จุดประสงค์ของผมคือใช้Macroเป็นตัวช่วยในการfilterให้มันแสดงว่าอีกสามวันข้างหน้าสินค้าตัวไหนจะต้องนำออกไปส่งให้ลูกค้า งงกันไหมครับ
ซึ่งผมต้องเขียนโค้ดออกมาในรูปไหนครับ เพราะที่ผมเขียนมาพอรันแล้วมันไม่ขึ้นครับ

Code: Select all

Sub Alert()
    Dim i As Integer, dayy As Variant
    Dim row As Long, x As Integer
    Dim ws As Worksheet
    Set ws = Worksheets("EXam")
    row = ws.Cells(ws.Rows.Count, "A").End(xlUp).row
    x = 2
    For i = 2 To row
        dayy = DateDiff("d", Date, ws.Range("B" & i).Value)
        If dayy = 3 Then
        ws.Range("$B$2:$B$300").AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(
    End If
    Next i
End Sub
เนื่องจากผมไม่มีทักษะด้านVBAเลย พอเข้าใจแค่เล็กๆน้อย และโค้ดนี้ผมไม่ได้เขียนขึ้นมาเอง จึงอยากจะขอคำแนะนำหน่อยครับ
ใช้ภาษา แชทผิด กฏข้อ1 ของบอร์ดครับ แก้ไขด้วยครับ แล้ว ควรจะแนบไฟล์ตัวอย่างมาด้วยครับ
:shock: :roll: :D
naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#3

Post by naphat456 »

puriwutpokin wrote: ใช้ภาษา แชทผิด กฏข้อ1 ของบอร์ดครับ แก้ไขด้วยครับ แล้ว ควรจะแนบไฟล์ตัวอย่างมาด้วยครับ
แก้ให้แล้วนะครับ ต้องขออภัยด้วยที่ไม่ได้ศึกษากฎของเว็บให้ดีก่อน ส่วนไฟล์แนบผมแนบไปให้แล้วนะครับ ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#4

Post by snasui »

naphat456 wrote:
puriwutpokin wrote: ใช้ภาษา แชทผิด กฏข้อ1 ของบอร์ดครับ แก้ไขด้วยครับ แล้ว ควรจะแนบไฟล์ตัวอย่างมาด้วยครับ
แก้ให้แล้วนะครับ ต้องขออภัยด้วยที่ไม่ได้ศึกษากฎของเว็บให้ดีก่อน ส่วนไฟล์แนบผมแนบไปให้แล้วนะครับ ขอบคุณครับ
:D แนบไฟล์ที่มี Macro ที่เขียนเองแล้วมาด้วย จะได้ตอบต่อไปจากนั้นครับ

ไฟล์ที่จะแนบ Macro ได้จะต้องมีนามสกุลเป็น .xlsm, .xlsb เช่นนี้เป็นต้น ไม่สามารถแนบ Macro กับไฟล์ที่มีนามสกุลเป็น .xlsx ได้ครับ
naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#5

Post by naphat456 »

snasui wrote: :D แนบไฟล์ที่มี Macro ที่เขียนเองแล้วมาด้วย จะได้ตอบต่อไปจากนั้นครับ

ไฟล์ที่จะแนบ Macro ได้จะต้องมีนามสกุลเป็น .xlsm, .xlsb เช่นนี้เป็นต้น ไม่สามารถแนบ Macro กับไฟล์ที่มีนามสกุลเป็น .xlsx ได้ครับ
ขออภัยด้วยนะครับ ผมมือใหม่จริงๆ ไม่ทราบเรื่องนี้เลย ตอนนี้ผมแนบไฟล์ใหม่ไปให้แล้วนะครับ รบกวนช่วยตรวจสอบให้หน่อยนะครับ โค้ดออาจจะมีข้อผิดพลาดอยู่เยอะครับ เพราะผมก็ไม่ค่อยรู้เรื่องนี้ อยากรบกวนให้ทุกท่านช่วยให้คำแนะนำด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#6

Post by puriwutpokin »

ปรับเป็นโค้ดนี้ดูครับ

Code: Select all

Sub Alert()
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False
Dim LastRow As Long, FilterRange As Range
LastRow = _
Cells.Find(What:="*", After:=Range("b2"), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
Set FilterRange = Range("b2:b" & LastRow)
FilterRange.AutoFilter Field:=2, Criteria1:=">" & CDbl(Date + 2)
Set FilterRange = Nothing
Application.ScreenUpdating = True
End Sub
:shock: :roll: :D
naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#7

Post by naphat456 »

puriwutpokin wrote:ปรับเป็นโค้ดนี้ดูครับ

Code: Select all

Sub Alert()
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False
Dim LastRow As Long, FilterRange As Range
LastRow = _
Cells.Find(What:="*", After:=Range("b2"), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
Set FilterRange = Range("b2:b" & LastRow)
FilterRange.AutoFilter Field:=2, Criteria1:=">" & CDbl(Date + 2)
Set FilterRange = Nothing
Application.ScreenUpdating = True
End Sub
ได้แล้วครับ ขอบคุณมากๆเลยนะครับ ไม่งั้นผมก็ไม่รู้ว่าต้องทำยังไง อยากถามอีกอย่างครับ ถ้าอยากศึกษาเกี่ยวกับVBAจะมีแนะนำแหล่งความรู้ได้จากที่ไหนบ้างครับ เพราะว่าVBAน่าสนใจดีครับ
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#8

Post by puriwutpokin »

ใน​ Google​ หรือที่เว็บนี้​ แกะและทดสอบบ่อยๆ​ ครับ​ ลองผิดเพื่อที่จะถูกครับ
:shock: :roll: :D
naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#9

Post by naphat456 »

แล้วถ้าสมมุติผมต้องการย้ายกำหนดวันส่งสินค้าไปไว้คอลั่ม7ผมต้องแก้โค้ดตรงไหนบ้างครับ
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#10

Post by puriwutpokin »

naphat456 wrote:แล้วถ้าสมมุติผมต้องการย้ายกำหนดวันส่งสินค้าไปไว้คอลั่ม7ผมต้องแก้โค้ดตรงไหนบ้างครับ
แก้จากคอลัมน์ B เป็น G ครับตามโค้ดนี้ครับ

Code: Select all

Sub Alert()
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False
Dim LastRow As Long, FilterRange As Range
LastRow = _
Cells.Find(What:="*", After:=Range("g2"), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
Set FilterRange = Range("g2:g" & LastRow)
FilterRange.AutoFilter Field:=2, Criteria1:=">" & CDbl(Date + 2)
Set FilterRange = Nothing
Application.ScreenUpdating = True
End Sub
:shock: :roll: :D
naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#11

Post by naphat456 »

puriwutpokin wrote:
naphat456 wrote:แล้วถ้าสมมุติผมต้องการย้ายกำหนดวันส่งสินค้าไปไว้คอลั่ม7ผมต้องแก้โค้ดตรงไหนบ้างครับ
แก้จากคอลัมน์ B เป็น G ครับตามโค้ดนี้ครับ

Code: Select all

Sub Alert()
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False
Dim LastRow As Long, FilterRange As Range
LastRow = _
Cells.Find(What:="*", After:=Range("g2"), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
Set FilterRange = Range("g2:g" & LastRow)
FilterRange.AutoFilter Field:=2, Criteria1:=">" & CDbl(Date + 2)
Set FilterRange = Nothing
Application.ScreenUpdating = True
End Sub
สอบถามนิดนึงครับ จากโค้ดที่ให้มา ทำไมตอนรันแล้วมันติดสินค้าที่มากกว่า 3 วันมาด้วยครับ ผมแค่ต้องการในอีกสามวันข้างหน้าเฉยๆอะครับ ต้องมีการปรับโค้ดอะไรหรือเปล่าครับ

พอรันแล้วเป้นตามภาพเลยครับ ซึ่งในความเป็นจริงแล้วมันควรจะเป็นวันที่ 15/01/2018 เท่านั้นครับ รบกวนพี่ๆช่วยผมหน่อยครับ
Image
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามเรื่องการใช้autofilterของvbaครับ

#12

Post by puriwutpokin »

naphat456 wrote:
puriwutpokin wrote:
naphat456 wrote:แล้วถ้าสมมุติผมต้องการย้ายกำหนดวันส่งสินค้าไปไว้คอลั่ม7ผมต้องแก้โค้ดตรงไหนบ้างครับ
แก้จากคอลัมน์ B เป็น G ครับตามโค้ดนี้ครับ

Code: Select all

Sub Alert()
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False
Dim LastRow As Long, FilterRange As Range
LastRow = _
Cells.Find(What:="*", After:=Range("g2"), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
Set FilterRange = Range("g2:g" & LastRow)
FilterRange.AutoFilter Field:=2, Criteria1:=">" & CDbl(Date + 2)
Set FilterRange = Nothing
Application.ScreenUpdating = True
End Sub
สอบถามนิดนึงครับ จากโค้ดที่ให้มา ทำไมตอนรันแล้วมันติดสินค้าที่มากกว่า 3 วันมาด้วยครับ ผมแค่ต้องการในอีกสามวันข้างหน้าเฉยๆอะครับ ต้องมีการปรับโค้ดอะไรหรือเปล่าครับ

พอรันแล้วเป้นตามภาพเลยครับ ซึ่งในความเป็นจริงแล้วมันควรจะเป็นวันที่ 15/01/2018 เท่านั้นครับ รบกวนพี่ๆช่วยผมหน่อยครับ
Image
แก้ไขการใช้ภาษาแชทด้วยครับ อะ ควรใช้เป็นครับ และ นิดนีง ควรใช้เป็น นิดหนึ่งครับ เพื่อให้เป็นไปตามกฎของบอร์ดนี้ครับ
ปรับเป็น

Code: Select all

'Other code...
FilterRange.AutoFilter Field:=2, Criteria1:="=" & Date + 3
'Other code...
:shock: :roll: :D
Post Reply