Como puedo resumir mi macro para ocultar y mostrar filas

Tengo un pequeño inconveniente tengo una macro que se ejecuta cuando tengo un valor en una celda pero la de funcionar si funciona correctamente pero lo veo muy larga alguna idea de como resumirla la macro trata de solo mostrar una cantidad de filas adecuadas excepto la cuando coloco el dato 1 del dato 2 hasta el 100 que quiero crear en adelante si muestra una cantidad de filas constante pero como ven recién voy en 10 si llego al 100 la macro se hará

Sub MENSAJE()
    If Sheets("DATOS").Range("$I$2") = 1 Then
        Rows("4:1004").Hidden = True
        Rows("4:47").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 2 Then
        Rows("4:1004").Hidden = True
        Rows("48:95").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 3 Then
        Rows("4:1004").Hidden = True
        Rows("96:143").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 4 Then
        Rows("4:1004").Hidden = True
        Rows("144:191").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 5 Then
        Rows("4:1004").Hidden = True
        Rows("192:239").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 6 Then
        Rows("4:1004").Hidden = True
        Rows("240:287").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 7 Then
        Rows("4:1004").Hidden = True
        Rows("288:335").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 8 Then
        Rows("4:1004").Hidden = True
        Rows("336:383").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 9 Then
        Rows("4:1004").Hidden = True
        Rows("384:431").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 10 Then
        Rows("4:1004").Hidden = True
        Rows("432:479").Hidden = False
    ElseIf Sheets("DATOS").Range("$I$2") = 11 Then
        Rows("4:1004").Hidden = True
        Rows("480:527").Hidden = False
    Else
        Rows("4:1004").Hidden = False
    End If
End Sub

muy largo alguna ayuda para poderla resumir. 

3 respuestas

Respuesta
1

Podría ser así:

Sub Mensaje()
N = Sheets("DATOS").Cells(2, "I")
If N = 0 Or N > 21 Then Exit Sub
Fi = 4: Ff = 47
If N > 1 Then
Fi = (N - 1) * 48: Ff = Fi + 47
Sheets("DATOS").Rows("4:1004").Hidden = True
Sheets("DATOS").Range(Rows(Fi), Rows(Ff)).Hidden = False
End If
End Sub

Disculpe por que en la primera condición le pone que N>21 ???

Puesto que las filas que ocultas son hasta la 1004, si  N=21 Fi= 21 x 48 = 1008, es decir a partir de N=21 mostraría filas que no están ocultas lo que no tiene sentido.

Respuesta
1

La macro que ocupas es esta

Sub ocultar_columnas()
valor = Sheets("datos").Range("i2")
Rows("4:1004").Hidden = True
If valor = 1 Then Rows("4:47").Hidden = False
If valor >= 2 Then
    minimo = 48 * (valor - 1)
    maximo = minimo + 47
    rango = Str(minimo) & ":" & Trim(Str(maximo))
    Rows(rango).Hidden = False
End If
End Sub
Respuesta
1

Puede ser:

Sub MENSAJE()
    Rows.Hidden = False
    n = Sheets("DATOS").Range("$I$2")
    If n = 1 Then Rows("4:47").Hidden = True: Exit Sub
    Rows((n - 1) * 48 & ":" & ((n - 1) * 48) + 47).Hidden = True
End Sub

[sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas