ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Code ignoring filtered (visible) tasks. (https://www.excelbanter.com/excel-programming/379559-code-ignoring-filtered-visible-tasks.html)

Finius Eetch

Code ignoring filtered (visible) tasks.
 
mycat is a string in my I column or column 9 (defined as MyCategoryCol)

Export_Info(mycat as string)
{
....misc variables.


' Apply my filter.
Selection.AutoFilter Field:=MyCategoryCol, Criteria1:=mycat, Operator:=xlAnd

' Count the number of filtered tasks.
column_counter = Application.WorksheetFunction.Subtotal(3, Range("I:I"))


For i = 1 To column_counter



' The QUESTION
buff = Selection.Cells(i, MyQuestionCol)
ConBuff = ""
For j = 1 To Len(buff)
If InfFont(Asc(Mid(buff, j, 1))) = 255 Then
MsgBox "Unrecognised characters in Question at line " & i &
", character # " & j & " (" & Chr(InfFont(Asc(Mid(buff, j, 1)))) & "), table
entry " & Asc(Mid(buff, j, 1))
ConBuff = ConBuff + "?"
Else
ConBuff = ConBuff + Chr(InfFont(Asc(Mid(buff, j, 1))))
End If
Next j
Print #hfile, ConBuff

next i

.... many more sections of data, but they are all basically the same as this.

}


THE PROBLEM:
When I go through this loop, i always get the cells from the top, even ones
that should be filtered. I don't know why this happens. When I filter by
"Kids" for example, the 217 rows that have info about the "kids" even though
the actual row is at like 21,000 - I start getting entries from row 1, which
is usually a different column like "History"

Mike Fogleman

Code ignoring filtered (visible) tasks.
 
I am not sure you want to use column_counter on your filtered list because
your loop is going from row to row. If column_counter =100 then your loop
will evaluate rows(1:100). Your last filtered item may be on row 1900! It
may be best to loop the entire list and check each row's Hidden property.

For i = 1 to LastRow
If Rows(i).Hidden = False Then
'Do your code
Else
End If
Next i

Mike F
"Finius Eetch" wrote in message
...
mycat is a string in my I column or column 9 (defined as MyCategoryCol)

Export_Info(mycat as string)
{
...misc variables.


' Apply my filter.
Selection.AutoFilter Field:=MyCategoryCol, Criteria1:=mycat,
Operator:=xlAnd

' Count the number of filtered tasks.
column_counter = Application.WorksheetFunction.Subtotal(3, Range("I:I"))


For i = 1 To column_counter



' The QUESTION
buff = Selection.Cells(i, MyQuestionCol)
ConBuff = ""
For j = 1 To Len(buff)
If InfFont(Asc(Mid(buff, j, 1))) = 255 Then
MsgBox "Unrecognised characters in Question at line " & i &
", character # " & j & " (" & Chr(InfFont(Asc(Mid(buff, j, 1)))) & "),
table
entry " & Asc(Mid(buff, j, 1))
ConBuff = ConBuff + "?"
Else
ConBuff = ConBuff + Chr(InfFont(Asc(Mid(buff, j, 1))))
End If
Next j
Print #hfile, ConBuff

next i

... many more sections of data, but they are all basically the same as
this.

}


THE PROBLEM:
When I go through this loop, i always get the cells from the top, even
ones
that should be filtered. I don't know why this happens. When I filter by
"Kids" for example, the 217 rows that have info about the "kids" even
though
the actual row is at like 21,000 - I start getting entries from row 1,
which
is usually a different column like "History"





All times are GMT +1. The time now is 12:14 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com