No me funcina esta macro

23/12/2006 - 12:37 por Alejandro Garcia | Informe spam
Encontre esta macro en una pagina que no recuerdo en estos momentos,
pero me es util para mi trabajo. Esta macro lo que hace es colocar la
celda en donde filtro con un fondo de color (en este caso amarillo)
para advertir mas visiblemente cual(es) columnas estoy filtrando. Me
funciona bien en el archivo de ejemplo pero cuando intento colocarlo en
mi libro de macros personales no me trabaja, ¿como debo hacer?

Private Sub Worksheet_Calculate()
Dim af As AutoFilter
Dim fFilter As Filter
Dim iFilterCount As Integer

If ActiveSheet.AutoFilterMode Then
Set af = ActiveSheet.AutoFilter
iFilterCount = 1
For Each fFilter In af.Filters
If fFilter.On Then
af.Range.Cells(1, iFilterCount) _
.Interior.ColorIndex = 6
Else
af.Range.Cells(1, iFilterCount) _
.Interior.ColorIndex = xlNone
End If
iFilterCount = iFilterCount + 1
Next fFilter
Else
Rows(1).EntireRow.Interior.ColorIndex = xlNone
End If
End Sub

Gracias por su ayuda.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/12/2006 - 23:37 | Informe spam
hola, Alejandro !

Encontre esta macro en una pagina que no recuerdo en estos momentos, pero me es util para mi trabajo.
Esta macro lo que hace es colocar la celda en donde filtro con un fondo de color (en este caso amarillo)
para advertir mas visiblemente cual(es) columnas estoy filtrando.
Me funciona bien en el archivo de ejemplo pero cuando intento colocarlo en mi libro de macros personales no me trabaja
como debo hacer?

Private Sub Worksheet_Calculate() [...]



el 'detalle' esta en que el codigo esta 'administrando' el evento '_calculate' de una hoja en especifico... [la hoja donde esta el codigo]
observa que se encuentra en un modulo 'de clase' [como los de los objetos worksheet, thisworkbook, userform, etc.]

si lo pones en el modulo de clase de alguna hoja en tu libro de macros personales...
no estara en condiciones de adminstrar los eventos de otras hojas y mucho menos en otros libros -?-

o sea... necesitaras que se quede en el proyecto de macros del libro con la hoja donde aplicas los autofiltros :-(

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Alejandro Garcia
26/12/2006 - 08:29 | Informe spam
Gracias Hector, osea, ¿que no habria forma de poder utilizarlo en
cualquier libro con cualquier filtro?
Respuesta Responder a este mensaje
#3 Héctor Miguel
27/12/2006 - 01:05 | Informe spam
hola, Alejandro !

... osea, que no habria forma de poder utilizarlo en cualquier libro con cualquier filtro?



tal como lo estas planteando [me temo que]... NO :-(
si quieres usar tu libro de macros personales, podrias definir una funcion personalizada +/- como sigue:
[obviamente] en un modulo de codigo estandar/normal/general/...

Function AF_Activo(ByVal Ref As Range) As Boolean
If Not Ref.Parent.AutoFilterMode Then Exit Function
Dim Filtro As Byte: Application.Volatile
With Ref.Parent.AutoFilter
If Intersect(Ref.Cells(1, 1), .Range) Is Nothing Then Exit Function
Filtro = Ref.Column - .Range.Column + 1: AF_Activo = .Filters(Filtro).On
End With
End Function

te devolveria verdadero/falso si la celda que pases como referencia tiene activo [o no] algun criterio de autofiltros ;)
podrias complementar con algun formato condicional que se aplique si 'x_celda' [donde la uses] devuelve verdadero/falso ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida