🔊 โปรดทราบ Image
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ดครับ Image
  2. การสมัครสมาชิกเพื่อโพสต์คำถาม ดาวน์โหลดไฟล์แนบไปศึกษา ทำตามขั้นตอนด้านล่างครับ
    1. สมัครสมาชิก ดูขั้นตอนตาม Link นี้ครับ => สมัครสมาชิก กรณีลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่นี่ครับ => Reset รหัสผ่านImage
    2. Login เข้าระบบโดยคลิก Login ตรงมุมขวาบนของหน้านี้ Image กรณีมีปัญหาในการเข้าใช้งาน คลิก Link นี้เพื่อแจ้งผู้ดูแลระบบครับ => ติดต่อผู้ดูแลระบบ
  3. เมื่อ Login แล้วสามารถกำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษได้ที่ Link นี้ครับ => ตั้งค่าส่วนตัว Image
  4. วิธีการตั้งและตอบกระทู้ดูได้ที่ Link นี้ครับ => วิธีการตั้งและตอบกระทู้ Image
  5. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ Link นี้ครับ => จัดรูปแบบตัวอักษร และสามารถกำหนดขนาดตัวอักษรใน Browser ได้ที่นี่ครับ => กำหนดขนาดตัวอักษรใน Browser Image

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

ฟอรั่มถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถาม-ตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบ ต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. อธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. ควรแนบตัวอย่างไฟล์มาที่ฟอรั่มนี้เพื่อเพิ่มความสะดวกในการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่น นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. แจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

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

#1

Post by naphat456 » Mon Dec 11, 2017 7:06 pm

เนื่องจากตอนนี้ผมทำโปรเจคอยู่ครับ โดยผมนั้นทำเรื่องเกี่ยวกับ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
Gold
Gold
Posts: 1441
Joined: Fri Jan 04, 2013 9:49 pm

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

#2

Post by puriwutpokin » Mon Dec 11, 2017 7:11 pm

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 ของบอร์ดครับ แก้ไขด้วยครับ แล้ว ควรจะแนบไฟล์ตัวอย่างมาด้วยครับ
:roll: สูตรที่ต้องกด Ctrl+Shift+Enter เพื่อให้สูตร Array นั้นทำงาน

naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

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

#3

Post by naphat456 » Mon Dec 11, 2017 7:50 pm

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

User avatar
snasui
Site Admin
Site Admin
Posts: 23141
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#4

Post by snasui » Mon Dec 11, 2017 7:55 pm

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 » Tue Dec 12, 2017 4:45 pm

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
Gold
Gold
Posts: 1441
Joined: Fri Jan 04, 2013 9:49 pm

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

#6

Post by puriwutpokin » Tue Dec 12, 2017 5:17 pm

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

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
:roll: สูตรที่ต้องกด Ctrl+Shift+Enter เพื่อให้สูตร Array นั้นทำงาน

naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

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

#7

Post by naphat456 » Tue Dec 12, 2017 5:41 pm

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
Gold
Gold
Posts: 1441
Joined: Fri Jan 04, 2013 9:49 pm

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

#8

Post by puriwutpokin » Tue Dec 12, 2017 5:47 pm

ใน​ Google​ หรือที่เว็บนี้​ แกะและทดสอบบ่อยๆ​ ครับ​ ลองผิดเพื่อที่จะถูกครับ
:roll: สูตรที่ต้องกด Ctrl+Shift+Enter เพื่อให้สูตร Array นั้นทำงาน

naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

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

#9

Post by naphat456 » Wed Dec 13, 2017 4:00 pm

แล้วถ้าสมมุติผมต้องการย้ายกำหนดวันส่งสินค้าไปไว้คอลั่ม7ผมต้องแก้โค้ดตรงไหนบ้างครับ

User avatar
puriwutpokin
Gold
Gold
Posts: 1441
Joined: Fri Jan 04, 2013 9:49 pm

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

#10

Post by puriwutpokin » Wed Dec 13, 2017 4:57 pm

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
:roll: สูตรที่ต้องกด Ctrl+Shift+Enter เพื่อให้สูตร Array นั้นทำงาน

naphat456
Member
Member
Posts: 6
Joined: Mon Dec 11, 2017 7:00 pm

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

#11

Post by naphat456 » Fri Jan 12, 2018 5:51 pm

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
Gold
Gold
Posts: 1441
Joined: Fri Jan 04, 2013 9:49 pm

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

#12

Post by puriwutpokin » Fri Jan 12, 2018 7:05 pm

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...
:roll: สูตรที่ต้องกด Ctrl+Shift+Enter เพื่อให้สูตร Array นั้นทำงาน

Post Reply