Macro: mostrar fila, si celda""

11/11/2008 - 23:11 por CARLOS CARNERO | Informe spam
Tengo de B6:B15 algunos datos numéricos, que a su vez están ocultos y
protegida la hoja. Entonces, necesito una macro que ejecute mostrar la
fila al encontrar una celda <>"" en este rango.

Se agradece de antemano.

Saludos desde el Perú,

Preguntas similare

Leer las respuestas

#16 CARLOS CARNERO
05/12/2008 - 17:13 | Informe spam

cuales son las formulas que ocasionan que alguna/s celda/s en el rango [B6:B15] queden "vacias" ?
(es posible que se pueda utilizar otro tipo de eventos, a reserva de tus comentarios a esto)

saludos,
hector.





En la celda B6, tengo esta fórmula: =SI(Y(M6<O6,M6<>0),M6,SI
(N6>Q6,0,N6))
Y en las otras celdas relacionadas sólo con B6 (y así sucesivamente
hasta el B15), estas:

M6: =INDICE(G:G,SUMAPRODUCTO(MAX(FILA($F$18:$F$67)*($F$18:$F
$67¦))))
N6: = SI(ESERROR(SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($J$1:$J$67,
SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($J$1:$J$67<>"")))))
+1),"",SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($J$1:$J$67,
SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($J$1:$J$67<>"")))))
+1)
O6: =SI(ESERROR(SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($H$1:$H$67,
SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($H$1:$H
$67<>"")))))),"",SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($H$1:$H$67,
SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($H$1:$H
$67<>""))))))
Q6: = SI(ESERROR(SI( ESNOD(COINCIDIR(A6,F:F, 0)), "", SUMAPRODUCTO
( MAX(
($F$18:$F$67¦) * ($H$18:$H$67) ) ) )),"", SI( ESNOD(COINCIDIR
(A6,F:F, 0)), "", SUMAPRODUCTO( MAX(
($F$18:$F$67¦) * ($H$18:$H$67) ) ) ))


Saludos,

Carlos
Respuesta Responder a este mensaje
#17 Héctor Miguel
05/12/2008 - 20:49 | Informe spam
hola, Carlos !

por las formulas que expones (creo que) lo mas conveniente es usar el evento '_change'
y condicionarlo a cambios en la columna "A" (A6:A15 ???)
de esta forma NO habra contantes repeticiones del (des/re)ocultamiento de filas en el evento '_calculate'
ademas de que tienes (suficientes) formulas del tipo "come-recursos" (por lo que no es el evento sino el recalculo)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
En la celda B6, tengo esta formula: =SI(Y(M6<O6,M6<>0),M6,SI(N6>Q6,0,N6))
Y en las otras celdas relacionadas sólo con B6 (y asi sucesivamente hasta el B15), estas:

M6: =INDICE(G:G,SUMAPRODUCTO(MAX(FILA($F$18:$F$67)*($F$18:$F$67¦))))
N6: = SI(ESERROR(SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($J$1:$J$67,SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($J$1:$J$67<>"")))))+1),"",SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($J$1:$J$67,SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($J$1:$J$67<>"")))))+1)
O6: =SI(ESERROR(SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($H$1:$H$67,SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($H$1:$H$67<>"")))))),"",SI(ESNOD(COINCIDIR(A6,F:F,0)),"",INDICE($H$1:$H$67,SUMAPRODUCTO(MAX(($F$1:$F$67¦)*FILA($F$1:$F$67)*($H$1:$H$67<>""))))))
Q6: = SI(ESERROR(SI( ESNOD(COINCIDIR(A6,F:F, 0)), "", SUMAPRODUCTO( MAX(($F$18:$F$67¦) * ($H$18:$H$67) ) ) )),"", SI( ESNOD(COINCIDIR(A6,F:F, 0)), "", SUMAPRODUCTO( MAX(($F$18:$F$67¦) * ($H$18:$H$67) ) ) ))
Respuesta Responder a este mensaje
#18 CARLOS CARNERO
05/12/2008 - 21:47 | Informe spam
On 5 dic, 14:49, "Héctor Miguel"
wrote:
hola, Carlos !

por las formulas que expones (creo que) lo mas conveniente es usar el evento '_change'
y condicionarlo a cambios en la columna "A" (A6:A15 ???)
de esta forma NO habra contantes repeticiones del (des/re)ocultamiento de filas en el evento '_calculate'
ademas de que tienes (suficientes) formulas del tipo "come-recursos" (por lo que no es el evento sino el recalculo)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __




Hola Héctor: Cambien la sintaxis SheetCalculate al SheetChange, pero
me sale una ventana que dice: “Error de compilación: La declaración
del procedimiento no coincide con la descripción del evento o el
procedimiento que tiene el mismo nombre” y se sombrea con fondo azul
la siguiente línea: “Private Sub Worboook_SheetChange (ByVal sh As
Object).

En la columna A ya tenía otras fórmulas similares por lo que ya no lo
toque.

Saludos,

Carlos
Respuesta Responder a este mensaje
#19 CARLOS CARNERO
05/12/2008 - 21:55 | Informe spam
Por citar la celda A7 tengo: =SI(B6<>"",A6+1,"") y la sintaxis que te
comentaba esta así:

Private Sub Workbook_SheetChange(ByVal Sh As Object)
Dim Celda As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo Salida
For Each Celda In Range("a6:a15")
Celda.EntireRow.Hidden = Celda = ""
Next
Salida:
Application.EnableEvents = True
End Sub


Saludos,


Carlos
Respuesta Responder a este mensaje
#20 Héctor Miguel
05/12/2008 - 22:32 | Informe spam
hola, Carlos !

1) en tu mensaje previo comentas que la formula en [B6] es: =SI(Y(M6<O6,M6<>0),M6,SI(N6>Q6,0,N6))
a) un detalle es que la formula que usas NUNCA deja un "" en las celdas del rango [B6:B15]
b) otro detalle es que la formula que usas para [A7] es: -> =SI(B6<>"",A6+1,"")

2) esto podria significar que a partir de alguna celda REALMENTE vacia en la columna "B"
se "corta" alguna auto-numeracion que necesitas en la columna "A"
por lo cual, a partir de esa celda y hasta la ultima en el rango [A6:A15] ya no hay numeros, solo "" 's -???-

3) ahora las preguntas son:
a) existen celdas (realmente) vacias en este rango [B6:B15] ?????
b) quien/como/cuando/por que/hasta donde/... es que se ponen las formulas en el rango [B6:B15] ?????
c) de que trata el modelo que estas trabajando ?????
d) existe algun rango donde (realmente) ocurran CAMBIOS (por entrada del usuario) NO por actualizacion de formulas ?????

(creo que existen mas de dos detalles aun "en el tintero") -?-
saludos,
hector.

__ OP __
Por citar la celda A7 tengo: =SI(B6<>"",A6+1,"") y la sintaxis que te comentaba esta así:
Private Sub Workbook_SheetChange(ByVal Sh As Object)
Dim Celda As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo Salida
For Each Celda In Range("a6:a15")
Celda.EntireRow.Hidden = Celda = ""
Next
Salida:
Application.EnableEvents = True
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida