Visual Basic para Aplicaciones - Ayuda con error en tiempo de ejecución '-2147417848 (80010108)'

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 20 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con error en tiempo de ejecución '-2147417848 (80010108)'

Publicado por roger (3 intervenciones) el 08/06/2021 23:28:21
Hola a todos, gracias por leer este post.
Tengo un documento Excel que hice para controlar mis tareas y subtareas diarias, las cuales voy agregando (con un userform) y las voy almacenando, mediante algunas macros, en listas con nombres definidos. De tal forma, en otra hoja utilizo dichas listas en forma desplegable y relacionadas entre si.

El año pasado estuve usando una primera versión de dicha planilla y siempre fue muy estable y solo una vez en todo un año me dio un error menor que al cerrar y volver a abrir el documento no volvió a molestar nunca mas. Sin embargo, luego de actualizar mi documento y haber añadido algunas otras macros, de forma intermitente y casi aleatoria me aparece el siguiente error al añadir una nueva tarea:

mensaje-de-error

Lo extraño es que solo ocurre cada que agrego unas 3 a 5 nuevas tarea, luego si cierro el documento, se reinicia Excel y me sale una hoja en blanco, luego cierro el esa hoja en blanco, vuelvo a abrir el documento y me deja agregar tareas sin problemas, hasta que unas 3 a 5 tareas después nuevamente aparece el mismo error.
El depurador me envía a esta línea (la cual estoy casi seguro que no tiene ningún problema porque ya la usaba en la anterior versión de mi Excel):


error-depuracion

Dejo adjunto el documento Excel y aquí el código por si alguien puede ayudarme por favor:

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
Public Sub Registrar_Tarea()
 
    'validaciones para que sea mas rapida la macro
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
    If Range("A4").Value = Empty Then 'registro de la primera tarea
 
        'Registramos la primera tarea
        Range("A4").Value = 1
        Numero_Tarea = 1
        Range("B4").Value = Nombre_Tarea
        Fecha_Tarea = DateValue(Now)
        Range("C4").Value = Fecha_Tarea
        Range("D4").Value = Prioridad
        With Range("D4").Validation 'para que salga la lista desplegable de Prioridad
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=Prioridades"
        End With
        Range("E4").Value = Info_extra_Tarea
        Range("F4").Value = Estado
        With Range("F4").Validation 'para que salga la lista desplegable de estado
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=Estado_de_tarea"
        End With
 
        'Creamos la primera subtarea
        Range("I3").Value = Nombre_Tarea
        Range("I2").Value = 1
        Range("I4").Value = "NA"
 
        'Damos formato a las celdas
        'Celda nombre de tarea
        With Range("I3").Font
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
        End With
        With Range("I3").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Range("I3").Font.Bold = True
        'Celda numero de tarea
        With Range("I2").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.799981688894314
            .PatternTintAndShade = 0
        End With
        'Celda subtarea
        With Range("I4").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.799981688894314
            .PatternTintAndShade = 0
        End With
 
        'Creamos lista con nombre definido para las subtareas de la nueva tarea agregada
        ActiveWorkbook.Names.Add Name:=Nombre_Tarea, RefersTo:=Range("I4")
 
        'Creamos lista Todas_mis_tareas
        ActiveWorkbook.Names.Add Name:="Todas_mis_tareas", RefersTo:=Range("I3")
 
        'Creo el calendario para 1 año desde la primera tarea agregada
        Call Calendario_Gannt
 
        'Agregamos la tarea al diagramma de Gannt
        Call Agregar_Tarea_Gannt
 
        'selecciono la hoja Todas
        Sheets("Todas").Select
 
        'Agrego la Unidad de medicion por defecto a la nueva tarea
        Opcion_Unidad = 1
        Call Agregar_Unidad
 
        'Dejamos seleccionada la ultima tarea agregada
        Range("A4").Select
 
 
    ElseIf Range("A4").Value <> Empty Then 'en caso de que no sea la primera tarea
 
        'Registramos la nueva tarea
        Range("A3").End(xlDown).Offset(1, 0).Select 'identificamos la siguiente fila vacia por debajo del ultimo registro en la lista
        ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1
        Numero_Tarea = ActiveCell.Value
        ActiveCell.Offset(0, 1).Value = Nombre_Tarea
        Fecha_Tarea = DateValue(Now)
        ActiveCell.Offset(0, 2).Value = Fecha_Tarea
        ActiveCell.Offset(0, 3).Value = Prioridad
        With ActiveCell.Offset(0, 3).Validation 'para que salga la lista desplegable de Prioridad
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=Prioridades"
        End With
        ActiveCell.Offset(0, 4).Value = Info_extra_Tarea
        ActiveCell.Offset(0, 5).Value = Estado
        With ActiveCell.Offset(0, 5).Validation 'para que salga la lista desplegable de estado de tarea
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=Estado_de_tarea"
        End With
 
        'Creamos la subtarea correspondiente a la nueva tarea agregada
        Range("H3").Select
        Selection.End(xlToRight).Select 'identificamos la ultima lista de subtareas agregada
        ActiveCell.Offset(0, 1).Value = Nombre_Tarea
        ActiveCell.Offset(-1, 1).Value = Numero_Tarea
        ActiveCell.Offset(1, 1).Value = "NA"
 
        'Damos formato a las celdas
        'Celda nombre de tarea
        With ActiveCell.Offset(0, 1).Font
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
        End With
        With ActiveCell.Offset(0, 1).Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        ActiveCell.Offset(0, 1).Font.Bold = True
        'Celda numero de tarea
        With ActiveCell.Offset(-1, 1).Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.799981688894314
            .PatternTintAndShade = 0
        End With
        'Celda subtarea
        With ActiveCell.Offset(1, 1).Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.799981688894314
            .PatternTintAndShade = 0
        End With
 
        'Creamos lista con nombre definido para las subtareas de la nueva tarea agregada
        ActiveWorkbook.Names.Add Name:=Nombre_Tarea, RefersTo:=ActiveCell.Offset(1, 1)
 
        'Actualizamos lista Todas_mis_tareas
        Range("I3").Select
        ActiveWorkbook.Names.Add Name:="Todas_mis_tareas", RefersTo:=Range(Selection, Selection.End(xlToRight))
 
        'Agregamos la tarea al diagramma de Gannt
        Call Agregar_Tarea_Gannt
 
        'selecciono la hoja Todas
        Sheets("Todas").Select
 
        'Agrego la Unidad de medicion por defecto a la nueva tarea
        Opcion_Unidad = 1
        Call Agregar_Unidad
 
        'Dejamos seleccionada la ultima tarea agregada
        Range("A" & Rows.Count).End(xlUp).Select
 
    End If
 
    'validaciones para que sea mas rapida la macro
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
 
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

Ayuda con error en tiempo de ejecución '-2147417848 (80010108)'

Publicado por CoquitoPE (79 intervenciones) el 13/06/2021 05:29:39
Roger... Un saludo...
Podrias publicar todo el codigo...para ver si podria colaborarte... esta interesante
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
Imágen de perfil de Norberto
Val: 115
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con error en tiempo de ejecución '-2147417848 (80010108)'

Publicado por Norberto (14 intervenciones) el 15/06/2021 14:01:32
Hola:

Es lo más curioso que he visto: da el error y si cancelas la ejecución del código, ves que el valor está puesto. Se podría solucionar con un On Error Resume Next justro encima de esa línea y un On Error Goto 0 justro detrás. No obstante he ido por otro lado y no me ha vuelto a dar el error, he eliminado las propieades Value en las dos expresiones dejando que Excel elija la predeterminada de sendos objetos Range, con lo que la línea quedaría así:

1
ActiveCell = ActiveCell.Offset(-1, 0) + 1

Un saludo,

Norberto.

P.S. Rectifico. También da error. A ver así:

1
ActiveCell.Formula = ActiveCell.Offset(-1, 0) + 1
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