Saltar al contenido

MAcro que oculte fila si el valor de una cierta casilla es 0

publicado

hola a todos, soi nuevo espero que el tema valla aqui, tengo une exel que calcula la factura del agua, lo que hace es distribulle el agua consumida en 4 bloques, el primero que es asta 15, en elc aso de que lo consumido sea mas grande a 15 uns egundo que tambien es asta 15, si el valor es 30+ ai el 3 bloque en el cual llega asta 24, esto hace que si consumas 54 litro de agua 1,2 i 3 bloqeu se llenen, i el 4 bloque que es todo lode mas que gastes de agua, cada bloque multiplica la cantidad gastada pr su valor idenpendiente, el priemr bloque es mas varato i el 4 el ams caro.(para pasar a el sigueiente el 1 tien k llenarse). Lo que quiero es que si el primer bloque no se llena (no llega a 15) el 2 bloque 3 i 4 el agua cosnumida que figurara sera 0 quiero k si en la casilla esa es 0 que se oculte la columna, que si porejemplo lo consumido solo llega asta el 2 bloque en el 3 i 4 lo consumido sera 0 i que se oculten, i en el 4 si el 3 el 3 tiene algo pero el 4 no que el 4 se oculte. I que si luego alc anviar el agua cosnumida las filas vuelvan a aparecer. suvo el fichero por si no a quedado claro siento las faltas de ortografia :S

excel factura.rar

Featured Replies

publicado

Hola:

He incluido una pequeña ,macro en la hoja Full1.

Cada vez que modifiques la celda C2, de manera automática, se mostrarán/ocultarán las filas en función de su valor.



Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$2" Then
For x = 12 To 9 Step -1
If Range("C" & x) = 0 Then
Rows(x).Hidden = True
Else
Rows(x).Hidden = False
End If
Next
End If

End Sub


[/CODE]

excel factura.xls

publicado

¿Estás probando con el adjunto que te he enviado? o ¿Has copiado la macro?, porqué no hay posibilidad de error salvo que te hayas equivocado de archivo o hayas copiado la macro en un lugar inadecuado.

publicado
  • Autor

lo que ago es abrir el excel que tu me pasaste modifico la casilla c2 por el numero 10 porejemplo peor los bloques 2 3 i 4 no se ocultan, tengo que hacer algo o teoricamente solo canviar el numero porque ya lo iciste todo tu? porque de ser asi a mi no se me oculta nada TT

publicado

Tienes que dar Intro o salir de la celda C2.

Insisto, es imposible que no funcione.

Me he bajado el archivo que subí por si me hubiera equivocado al subirlo y funciona perfectamente.

El archivo que subí tiene la celda C2 resaltada en amarillo, si no la tiene, te estás equivocando de archivo.

publicado
  • Autor

vale me disulpo, muchas gracias si que va el problema es que tenia k darle a habilitar maros en un mensaje ks alia muchas garcias, aora si me podria alludar en una duda k tengo, intente hacer mi macro k iciese esod e ocultar pero no va

el codigo es este:

Sub condicion()

If c2 = 0 Then

Range("A9:A12").Select

Selection.EntireRow.Hidden = False

Range("A9:A12").Select

Selection.EntireRow.Hidden = True

Else

If c2 < 15 Then

Range("A9:A12").Select

Selection.EntireRow.Hidden = False

Range("A10:A12").Select

Selection.EntireRow.Hidden = True

Else

If c2 < 30 Then

Range("A9:A12").Select

Selection.EntireRow.Hidden = False

Range("A11:A12").Select

Selection.EntireRow.Hidden = True

Else

If c2 < 54 Then

Range("A9:A12").Select

Selection.EntireRow.Hidden = False

Range("A11:A12").Select

Selection.EntireRow.Hidden = True

Else

If c2 > 54 Then

Range("A9:A12").Select

Selection.EntireRow.Hidden = False

End If

End If

End If

End If

End If

End Sub

que esta mal? no me funciona solo se aplica la ultima condicional sin improtar c2 is e desoculta todo porqueee? cual es el fallo soi nvoato en macros i en excel en general

publicado

El problema lo tienes en como te refieres a la celda C2, puedes usar

[C2] es la forma abreviada, se refiere a la celda C2 de la hoja activa.

Range("C2") se refiere a la celda C2 de la hoja activa.

Sheets("Hoja1").Range("C2") se refiere a la celda C2 de la hoja de nombre "Hoja1"

Opta por la que mas te guste.

Solo como información:

Esto:

Rows("9:12").Hidden = False[/CODE]

hace lo mismo que esto, es mas claro y es ma rápido

[CODE]
Range("A9:A12").EntireRow.Hidden = False
Selection.EntireRow.Hidden = False
[/CODE]

publicado
  • Autor

lo edite como me dijsite pero algo sige sin irme

Codigo:

Sub condicion()

If [C2] = 0 Then

Rows("A9:A12").Hidden = False

Rows("A9:A12").Hidden = True

Else

If [C2] < 15 Then

Rows("A9:A12").Hidden = False

Rows("A10:A12").Hidden = True

Else

If [C2] < 30 Then

Rows("A9:A12").Hidden = False

Rows("A11:A12").Hidden = True

Else

If [C2] < 54 Then

Rows("A9:A12").Hidden = False

Rows("A12:A12").Hidden = True

Else

If [C2] > 54 Then

Rows("A9:A12").Hidden = False

End If

End If

End If

End If

End If

End Sub

te dejo el fichero para k lo veas

excel factura.rar

publicado

Fíjate en la diferencia:

Rows("9:12").Hidden = False 'Correcto

Rows("A9:A12").Hidden = False 'Erróneo

publicado

Porque hemos sustituido Range("A9:A12") que se refiere a un rango de celdas por Rows("9:12") que se refiere a un rango de filas.

En la ayuda de VBA tienes todas las explicaciones del modelo de objetos Excel, sus métodos y sus propiedades.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.