Unir código de varios TextBox en una sola rutina y que responda a todos
Tengo Excel 2010 y 2013
Código:
Creo que toda rutina que tenga la misma finalidad, podría ser unida para no tener el evento tan largo.Private Sub CommandButton1_Click() Dim i As Double Dim final As Double Dim hoy As Date Dim validar As Boolean Application.ScreenUpdating = False 'ELEGIR PERSONA JURIDICA If ALTA_CLIENTE.ComboBox1 = Empty Then MsgBox "DEBES SELECCIONAR LA PERSONALIDAD JURIDICA DEL CLIENTE", vbInformation, "PERSONALIDAD JURIDICA" Exit Sub End If 'NOMBRE DEL CLIENTE If ALTA_CLIENTE.TextBox1 = Empty Then MsgBox "DEBES INTRODUCIR EL NOMBRE DEL CLIENTE", vbInformation, "NOMBRE O RAZÓN SOCIAL" Exit Sub End If 'PRIMER APELLIDO DEL CLIENTE. If ALTA_CLIENTE.TextBox2 = Empty And ALTA_CLIENTE.ComboBox1 <> "PERSONA JURIDICA" Then MsgBox "DEBES INTRODUCIR EL PRIMER APELLIDO DEL CLIENTE", vbInformation, "PRIMER APELLIDO" Exit Sub End If 'SEGUNDO APELLIDO DEL CLIENTE If ALTA_CLIENTE.TextBox3 = Empty And ALTA_CLIENTE.ComboBox1 <> "PERSONA JURIDICA" Then MsgBox "DEBES INTRODUCIR EL SEGUNDO APELLIDO DEL CLIENTE", vbInformation, "SEGUNDO APELLIDO" Exit Sub End If 'SEXO DEL CLIENTE If ALTA_CLIENTE.OptionButton1.Value = False And ALTA_CLIENTE.OptionButton2.Value = False And ALTA_CLIENTE.ComboBox1 <> "PERSONA JURIDICA" Then MsgBox "DEBES INDICAR EL SEXO DEL CLIENTE", vbInformation, "SEXO" Exit Sub End If 'FECHA DE NACIMIENTO If ALTA_CLIENTE.TextBox4 = Empty And ALTA_CLIENTE.ComboBox1 <> "PERSONA JURIDICA" Then MsgBox "INTRODUCE LA FECHA DE NACIMIENTO DEL CLIENTE", vbInformation, "FECHA DE NACIMIENTO" Exit Sub End If validarfecha = IsDate(ALTA_CLIENTE.TextBox4.Value) If validarfecha = False And ALTA_CLIENTE.ComboBox1 <> "PERSONA JURIDICA" Then MsgBox "DEBES INTRODUCIR EL SIGUIENTE FORMATO PARA LA FECHA 00/00/0000", vbCritical, "FECHA DE NACIMIENTO" Exit Sub End If 'HACEMOS UN CONTROL DE QUE LA FECHA NUNCA SEA MAYOR QUE EL DÍA DE HOY hoy = Date If (ALTA_CLIENTE.TextBox4.Value) > hoy And ALTA_CLIENTE.ComboBox1 <> "PERSONA JURIDICA" Then MsgBox "LA FECHA QUE ESTÁS INTRODUCIENDO ES MAYOR QUE EL DÍA DE HOY, ASEGÚRATE QUE LOS DATOS INTRODUCIDOS SON CORRECTOS", vbCritical, "FECHA DE NACIMIENTO" Exit Sub End If 'TIPO DE DOCUMENTO QUE LO ACREDITA If ALTA_CLIENTE.ComboBox2 = Empty Then MsgBox "DEBES INDICAR UN TIPO DE DOCUMENTO", vbInformation, "TIPO DE DOCUMENTO" Exit Sub End If 'NUMERO DE DOCUMENTO If ALTA_CLIENTE.TextBox5 = Empty Then MsgBox "DEBES INTRODUCIR UN NUMERO DE DOCUMENTO", vbInformation, "NUMERO DE DOCUMENTO" Exit Sub End If 'NUMERO DE DOCUMENTO If ALTA_CLIENTE.ComboBox1 = "PERSONA JURIDICA" And ALTA_CLIENTE.ComboBox2 <> "CIF" Then MsgBox "UNA PERSONA JURIDICA SOLO PUEDE TENER CIF COMO NUMERO DE DOCUMENTO", vbExclamation, "NUMERO DE DOCUMENTO" Exit Sub End If 'NUMERO DE DOCUMENTO If ALTA_CLIENTE.ComboBox1 = "PERSONA FISICA" And ALTA_CLIENTE.ComboBox2 = "CIF" Then MsgBox "UNA PERSONA FISICA NO PUEDE TENER CIF COMO NUMERO DE DOCUMENTO", vbExclamation, "NUMERO DE DOCUMENTO" Exit Sub End If 'TIPO DE VIA If ALTA_CLIENTE.ComboBox3 = Empty Then MsgBox "DEBES INDICAR UN TIPO DE VIA", vbInformation, "TIPO DE VIA" Exit Sub End If 'NOMBRE DE LA VIA If ALTA_CLIENTE.TextBox6 = Empty Then MsgBox "DEBES INTRODUCIR EL NOMBRE DE LA VIA", vbInformation, "NOMBRE DE LA CALLE" Exit Sub End If 'NUMERO DE LA VÍA If ALTA_CLIENTE.TextBox7 = Empty Then MsgBox "INTRODUCE EL NUMERO DE LA VIA", vbInformation, "NUMERO" Exit Sub End If 'CONTROLAMOS QUE SEA NUMERO, EN CASO DE NO TENER NUMERO "S/N" Validarn_via = IsNumeric(ALTA_CLIENTE.TextBox7.Value) Or ALTA_CLIENTE.TextBox7.Value = "S/N" If Validarn_via = False Then MsgBox "DEBES INTRODUCIR UN DATO NUMÉRICO EN NUMERO DE VIA O SIN NUMERO CON LAS SIGUIENTES LETRAS:S/N", vbCritical, "NUMERO" Exit Sub End If 'NUMERO DE PISO If ALTA_CLIENTE.TextBox8 = Empty Then MsgBox "INTRODUCE EL NUMERO DE PISO", vbInformation, "PISO" Exit Sub End If 'CONTROLAMOS QUE SEA NUMERO, O SI ES VIVIENDA UNIFAMILIAR Validarn_via = IsNumeric(ALTA_CLIENTE.TextBox8.Value) Or ALTA_CLIENTE.TextBox8.Value = "CASA" If Validarn_via = False Then MsgBox "DEBES INTRODUCIR UN DATO NUMÉRICO EN NUMERO DE PISO O SI SE TRATA DE UNA CASA INDICAR: CASA", vbCritical, "PISO" Exit Sub End If 'LETRA O PUERTA DE LA VIVIENDA If ALTA_CLIENTE.TextBox9 = Empty Then MsgBox "INTRODUCE LETRA O PUERTA", vbInformation, "LETRA/PUERTA" Exit Sub End If 'NOMBRE DE LA CIUDAD If ALTA_CLIENTE.TextBox10 = Empty Then MsgBox "INTRODUCE EL NOMBRE DE LA CIUDAD DEL CLIENTE", vbInformation, "CIUDAD" Exit Sub End If 'CODIGO POSTAL If ALTA_CLIENTE.TextBox11 = Empty Then MsgBox "INTRODUCE UN CODIGO POSTAL", vbInformation, "CODIGO POSTAL" Exit Sub End If 'CONTROLAMOS QUE SEA NUMERO Validar_cpostal = IsNumeric(ALTA_CLIENTE.TextBox11.Value) If Validar_cpostal = False Then MsgBox "DEBES INTRODUCIR UN DATO NUMÉRICO PARA EL CODIGO POSTAL", vbCritical, "CODIGO POSTAL" Exit Sub End If 'ELEGIMOS PROVINCIA If ALTA_CLIENTE.ComboBox4 = Empty Then MsgBox "INDICA LA PROVINA DE RESIDENCIA DEL CLIENTE", vbInformation, "PROVINCIA/REGION" Exit Sub End If 'ELEGIMOS PAIS If ALTA_CLIENTE.ComboBox5 = Empty Then MsgBox "INDICA EL PAIS DE RESIDENCIA CLIENTE", vbInformation, "PAIS" Exit Sub End If 'TELEFONO MOVIL If ALTA_CLIENTE.TextBox12 = Empty Then MsgBox "INTRODUCE UN TELEFONO MOVIL DE CONTACTO", vbInformation, "TELEFONO MOVIL" Exit Sub End If 'CONTROLAMOS QUE SEA NUMERO Validartelefono = IsNumeric(ALTA_CLIENTE.TextBox12.Value) If Validartelefono = False Then MsgBox "DEBES INTRODUCIR UN DATO NUMÉRICO PARA EL NÚMERO DE TELEFENO MOVIL", vbCritical, "TELEFONO MOVIL" Exit Sub End If 'CONTROLAMOS QUE SOLO QUE SEA NUMERO, PUEDE QUEDAR VACIO Validartelefono = IsNumeric(ALTA_CLIENTE.TextBox13.Value) If Validartelefono = False And ALTA_CLIENTE.TextBox13.Value <> Empty Then MsgBox "DEBES INTRODUCIR UN DATO NUMÉRICO PARA EL NÚMERO DE TELEFONO FIJO", vbCritical, "TELEFONO FIJO" Exit Sub End If 'EMAIL If ALTA_CLIENTE.TextBox14 = Empty Then MsgBox "INTRODUCE UN CORREO ELECTRONICO DE CONTACTO", vbInformation, "EMAIL" Exit Sub End If 'CONTROLAMOS QUE TENGA "@" Y UN "." If InStr(1, ALTA_CLIENTE.TextBox14.Text, "@") And InStr(1, ALTA_CLIENTE.TextBox14.Text, ".") = 0 Then MsgBox "INTRODUCE UN CORREO ELECTRONICO VALIDO", vbCritical, "EMAIL" Exit Sub End If Worksheets("DATOS").Visible = True Worksheets("DATOS").Select final = Range("J" & Rows.Count).End(xlUp).Row + 1 For i = 2 To final If Worksheets("DATOS").Cells(i, 1) = Empty Then final = i Exit For End If Next 'VERIFICAR QUE NO EXISTA UN CLIENTE CON EL MISMO DOCUMENTO For i = 2 To final If Worksheets("DATOS").Cells(i, 10) = ALTA_CLIENTE.TextBox5 And Worksheets("DATOS").Cells(i, 9) = ALTA_CLIENTE.ComboBox2 Then MsgBox "YA EXISTE UN CLIENTE CON ESE DOCUMENTO, REVISA LA INFORMACIÓN", vbCritical, "NUMERO DE DOCUMENTO" ALTA_CLIENTE.TextBox5.BackColor = vbRed Worksheets("DATOS").Visible = False Application.ScreenUpdating = True Exit Sub Exit For End If Next ALTA_CLIENTE.TextBox5.BackColor = vbWhite CONFIRMAR_ALTA.Show End Sub
Esto realmente será para expertos y conocedores, donde yo no estoy incluido
El mensaje debería ( pido) que el MsgBox mencione el control que le faltan datos
Gracias de una