Validación de datos dentro de código vba
'Usar validacion de datos dentro de un formulario vba
'
'Hola es mi primer consulta dentro del foro, por cierto antes de ser miembro pude solucionar
'muchos inconvenientes con este formulario, por este motivo necesito hacerte una consulta
'con problemita que tengo y no lo puedo resolver
'esto es un ejmplo:
'un formulario con con un comboBox, una textBox y boton y lo que quiero lograr es que
'no se ingresen datos duplicados, lo pude lograr con validacion de datos en excel, pero
'no se como implmentarlo dentro del formulario, el código que tengo es siguiente la macro
'que grabe este al principio entre whith y end with, el resto es el codigo que funciona de maravilla.
'Usar validacion de datos dentro de un formulario vba''Hola es mi primer consulta dentro del foro, por cierto antes de ser miembro pude solucionar'muchos inconvenientes con este formulario, por este motivo necesito hacerte una consulta'con problemita que tengo y no lo puedo resolver'esto es un ejmplo:'un formulario con con un comboBox, una textBox y boton y lo que quiero lograr es que'no se ingresen datos duplicados, lo pude lograr con validacion de datos en excel, pero'no se como implmentarlo dentro del formulario, el código que tengo es siguiente la macro'que grabe este al principio entre whith y end with, el resto es el codigo que funciona de maravilla.
codigo vba
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=CONTAR.SI($A$1:$A$1048576;A1)<2"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "DATO DUPLICADO"
.InputMessage = ""
.ErrorMessage = "EL CONTACTO YA FIGURA EN LA BASE DE DATOS"
.ShowInput = True
.ShowError = True
End With
Sheets("Hoja1").Select
Range("a2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
If Me.TextBox1.Visible = False Then
ActiveCell = Me.ComboBox1
ActiveCell.Offset(0, 1).Select
Else
ActiveCell = Me.TextBox1
ActiveCell.Offset(1, 0).Select
End If
MsgBox ("Los datos se han agregado Satisfactoriamente a la base")
ComboBox1.Clear
Me.TextBox1 = ""
End Sub
With Selection.Validation .Delete .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=CONTAR.SI($A$1:$A$1048576;A1)<2" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "DATO DUPLICADO" .InputMessage = "" .ErrorMessage = "EL CONTACTO YA FIGURA EN LA BASE DE DATOS" .ShowInput = True .ShowError = TrueEnd With
Sheets("Hoja1"). SelectRange("a2").SelectDo While Not IsEmpty(ActiveCell)ActiveCell.Offset(1, 0). SelectLoopIf Me. TextBox1.Visible = False ThenActiveCell = Me. ComboBox1ActiveCell.Offset(0, 1).SelectElseActiveCell = Me. TextBox1ActiveCell.Offset(1, 0). SelectEnd IfMsgBox ("Los datos se han agregado Satisfactoriamente a la base")ComboBox1. ClearMe.TextBox1 = ""End Sub
'
'Hola es mi primer consulta dentro del foro, por cierto antes de ser miembro pude solucionar
'muchos inconvenientes con este formulario, por este motivo necesito hacerte una consulta
'con problemita que tengo y no lo puedo resolver
'esto es un ejmplo:
'un formulario con con un comboBox, una textBox y boton y lo que quiero lograr es que
'no se ingresen datos duplicados, lo pude lograr con validacion de datos en excel, pero
'no se como implmentarlo dentro del formulario, el código que tengo es siguiente la macro
'que grabe este al principio entre whith y end with, el resto es el codigo que funciona de maravilla.
'Usar validacion de datos dentro de un formulario vba''Hola es mi primer consulta dentro del foro, por cierto antes de ser miembro pude solucionar'muchos inconvenientes con este formulario, por este motivo necesito hacerte una consulta'con problemita que tengo y no lo puedo resolver'esto es un ejmplo:'un formulario con con un comboBox, una textBox y boton y lo que quiero lograr es que'no se ingresen datos duplicados, lo pude lograr con validacion de datos en excel, pero'no se como implmentarlo dentro del formulario, el código que tengo es siguiente la macro'que grabe este al principio entre whith y end with, el resto es el codigo que funciona de maravilla.
codigo vba
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=CONTAR.SI($A$1:$A$1048576;A1)<2"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "DATO DUPLICADO"
.InputMessage = ""
.ErrorMessage = "EL CONTACTO YA FIGURA EN LA BASE DE DATOS"
.ShowInput = True
.ShowError = True
End With
Sheets("Hoja1").Select
Range("a2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
If Me.TextBox1.Visible = False Then
ActiveCell = Me.ComboBox1
ActiveCell.Offset(0, 1).Select
Else
ActiveCell = Me.TextBox1
ActiveCell.Offset(1, 0).Select
End If
MsgBox ("Los datos se han agregado Satisfactoriamente a la base")
ComboBox1.Clear
Me.TextBox1 = ""
End Sub
With Selection.Validation .Delete .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=CONTAR.SI($A$1:$A$1048576;A1)<2" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "DATO DUPLICADO" .InputMessage = "" .ErrorMessage = "EL CONTACTO YA FIGURA EN LA BASE DE DATOS" .ShowInput = True .ShowError = TrueEnd With
Sheets("Hoja1"). SelectRange("a2").SelectDo While Not IsEmpty(ActiveCell)ActiveCell.Offset(1, 0). SelectLoopIf Me. TextBox1.Visible = False ThenActiveCell = Me. ComboBox1ActiveCell.Offset(0, 1).SelectElseActiveCell = Me. TextBox1ActiveCell.Offset(1, 0). SelectEnd IfMsgBox ("Los datos se han agregado Satisfactoriamente a la base")ComboBox1. ClearMe.TextBox1 = ""End Sub
Respuesta de Elsa Matilde
3