Page 1 of 1

สอบถาม CodeVB Show ดึงข้อมูลมาแสดงตามเงื่อนไข

Posted: Mon Mar 10, 2025 10:38 pm
by tigerwit
จากไฟล์ที่แนบมา

Code: Select all

Sub Recall()
Dim i As Long

With Worksheets("BaiBake")
    If Application.CountIfs(Worksheets("Product").Range("D:D"), Worksheets("BaiBake").Range("M10")) = 0 Then
        MsgBox ("ไม่มีเลขที่สั่งซื้อนี้ กรุณาตรวจสอบ")
            Range("M10").ClearContents
            Range("M10").Select
    Exit Sub
    End If
End With

With Worksheets("BaiBake")
    If Range("M10").Value = "" Then
        Range("M10").Select
        MsgBox ("คุณยังไม่กรอกเลขที่บันทึก !!!")
        Exit Sub
    End If
'    If Range("K1").Value > 30 Then
'      MsgBox ("เบิกได้ครั้งหนึ่ง ไม่เกิน 30 รายการ กรุณาเลือกใหม่")
'      Range("M10").Select
'    Exit Sub
'    End If
End With

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("E8:F37").ClearContents
    For i = 2 To 5000
        If Sheets("Product").Range("D" & i).Value = Sheets("BaiBake").Range("M10") Then
        
            Sheets("Product").Range("G" & i).Copy
            Sheets("BaiBake").Range("E" & Rows.Count).End(xlUp).Offset(1, 0) _
            .PasteSpecial xlPasteValues
            
            Sheets("Product").Range("J" & i).Copy
            Sheets("BaiBake").Range("F" & Rows.Count).End(xlUp).Offset(1, 0) _
            .PasteSpecial xlPasteValues
        End If
        Next i
        Range("M5").Select
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
End Sub

ต้องการดึงข้อมูลจากชีท Product ไปวางที่ชีท BaiBake โดยเลือกจากเลขที่ชุดเบิก
และมีเงื่อนไขว่า หากมีรายการเกิน 30 รายการ
ให้เอาไปแค่ 30 รายการต้องปรับโค๊ดอย่างไรครับ

Re: สอบถาม CodeVB Show ดึงข้อมูลมาแสดงตามเงื่อนไข

Posted: Tue Mar 11, 2025 7:28 am
by snasui
tigerwit wrote: Mon Mar 10, 2025 10:38 pm หากมีรายการเกิน 30 รายการ
ให้เอาไปแค่ 30 รายการต้องปรับโค๊ดอย่างไรครับ
:D ตัวอย่าง Code ครับ

Code: Select all

'Other code
If Sheets("Product").Range("D" & i).Value = Sheets("BaiBake").Range("M10") Then

    Sheets("Product").Range("G" & i).Copy
    Sheets("BaiBake").Range("E" & Rows.Count).End(xlUp).Offset(1, 0) _
    .PasteSpecial xlPasteValues
    
    Sheets("Product").Range("J" & i).Copy
    Sheets("BaiBake").Range("F" & Rows.Count).End(xlUp).Offset(1, 0) _
    .PasteSpecial xlPasteValues
    
    Application.CutCopyMode = False
    If i >= 30 Then Exit For
End If
'Other code

Re: สอบถาม CodeVB Show ดึงข้อมูลมาแสดงตามเงื่อนไข

Posted: Tue Mar 11, 2025 8:46 am
by tigerwit
ขอบคุณครับ
ได้ปรับตามคำแนะนำแล้ว พบปัญหาว่า
หากเลือกตั้งเลขที่ 7/2568 ขึ้นไป มันจะดึงข้อมูลมาได้รายการเดียว มาไม่หมด
ส่วนรายการเลขที่ 1/2568 จนถึง 6/2568 ได้มาครบปกติ
ขอคำแนะนำอีกครั้งครับผม

Re: สอบถาม CodeVB Show ดึงข้อมูลมาแสดงตามเงื่อนไข

Posted: Tue Mar 11, 2025 9:10 am
by snasui
:D ประกาศตัวแปรเพิ่มครับ

เป็น

Code: Select all

Dim i As Long, j As Integer
'Other code
If Sheets("Product").Range("D" & i).Value = Sheets("BaiBake").Range("M10") Then
    Sheets("Product").Range("G" & i).Copy
    Sheets("BaiBake").Range("E" & Rows.Count).End(xlUp).Offset(1, 0) _
    .PasteSpecial xlPasteValues

    Sheets("Product").Range("J" & i).Copy
    Sheets("BaiBake").Range("F" & Rows.Count).End(xlUp).Offset(1, 0) _
    .PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    j = j + 1
    If j >= 30 Then Exit For
End If
'Other code

Re: สอบถาม CodeVB Show ดึงข้อมูลมาแสดงตามเงื่อนไข

Posted: Wed Mar 12, 2025 4:31 am
by tigerwit
ขอบคุณครับ ได้ตามต้องการครับ