
ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ
Code: Select all
Option Explicit
Option Base 1
Sub ShowDataTraining1()
Dim a() As Variant, lng As Long
Dim r As Range, rAll As Range
Dim rt As Range, rl As Long
Dim m As Variant, i As Integer
Sheets("Search1").Range("B11:M65536").ClearContents
m = Array("มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", _
"พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", _
"กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม")
i = Application.Match(Sheets("Search1").Range("F4"), m, 0)
Application.EnableEvents = False
Application.ScreenUpdating = False
rl = Rows.Count
With Worksheets("Database")
Set rAll = .Range("B4", .Range("B" & rl).End(xlUp))
End With
For Each r In rAll
If Month(r.Offset(0, 4)) = i And r.Offset(0, -1) = Worksheets("Search1").Range("F5") Then
lng = lng + 1
ReDim Preserve a(12, lng)
a(1, lng) = lng
a(2, lng) = r.Offset(0, -1)
a(3, lng) = r.Offset(0, 0)
a(4, lng) = r.Offset(0, 1)
a(5, lng) = r.Offset(0, 2)
a(6, lng) = r.Offset(0, 3)
a(7, lng) = Application.Text(r.Offset(0, 4), "mm/dd/yyyy")
a(8, lng) = Application.Text(r.Offset(0, 5), "mm/dd/yyyy")
a(9, lng) = r.Offset(0, 6)
a(10, lng) = r.Offset(0, 7)
a(11, lng) = r.Offset(0, 8)
a(12, lng) = r.Offset(0, 9)
End If
Next r
If lng > 0 Then
With Worksheets("Search1")
Set rt = .Range("B11", .Range("M" & lng - 1 + 11))
If .Range("B11") <> "" Then 'Check if isblank
.Range(.Range("B11"), .Range("B" & rl).End(xlUp)).Offset(0, 4).ClearContents
End If
.Range("B11:M12").Copy
rt.PasteSpecial xlPasteFormats
rt = Application.Transpose(a)
End With
Else
MsgBox "Data not found."
End If
Application.CutCopyMode = False
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub