سلام دوستان.
تو اين آموزش ميخوام بهتون ياد بدم چطور ميتونين با كمك ليستي كه از طريق Data Validation ساخته شده، يك فيلتر ايجاد كنيد.
از ساده ترين حالت شروع ميكنم:
فرض كنيد ما يكسري اطلاعات در يك جدول و در تب Data داريم و ميخوايم يكسري از اين اطلاعات رو مثلا نام و تاريخ و قيمت نهايي رو (به بقيه داده هاي جدول اصلي كاري نداريم) بر اساس نام فيلتر كنيم. يعني وقتي ما نام مورد نظر رو انتخاب كرديم سيستم اطلاعاتي كه لازم داريم (نام و تاريخ و قيمت نهايي) رو برامون بياره
در تب Excel Iran اين كدها رو وارد ميكنيم:
	و حالا يك ماژول ميسازيم و اطلاعات زير رو توش كپي ميكنيم:
	بقيه اطلاعات از قبيل name manager و Data Validation رو بهتره از طريق فايل پيگيري كنيد.
		
							
						
					تو اين آموزش ميخوام بهتون ياد بدم چطور ميتونين با كمك ليستي كه از طريق Data Validation ساخته شده، يك فيلتر ايجاد كنيد.
از ساده ترين حالت شروع ميكنم:
فرض كنيد ما يكسري اطلاعات در يك جدول و در تب Data داريم و ميخوايم يكسري از اين اطلاعات رو مثلا نام و تاريخ و قيمت نهايي رو (به بقيه داده هاي جدول اصلي كاري نداريم) بر اساس نام فيلتر كنيم. يعني وقتي ما نام مورد نظر رو انتخاب كرديم سيستم اطلاعاتي كه لازم داريم (نام و تاريخ و قيمت نهايي) رو برامون بياره
در تب Excel Iran اين كدها رو وارد ميكنيم:
کد:
	Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$C$8" Then
    Dim wsSD As Worksheet
    Dim wsS As Worksheet
    On Error GoTo errHandler
    Set wsSD = Sheets("Data")
    Set wsS = Sheets("Excel Iran")
    Application.EnableEvents = False
    
    If Target.Value = "" Then
        Call OrderSort("CriteriaName", True)
    Else
        Call OrderSort("CriteriaName", False)
    End If
exitHandler:
    Application.EnableEvents = True
        Exit Sub
errHandler:
    MsgBox "Could not filter orders"
    Resume exitHandler
End If
End Sub
کد:
	Sub OrderSort(strExt As String, isempty As Boolean)
Dim wsSD As Worksheet
Dim wsS As Worksheet
On Error GoTo errHandler
Set wsSD = Sheets("Data")
Set wsS = Sheets("Excel Iran")
If isempty Then
    wsSD.Range("OrdersData").AdvancedFilter _
        Action:=xlFilterCopy, _
        CopyToRange:=wsS.Range("ExtractOrders"), Unique:=True
Else
    wsSD.Range("OrdersData").AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=wsSD.Range(strExt), _
        CopyToRange:=wsS.Range("ExtractOrders"), Unique:=True
End If
exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not filter orders"
    Resume exitHandler
End Sub





							
						
کامنت