Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Tom Ogilvy's Filter Check Function Adaptation Needed...

Tom or others,

I am trying to adapt Tom's auto filter check to always display in a
message box which filters are currently checked. From here, I'll use
an inStr check to perform other tasks.

Based upon my four criteria, I can't get all four to display in the
string variable (only two at a time). The Excel auto filter I am
using is as shown in this image: http://members.dslextreme.com/users/...lterStatus.jpg

The function code of yours I have adapted is as follows:

--------------------------------------------

Public Function ShowFilter(rng As Range)
Dim filt As Filter
Dim sCrit1 As String
Dim sCrit2 As String
Dim sCrit3 As String
Dim sCrit4 As String
Dim sop As String
Dim lngOp As Long
Dim lngOff As Long
Dim frng As Range
Dim sh As Worksheet
Set sh = rng.Parent
If sh.FilterMode = False Then
ShowFilter = "No Active Filter"
Exit Function
End If
Set frng = sh.AutoFilter.Range

If Intersect(rng.EntireColumn, frng) Is Nothing Then
ShowFilter = CVErr(xlErrRef)
Else
lngOff = rng.Column - frng.Columns(1).Column + 1
If Not sh.AutoFilter.Filters(lngOff).On Then
ShowFilter = "No Conditions"
Else
Set filt = sh.AutoFilter.Filters(lngOff)
On Error Resume Next
sCrit1 = filt.Criteria1
sCrit2 = filt.Criteria2
sCrit3 = filt.Criteria3
sCrit4 = filt.Criteria4
lngOp = filt.Operator
If lngOp = xlAnd Then
sop = " And "
ElseIf lngOp = xlOr Then
sop = " or "
Else
sop = ""
End If
ShowFilter = sCrit1 & sop & sCrit2 & sop & sCrit3 & sop & sCrit4
End If
End If

MsgBox "ShowFilter = " & ShowFilter
End Function

--------------------------------------------

Please advise.

Paul
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Tom Ogilvy's Filter Check Function Adaptation Needed...

If you're calling this from a formula in a worksheet, then using a msgbox will
get very irritating very fast. It'll show up each time that excel recalculates.

But...

Option Explicit
Public Function ShowFilter(rng As Range)
Dim myCell As Range
Dim filt As Filter
Dim sCrit1 As String
Dim sCrit2 As String
Dim sCrit3 As String
Dim sCrit4 As String
Dim sop As String
Dim lngOp As Long
Dim lngOff As Long
Dim frng As Range
Dim sh As Worksheet

Set sh = rng.Parent
If sh.FilterMode = False Then
ShowFilter = "No Active Filter"
Exit Function
End If
Set frng = sh.AutoFilter.Range


For Each myCell In rng.Cells
If Intersect(myCell.EntireColumn, frng) Is Nothing Then
ShowFilter = CVErr(xlErrRef)
Else
lngOff = myCell.Column - frng.Columns(1).Column + 1
If Not sh.AutoFilter.Filters(lngOff).On Then
ShowFilter = "No Conditions"
Else
sCrit1 = ""
sCrit2 = ""
sCrit3 = ""
sCrit4 = ""
Set filt = sh.AutoFilter.Filters(lngOff)
On Error Resume Next
sCrit1 = filt.Criteria1
sCrit2 = filt.Criteria2
sCrit3 = filt.Criteria3
sCrit4 = filt.Criteria4
lngOp = filt.Operator
If lngOp = xlAnd Then
sop = " And "
ElseIf lngOp = xlOr Then
sop = " or "
Else
sop = ""
End If
ShowFilter = ShowFilter & vbLf & sCrit1 _
& sop & sCrit2 & sop & sCrit3 & sop & sCrit4
End If
End If
Next myCell

MsgBox "ShowFilter = " & ShowFilter
End Function

wrote:

Tom or others,

I am trying to adapt Tom's auto filter check to always display in a
message box which filters are currently checked. From here, I'll use
an inStr check to perform other tasks.

Based upon my four criteria, I can't get all four to display in the
string variable (only two at a time). The Excel auto filter I am
using is as shown in this image:
http://members.dslextreme.com/users/...lterStatus.jpg

The function code of yours I have adapted is as follows:

--------------------------------------------

Public Function ShowFilter(rng As Range)
Dim filt As Filter
Dim sCrit1 As String
Dim sCrit2 As String
Dim sCrit3 As String
Dim sCrit4 As String
Dim sop As String
Dim lngOp As Long
Dim lngOff As Long
Dim frng As Range
Dim sh As Worksheet
Set sh = rng.Parent
If sh.FilterMode = False Then
ShowFilter = "No Active Filter"
Exit Function
End If
Set frng = sh.AutoFilter.Range

If Intersect(rng.EntireColumn, frng) Is Nothing Then
ShowFilter = CVErr(xlErrRef)
Else
lngOff = rng.Column - frng.Columns(1).Column + 1
If Not sh.AutoFilter.Filters(lngOff).On Then
ShowFilter = "No Conditions"
Else
Set filt = sh.AutoFilter.Filters(lngOff)
On Error Resume Next
sCrit1 = filt.Criteria1
sCrit2 = filt.Criteria2
sCrit3 = filt.Criteria3
sCrit4 = filt.Criteria4
lngOp = filt.Operator
If lngOp = xlAnd Then
sop = " And "
ElseIf lngOp = xlOr Then
sop = " or "
Else
sop = ""
End If
ShowFilter = sCrit1 & sop & sCrit2 & sop & sCrit3 & sop & sCrit4
End If
End If

MsgBox "ShowFilter = " & ShowFilter
End Function

--------------------------------------------

Please advise.

Paul


--

Dave Peterson
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
SUMPRODUCT Adaptation Sam via OfficeKB.com Excel Worksheet Functions 4 April 1st 08 10:28 PM
Tom Ogilvy's VBA code Maxi[_2_] Excel Programming 20 September 2nd 06 09:08 AM
Adaptation Of A Formula Big Rick Excel Discussion (Misc queries) 6 September 30th 05 05:13 PM
Formula array adaptation Ellie Excel Worksheet Functions 4 September 19th 05 04:10 PM
Macro function needed for varied searches using a data filter CC_rider Excel Programming 0 September 2nd 05 07:13 PM


All times are GMT +1. The time now is 11:28 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"