Excel - Ocultar formulas, sin proteger la hoja de calculo

 
Vista:
sin imagen de perfil
Val: 22
Ha disminuido su posición en 14 puestos en Excel (en relación al último mes)
Gráfica de Excel

Ocultar formulas, sin proteger la hoja de calculo

Publicado por Eduardo (11 intervenciones) el 09/11/2019 21:02:06
Estimados e estado buscando la forma de ocultar la formulas en la hoja de trabajo.
buscando por Internet encontré esta macro en la cual oculta la formula y muestra el resultado dejando expresado el resultado en la barra donde se escribe la formula en un rango de celdas determinadas.

oculto1

este es el código que oculta las formulas en la barra dentro de un rango de celdas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim xDic As New Dictionary
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim xCell As Range
    Dim xRg As Range
    Set xRg = Range("C2:C19")
    If xDic.Count <> xRg.Count Then
        For Each xCell In xRg
            xDic.Add xCell.Address, xCell.FormulaR1C1
        Next
    End If
    If (Target.Count = 1) And (Not Application.Intersect(xRg, Target) Is Nothing) And (Target.HasFormula) Then
        With Target
            .Value = .Value
        End With
    Else
        For Each xCell In xRg
            xCell.Formula = xDic.Item(xCell.Address)
        Next
    End If
End Sub

Luego del código se tiene que ir a Herramientas --> Referencias y dejar activado Microsoft Scripting Runtime como sale en la imagen, para que funcione.

ocultar

Mi consulta es: Se puede modificar este código para que se pueda ocultar las formulas en dos o mas rangos de celdas. Ejemplo: Ocultar las formulas de C2:C19 y E2:E19

oculto2
¿se puede hacer que estas dos formulas se puedan ocultar?

Desde ya muchas gracias.
Saludos cordiales.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 4
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Ocultar formulas, sin proteger la hoja de calculo

Publicado por Oscar Gerardo (1 intervención) el 11/11/2019 03:04:19
Hola Eduardo, y si tratas de crear el rango como en las graficas, cuando las columnas a graficar no son continuas, seria algo asi como
Set xRg = Range("C2:C19;E2:E19"), no tengo mucho tiempo para ensayarlo, pero creo que funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alfredo
Val: 363
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Ocultar formulas, sin proteger la hoja de calculo

Publicado por Alfredo (120 intervenciones) el 11/11/2019 03:05:41
Hola Eduardo
Solo necesitas una pequeña modificación en tu código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dim xDic As New Dictionary
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   '
   Dim xCell As Range
   Dim xRg As Range
   '
   Set xRg = Range("C2:C10,F2:F10") 'aquí uso rango C2:C10 y tambien F2:F10
   '
   If xDic.Count <> xRg.Count Then
      For Each xCell In xRg
         xDic.Add xCell.Address, xCell.FormulaR1C1
      Next
   End If
   '
   If (Target.Count = 1) And (Not Application.Intersect(xRg, Target) Is Nothing) And (Target.HasFormula) Then
      With Target
         .Value = .Value
      End With
   Else
      For Each xCell In xRg
         xCell.Formula = xDic.Item(xCell.Address)
      Next
   End If
   '
End Sub

Como ves solo agrega el segundo rango que deseas ocultar (mi separador es la , (coma)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 22
Ha disminuido su posición en 14 puestos en Excel (en relación al último mes)
Gráfica de Excel

Ocultar formulas, sin proteger la hoja de calculo

Publicado por Eduardo (11 intervenciones) el 13/11/2019 17:56:55
muchas gracias por sus comentarios
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ocultar formulas, sin proteger la hoja de calculo

Publicado por Marisol (1 intervención) el 02/02/2021 23:57:40
Hola Eduardo, mil gracias por su aporte con el código pero quedo con la duda en donde lo coloco en el Libro de Excel no me da, ni en la pestaña. coloque el rango de fecha segun su ejemplo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim xCell As Range
    Dim xRg As Range
    Set xRg = Range("G7:L10")
    If xdic.Count <> xRg.Count Then
        For Each xCell In xRg
            xdic.Add xCell.Address, xCell.FormulaR1C1
        Next
    End If
    If (Target.Count = 1) And (Not Application.Intersect(xRg, Target) Is Nothing) And (Target.HasFormula) Then
        With Target
            .Value = .Value
        End With
    Else
        For Each xCell In xRg
            xCell.Formula = xdic.Item(xCell.Address)
        Next
    End If
End Sub


Esta variable la declare en un modulo global y tampoco me da, le agradezco en lo que me pueda colaborar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ocultar formulas, sin proteger la hoja de calculo

Publicado por Jose (1 intervención) el 27/11/2023 21:30:59
Y si necesito poner muchas más columnas, lo puedo hacer de esta forma???'
Set xRg = Range("F11:F85,I11:I85")
Set xRg = Range("L11:L85,O11:O85")
Set xRg = Range("R11:R85,U11:U85")
Set xRg = Range("X11:X85,AA11:AA85")
Set xRg = Range("AD11:AD85,AG11:AG85")
Set xRg = Range("AJ11:AJ85,AM11:AM85")
Set xRg = Range("AP11:AP85,AS11:AS85")
Set xRg = Range("AV11:AV85,AY11:AY85")
Set xRg = Range("BB11:BB85,BE11:BE85")
Set xRg = Range("BH11:BH85,BK11:BK85")
Set xRg = Range("BN11:BN85,BQ11:BQ85")
Set xRg = Range("BT11:BT85,BW11:BW85")
Set xRg = Range("BZ11:BZ85,CC11:CC85")
Set xRg = Range("CF11:CF85,CI11:CI85")
Set xRg = Range("CL11:CL85,CO11:CO85")
Set xRg = Range("CR11:CR85")


O como lo puedo hacer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar