Casilla de verificación

Hola Tavo.
Tengo un código VBA adaptado a una planilla y la función del código es marcar una celda cuando el cursor se para en la misma, si volvés a pararte en la casilla se desmarca, este código lo tome de una página que no recuerdo donde esta.
Funciona todo bien hasta que me di cuenta que si marcas toda la fila te borra todos los datos que contienen cada celda y no podes recuperarlos, ¿podrías ayudarme con esto? Te paso el código
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim aOffset As Integer
On Error GoTo err_handler
Application.EnableEvents = False
If Not Application.Intersect _
(Target, Columns("A")) Is Nothing Then
If Target.Column = 4 Then
aOffset = 3
Else
aOffset = 2
End If
If IsEmpty(Target.Value) Then
With Target
.Font.Name = "Wingdings"
.Value = Chr(252)
End With
Target.Offset(0, iOffset).Select
Else
Target.Value = ""
Target.Offset(0, iOffset).Select
End If
End If
err_handler:
Application.EnableEvents = True
End Sub
Básicamente hay una columna (A) titulo "marca", columna (B) meses, y columna (B) Gastos, como ejemplos.
En la columna A es donde actúa el código con el tilde.
Espero haberme explicado, cualquier cosa te mando el archivo..
Y desde ya a la espera tu comentario y agradeciendo desde ya tu atención, un abrazo.

1 Respuesta

Respuesta
1
¿Entonces lo que deseas es que si se selecciona más de una celda no se ejecute el código?
Si es así, puedes agregar un condicional al inicio que cuente la cantidad de celdas seleccionadas y si es mayor a 1, entonces salga del código, algo así:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim aOffset As Integer
On Error GoTo err_handler
x = Target.Cells.Count
If x = 1 then

Application.EnableEvents = False
If Not Application.Intersect _
(Target, Columns("A")) Is Nothing Then
If Target.Column = 4 Then
aOffset = 3
Else
aOffset = 2
End If
If IsEmpty(Target.Value) Then
With Target
.Font.Name = "Wingdings"
.Value = Chr(252)
End With
Target.Offset(0, iOffset).Select
Else
Target.Value = ""
Target.Offset(0, iOffset).Select
End If
End If
err_handler:
Application.EnableEvents = True
End If
End Sub
Tavo lamentablemente tengo que calificarte con excelente, porque no hay más puntajes...
Tu ayuda fue muy importante y una manera más para ir aprendiendo... Desde ya muchísimas gracias por tu ayuda más que rápida y tu tiempo para tratar de entender que queremos hacer nosotros la gente que poco entiende y quiere aprender.
No me queda más que agradecerte tu tiempo y seguro que volveré al ataque preguntándote algunas cuestiones más sobre un trabajo que estoy haciendo en excel. Un abrazo
Veto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas