Saltar al contenido

Validar que celda sea solo numérico

publicado

Hola a tod@s.

De antemano agradecer por su tiempo en el siguiente inconveniente que expongo.

El inconveniente que tengo es que al aplicar el el código en el evento que dejare líneas abajo funciona correctamente, sin embargo cuando selecciono el rango de celdas B9:B18 y borro el contenido, sucede que de manera automática se colorea todo de color rojo en dicho rango. Como solucionarlo?, tomando en cuenta que es necesario que sea un evento.

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Application.EnableEvents = False
    
    If Not Application.Intersect(Target, Range("B15")) Is Nothing Then
        If Not IsNumeric(Target.Value) Then
            Target.Interior.Color = RGB(255, 0, 0)
            Target.Value = vbNullString
        Else
            Target.Interior.Color = RGB(255, 255, 255)
        End If
    End If
    
    Application.EnableEvents = True
    
End Sub


Saludos.

Featured Replies

publicado

Yo no borraría la celda en caso de error.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Cells.CountLarge = 1 Then
   If Not Application.Intersect(Target, Range("B15")) Is Nothing Then
       If Not IsNumeric(Target.Value) Then
           Target.Interior.Color = RGB(255, 0, 0)
           'Target.Value = vbNullString
           Target.Select
       Else
           Target.Interior.ColorIndex = xlNone
       End If
   End If
End If
Application.EnableEvents = True
End Sub

 

publicado
  • Autor
  En 19/11/2021 at 16:42 , Gerson Pineda dijo:

Hola

¿Después de borrar la selección, que deseas que haga Excel?

Hola @Gerson Pineda

Cuando selecciono el rango B9:B18 para borrar el contenido, pues, realmente nada solo quiero borrar y que no se coloree de color rojo toda la selección que hice previamente ya que volveré a insertar datos manualmente.

 

Saludos

publicado
  • Autor
  En 19/11/2021 at 16:46 , Antoni dijo:

Yo no borraría la celda en caso de error.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Cells.CountLarge = 1 Then
   If Not Application.Intersect(Target, Range("B15")) Is Nothing Then
       If Not IsNumeric(Target.Value) Then
           Target.Interior.Color = RGB(255, 0, 0)
           'Target.Value = vbNullString
           Target.Select
       Else
           Target.Interior.ColorIndex = xlNone
       End If
   End If
End If
Application.EnableEvents = True
End Sub

 

Hola @Antoni, gracias por tu colaboración,  seguiré tu  recomendación.

Doy por terminado el tema.

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.