Excel - MACRO PARA PASAR VALOR DE UNA CELDA CON FÓRMULA A OTRA CELDA

 
Vista:

MACRO PARA PASAR VALOR DE UNA CELDA CON FÓRMULA A OTRA CELDA

Publicado por JOSE (1 intervención) el 04/03/2021 01:06:24
Hola a todos,
He creado un excel con dos pestañas. Una es la pestaña de REGISTRO donde meto los datos y otra es la pestaña de DATOS, donde se graban los datos de la primera pestaña una vez pulso el botón de GUARDAR. Todo funciona bien excepto en las celdas que tienen una fórmula. En estas celdas al apretar el botón de GUARDAR se borra la fórmula y graba un valor de ERROR en la pestaña de DATOS. ¿Alguien tiene solución para esto?

Muchas gracias, a continuación os pongo la macro. Las celdas que tienen la fórmula son la A16, C16 Y D16

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Sub GUARDAR()
'
' GUARDAR Macro
'
 
'
    Sheets("DATOS").Select
    Rows("3:3").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Sheets("REGISTRO").Select
    Range("D1").Select
    Selection.Copy
    Sheets("DATOS").Select
    Range("A3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("B3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("B3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("D3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("C3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("B4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("D3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Sheets("REGISTRO").Name = "REGISTRO"
    Range("D4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("E3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("A16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("F3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("B16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("G3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("C16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("H3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("D16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("DATOS").Select
    Range("I3").Select
    ActiveSheet.Paste
    Sheets("REGISTRO").Select
    Range("B3").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("D3").Select
    ActiveCell.FormulaR1C1 = ""
    Range("B4").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D4").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A16").Select
    ActiveCell.FormulaR1C1 = ""
    Range("B16").Select
    ActiveCell.FormulaR1C1 = ""
    Range("C16").Select
    ActiveCell.FormulaR1C1 = ""
    Range("D16").Select
    ActiveCell.FormulaR1C1 = ""
    ActiveWorkbook.Save
End Sub
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
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

MACRO PARA PASAR VALOR DE UNA CELDA CON FÓRMULA A OTRA CELDA

Publicado por Antoni Masana (2464 intervenciones) el 05/03/2021 17:45:38
Esta macro hace lo mismo:
Las celdas con formulas NO las tiene que limpiar, se limpian solas.
Si sale un ERROR hay varias formas de evitarlo y depende de lo que haga la fórmula.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub GUARDAR()
    Sheets("DATOS").Select
    Rows("3:3").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    With Sheets("REGISTRO")
        Range("A3") = .Range("D1")
        Range("B3") = .Range("B3")
        Range("C3") = .Range("D3")
        Range("D3") = .Range("B4")
        Range("E3") = .Range("D4")
        Range("F3") = .Range("A16")
        Range("G3") = .Range("B16")
        Range("H3") = .Range("C16")
        Range("I3") = .Range("D16")
    End With
    Range("B3") = EMPTY
    Range("D3") = EMPTY
    Range("B4") = EMPTY
    Range("D4") = EMPTY
    Range("A16") = EMPTY
    Range("B16") = EMPTY
    Range("C16") = EMPTY
    Range("D16") = EMPTY
End Sub

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