Macro para evitar la introducción de texto en un rango de celdas

Tengo una hoja la cual solo necesito que pongan valor numérico en un rango determinado... En este caso el rango es el sig. A1:D500

Entonces si intentan poner letras en ese rango que salga un msgbox de error...

1 respuesta

Respuesta
1

Te anexo la macro, debes ponerla en los eventos de la hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("A1:D500")) Is Nothing Then
        For Each c In Target
            If c.Value <> "" Then
                If Not IsNumeric(c.Value) Then
                    Application.EnableEvents = False
                    MsgBox "El dato no es númerico", vbexclamantion, "SÓLO NÚMEROS"
                    c.Value = ""
                    c.Select
                    Application.EnableEvents = True
                End If
            End If
        Next
    End If
End Sub

¿SE puede poner decimales también? ¿Con ese código?

si, ejemplo .01 ó 5.33

perfecto ¡Gracias!  

HOLA DAN

Como la adapto para agregarla un código

El cual es este.. si quieres abro una pregunta

Sub PAN_PEDIR()
Application.ScreenUpdating = False

If Range("E1") > 0 Then

MsgBox "NO PODEMOS CONTINUAR, PORFAVOR: VERIFIQUE SU PEDIDO", vbExclamation, "LO SENTIMOS"
Exit Sub
End If
Dim s As Long
s = Application.WorksheetFunction.Sum(Range("G6:T300"))

If s = Empty Then
MsgBox "NO HAY CANTIDADES PARA REALIZAR PEDIDO", vbCritical, "ERROR"


Else

Dim PEDIDO As Variant
' Application.Speech.Speak "¿EL CLIENTE SOLICITARÁ FACTURA?"
PEDIDO = MsgBox("¿REALIZAR PEDIDO?", vbYesNo + vbQuestion, "AVISO")
If PEDIDO = vbYes Then

'FILTRA LOS PRODUCTOS CON MAYOR A CERO
ActiveSheet.Unprotect
ActiveSheet.Range("$F$5:$F$300").AutoFilter Field:=1, Criteria1:=">0", _
Operator:=xlAnd
'IMPRIMIMOS REPORTE APTS
Range("B2:P301").Select
ActiveSheet.PageSetup.PrintArea = "$B$2:$T$301"
'QUITAMOS RELLENO VERDE
ActiveSheet.Unprotect
Cells.Select
Range("B1").Activate
With Selection.Interior
ActiveSheet.Unprotect
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'IMPRIMIMOS
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("PANADERIA").Select
Application.ScreenUpdating = False
Call guardaCopiaPANADERIA
'AQUÍ FILTRA MAYOR QUE CERO EN LA HOJA DE IMPRESIÓN
Sheets("IMPRIME PAN").Activate
ActiveSheet.Unprotect
ActiveSheet.Range("$C$5:$C$300").AutoFilter Field:=1, Criteria1:=">0", _
Operator:=xlAnd
'QUITAMOS RELLENO VERDE
ActiveSheet.Unprotect
Cells.Select
Range("B1").Activate
With Selection.Interior
ActiveSheet.Unprotect
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'IMPRIMIMOS POR SEGUNDA VEZ
Range("B2:F308").Select
ActiveSheet.PageSetup.PrintArea = "$B$2:$f$308"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
'REGRESAMOS AL AREA CORRESPONDIENTE
Sheets("PANADERIA").Select
'QUITAMOS FILTRO DEL AREA Y BORRAMOS CONTENIDO
Application.ScreenUpdating = False
ActiveSheet.Unprotect
ActiveSheet.Range("$F$5:$F$300").AutoFilter Field:=1
Range("G6:T300").Select
ActiveSheet.Unprotect
Selection.ClearContents
Range("G6").Select
'QUITAMOS FILTRO DE IMPRESIÓN
Sheets("IMPRIME PAN").Activate
ActiveSheet.Range("$C$5:$C$300").AutoFilter Field:=1
'REGRESAMOS DE NUEVO AL AREA
Sheets("PANADERIA").Select
ActiveSheet.Unprotect
[E2] = "PN" & Format(Val(Right([E2], 3)) + 1, "00000")
MsgBox "PEDIDO REALIZADO", vbOKOnly, "EN HORA BUENA"
If PEDIDO = vbNo Then
MsgBox "PEDIDO CANCELADO", vbInformation, "PANADERIA"
End If
End If
End If
End Sub

Abre la nueva pregunta y me explicas qué quieres adaptar o qué quieres que haga la macro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas