Al hacer doble click en dos o tres celdas seguidas, celda activa salta de celda.

Espero que me puedan ayudar por favor. No encontré nada parecido.

Sucede que tengo una macro en la hoja activa, que al cambiar el valor en la celda D16 se activa, pero estoy teniendo el problema de que al hacer doble click (como cuando quieres escribir en la celda) dos o tres veces seguidas en distintas celdas, la celda activa "salta" y me selecciona la celda D16.

Probé desactivando la Macro y me pasa igual (pero no de forma tan recurrente como cuando está activa la macro) pero se salta a otras celdas.

¿Saben si puede ser problema de la macro? ¿Hay alguna otra cosa que pueda revisar?

Les adjunto la macro, espero que me puedan ayudar.

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

If Target.Address = "$D$16" Then

Application.ScreenUpdating = False

If [D16] = "Diagnóstico" Then

'Celdas con relleno
Range("B50:B53,B56:B60").Select
ActiveCell.Interior.ColorIndex = 2 'color blanco
Range("B50:B50").Select
ActiveCell.Interior.ColorIndex = 4 'color verde
Range("B56:B56").Select
ActiveCell.Interior.ColorIndex = 48 'color gris

ElseIf [D16] = "Seguimiento 1" Or [D16] = "Seguimiento 2" Then

Application.ScreenUpdating = False

'Celdas con relleno
Range("B50:B53,B56:B60").Select
ActiveCell.Interior.ColorIndex = 2 'color blanco
Range("B50:B50").Select
ActiveCell.Interior.ColorIndex = 48 'color gris
Range("B56:B56").Select
ActiveCell.Interior.ColorIndex = 4 'color verde

ElseIf [D16] <> "Seguimiento 1" Or [D16] <> "Seguimiento 2" Or [D16] <> "Diagnóstico" Then

Application.ScreenUpdating = False

'Celdas con relleno
[B50].Select
ActiveCell.Interior.ColorIndex = 2 'color blanco
[B56].Select
ActiveCell.Interior.ColorIndex = 2 'color blanco

End If
End If

[D16].Select

Application.ScreenUpdating = True

' bloquea el ingreso de datos en la sección de seguimiento

Set r = Range("D59:D60")
If Not Intersect(Target, r) Is Nothing Then
If Target.Count > 100 Then Exit Sub
For Each C In Target
If Not Intersect(C, r) Is Nothing Then
If C.Value <> "" Then
If Range("D16") = "Diagnóstico" Then
MsgBox "Campo válido solo para evaluaciones de seguimiento, Ud está realizando una evaluación de Diagnóstico"
Application.EnableEvents = False
C.Value = ""
Application.EnableEvents = True

End If
End If
End If
Next
End If

' bloquea el ingreso de datos en la sección de seguimiento

Set r = Range("D50:D53")
If Not Intersect(Target, r) Is Nothing Then
If Target.Count > 100 Then Exit Sub
For Each C In Target
If Not Intersect(C, r) Is Nothing Then
If C.Value <> "" Then
If Range("D16") = "Seguimiento 1" Or Range("D16") = "Seguimiento 2" Then
MsgBox "Campo válido solo para evaluación de Diagnóstico, Ud está realizando una evaluación de Seguimiento"
Application.EnableEvents = False
C.Value = ""
Application.EnableEvents = True

End If
End If
End If
Next
End If

End Sub

1 Respuesta

Respuesta
1

prueba eliminarndos los select

Ejemplo

Donde dices

[B50].Select
ActiveCell.Interior.ColorIndex = 2 'color blanco
[B56].Select
ActiveCell.Interior.ColorIndex = 2 'color blanco

usa de estas manera

 [B50].Interior.ColorIndex = 2 'color blanco
 [B56].Interior.ColorIndex = 2 'color blanco

Estos lo que te ayudara a no seleccionar la celda sino aplicar directamente lo que quiere

Otra cosa que vi es estos

ElseIf [D16] <> "Seguimiento 1" Or [D16] <> "Seguimiento 2" Or [D16] <> "Diagnóstico" Then

No se palabra aparecen si no son estas pero si estas en blanco la condición se aplica

Y luego de hacer esto le dices estos

[D16].Select   elimina estas parte

Porque sino cuando este digitan algo y el carculo cambie la celda 16 a blanco o otra palabra se va a mover a esa celda

Si te silve no olvides valorar para cerrar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas