¿Cómo puedo condicionar una celda para que acepte unos valores determinados con Microsoft Excel?

Hola, ante todo agradecerte tu interés por compartir tus conocimientos.
Mis preguntas son:
Cómo puedo hacer para condicionar que si en una celda (ejemplo A1)se introduce:
a) Un valor numérico la siguiente celda (ejemploB1)únicamente admita valores numéricos.
b) Una POR la siguiente celda (ejemploB1)únicamente admita los valores SI y NO.
c) Un nulo la siguiente celda (ejemploB1) admita el valor POR de color verde.
Muchas gracias por adelantado.
Saludos

1 respuesta

Respuesta
1
Este es el código que tienes que poner en el evento "Change" del Worksheet.
O sea, que haces Alt+F11 y te vas a hacer doble click encima del nombre de la hoja que te interesa controlar
Borras lo que te salga a la derecha (el SelectionChange) y pones esto:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
'caso que no haya nada
If Range("A1").Value = "" Then
Range("B1").Select
Selection.ClearContents
Selection.Font.ColorIndex = 10
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="X"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'caso que se haya escrito un numero
ElseIf IsNumeric(Target) Then
Range("B1").Select
Selection.ClearContents
Selection.Font.ColorIndex = 0
With Selection.Validation
.Delete
.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="-100000", Formula2:="100000"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'caso que se haya escrito una X
ElseIf Range("A1").Value = "X" Then
Range("B1").Select
Selection.ClearContents
Selection.Font.ColorIndex = 0
With Selection.Validation
.Delete
'en las celdas K1 y K2 tiene que estar escrito SI y NO, puedes ponerlo de color blanco para que no se vea
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$K$1:$K$2"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End If
End Sub
Modifícalo a tu gusto y pon mensajes entrantes y de error, que siempre quedan bien.
Gracias mil, he podido solucionar el problema, y he aprendido algo más sobre Excel(para mi un gran desconocido). Espero que mañana, mi jefe no tenga ninguna otra idea luminosa, para implementar la hoja de excel.
Muchas gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas