Forzar que se introduzcan solo números en excel

Tengo una hoja de excel en donde en la columna C y DE necesito que unicamente si introduzcan valores numéricos y nada de texto.
¿Cómo podría hacer esto?
Otro problema que tengo, es que como le puedo hacer para que no se permita la función Cortar,
unicamente los comandos copiar y pegar.

2 Respuestas

Respuesta
1
La primer pregunta la podes arreglar con la opción Validación, seleccionas todo el rango en cuestión (columnas C y D) y vas al menú Datos > Validación, allí verás que es muy simple de usar, donde dice permitir selecciona Entero (o decimal) y listo.
Respecto a la otra pregunta la cosa se complica porque tenés que atacar todos los flancos (anular el menú, el método abreviado, el icono, etc), creo que salvo que sea estrictamente necesario, sino no me metería con este tema.
Respuesta
1
Para que no se puedan introducir datos que no sean numero, te sitúas en la celda que quieras y pinchas en Datos>Validación en la ventana que aparece la pestaña configuración pones numero entero o decimal eliges el abanico que podrán introducir entre Mínimo y Máximo y en la pestaña mensaje de error escribes lo que quieras que aparezca en texto si introducen valores no permitidos. Tendrás que desproter la celda y proteger la hoja para que el usuario no pueda modificar la validación de datos.
En lo referente a eliminar el menú cortar, este menú se puede acceder a él desde diferentes formas, atajo de teclado Control+x; Control+X; botón derecho del ratón Cortar y desde el menú Edición Cortar. Abría que quitarlos todos y al cerrar el libro volver a activarlos.
Para quitarlos del botón derecho del ratón:
CommandBars("Cell").Controls("Cortar").Delete
Para restaurarlo:
CommandBars("Cell").Controls.Add Type:=msoControlButton, Id:=21, _
Before:=1
Para quitarlo desde atajo del teclado:
Sub No_Cortar() 'Inhabilita los atajos para cortar
Application.OnKey "^x", "Elimina"
Application.OnKey "^X", "Elimina"
End Sub
Sub Elimina()
Cancel = True
End Sub
Para permitirlo:
Sub Elimina()
Cancel = False
End Sub
Para quitar el menú Edición( todos los controles los tendrá en el botón derecho copiar pegar etc)
Sub Menu_Cortar(Estado As Boolean)
 With Application.CommandBars("Worksheet Menu Bar")
 With .Controls("&Edición")
 .Visible = Estado
 End With
 End With
 End Sub
Poniendo el valor a false oculta el menu Edicion y poniendolo a True lo vuelve a mostrar
 Private Sub Muestra()
Menu_Cortar (False)
End Sub
Deberás de armar la macro en el Open del libro para ocultar todo y volverlo a reponer en el Close
>Un saludo
>Julio
En verdad muchas gracias, lo de la validación de datos fue todo un éxito.
En donde aun tengo problemas es en la macro, copie el código para eliminar la opción cortar dentro de la macro que tengo quedándome así:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Target.Value = Application.WorksheetFunction.Proper(Left(Target.Value, 1)) & Mid(Target.Value, 2, Len(Target.Value))
If Right(Target.Value, 1) <> "." Then
Target.Value = Target.Value & "."
End If
End Sub
CommandBars("Cell").Controls("Cortar").Delete
Sub No_Cortar() 'Inhabilita los atajos para cortar
Application.OnKey "^x", "Elimina"
Application.OnKey "^X", "Elimina"
End Sub
Sub Elimina()
Cancel = True
End Sub
Sub Menu_Cortar(Estado As Boolean)
 With Application.CommandBars("Worksheet Menu Bar")
 With .Controls("&Edición")
 .Visible = Estado
 End With
 End With
 End Sub
Pero me sigue permitiendo las 3 opciones que mencionas de cortar.
Gracias y Saludos.
Y porque no pones todo el código en el Open de Excel, y vuelves a activar las opciones en el Close.
>Un saludo
>Julio
Ok, ¿eso se hace poniendo el código dentro de la ventana de visual basic en ThisWorkBook?
¿O en donde lo pongo?
Gracias y perdón por tanta molestia.
Saludos
Insertas un modulo y en él la instrucción para apertura sería
Private Sub Workbook_Open()
'El codigo
End Sub
Y la de cierre
Private Sub Workbook_Close
'El codigo
End Sub
Todo en el mismo modulo
>Un saludo
>Julio
Acabo de crear otro modulo tal y como me dijiste, y coloque el siguiente código, pero cuando abro el archivo se queda pasmado y no reacciona.
¿Qué hice mal?
Gracias y perdón por tantas molestias.
Saludos
Private Sub Workbook_Open()
        CommandBars("Cell").Controls("Cortar").Delete
        Sub No_Cortar() 'Inhabilita los atajos para cortar
            Application.OnKey "^x", "Elimina"
            Application.OnKey "^X", "Elimina"
        End Sub
        Sub Elimina()
            Cancel = True
        End Sub
        Sub Menu_Cortar(Estado As Boolean)
            With Application.CommandBars("Worksheet Menu Bar")
            With .Controls("&Edición")
            .Visible = Estado
            End With
            End With
        End Sub
End Sub
 Private Sub Workbook_Close()
        CommandBars("Cell").Controls("Cortar").Delete
        Sub No_Cortar() 'Inhabilita los atajos para cortar
            Application.OnKey "^x", "Elimina"
            Application.OnKey "^X", "Elimina"
        End Sub
        Sub Elimina()
            Cancel = True
        End Sub
        Sub Menu_Cortar(Estado As Boolean)
            With Application.CommandBars("Worksheet Menu Bar")
            With .Controls("&Edición")
            .Visible = Estado
            End With
            End With
        End Sub
End Sub
Vamos a ver si lo conseguimos:
Inserta un módulo y en el pegas estas lineas de código. Lo cierras y al abrirlo
-No se podrá cortar desde el Menu Edición(no estará)
-Desde el botón derecho (no estará)
-Por atajo de teclado Control+x o control+X (estará inhabilitado)
Cuando cierres el libro se volverá a habilitar todo, para hacer la prueba después de cerrar este libro abre otro cualquiera incluso uno nuevo y veras como todo esta activo.
Private Sub Auto_Open()
        CommandBars("Cell").Controls("Cortar").Delete
           Application.OnKey "^x", "Elimina"
            Application.OnKey "^X", "Elimina"
  With Application.CommandBars("Worksheet Menu Bar")
            With .Controls("&Edición")
            .Visible = False
            End With
            End With
End Sub
 Private Sub Auto_Close()
        CommandBars("Cell").Controls.Add Type:=msoControlButton, ID:=21, _
Before:=1
            Application.OnKey "^x", "Elimina"
            Application.OnKey "^X", "Elimina"
  With Application.CommandBars("Worksheet Menu Bar")
            With .Controls("&Edición")
            .Visible = True
            End With
            End With
        End Sub
  Sub Elimina()
  If Cancel = True Then
  Cancel = False
  Else
  Cancel = True
  End If
        End Sub
>Un saludo
>Julio
PD: Si ya lo has solucionado puntúa y finaliza la consulta.
Hola.
Ya copie el código que me proporcionaste en un nuevo modulo, y en el menu contextual aparece 2 veces el comando cortar. En la barra de herramientas sigue habilitado y también lo puedo ocupar con la combinación de teclas.
¿Tiene qué ver algo si manejo office 2007?
Saludos
Gracias
Si claro en Office 2007 no se puede quitar las barras porque pertenecen a la cinta de opciones y no se pueden manejar desde VBA hay que hacerlo de XLM que desconozco las sentencias, solo te servirá desde Office 2003 hacia atrás.
Si hubieses empezado por aclarame que utilizas Office 2007 habías ahorrado muchísimo tiempo y molestias.
Lo siento
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas