Jump to content

Condiciones para Valor ingresado en Textbox


Go to solution Solved by JasallBcn,

Recommended Posts

Buenos días,

Amigos del foro quisiera solicitarles una pequeña ayuda, estoy intentado crear 3 condiciones en un botón de un formulario con el cual pretendo ó busco:

1. No se permita registrar en vacío un textbox.

2. Se evalue el formato si el valor ingresado en el textbox1 se encuentra en formato fecha.

3. Si el valor ingresado en textbox1 es mayor a la fecha determinada no permita el registro.

4. Se¿i el valor del texbox1 es menor a la fecha determinada cargar el valor en la celda indicada.

El formulario cuenta con 3 textboxs y 3 botones para ejecutar las 4 acciones (mencionadas arriba), agradezco la ayuda y/o correcciones que me puedan brindar.

Dim Conttrol As Control
For Each Conttrol In Controls
If TypeOf Conttrol Is TextBox Then
    If Conttrol.Text = "" Then
        MsgBox "El valor no puede estar vacio", vbCritical, "Smart Intelligence Tools"
        Exit Sub
    End If

End If
TextBox2.SetFocus
Next
If TextBox2.Value <> "20221108-99-LA-JB-30401" Then
MsgBox "El valor de la llave Keyserial no es válido ", vbCritical, "Smart Intelligence Tools"
End If
Exit Sub

If TextBox2.Value = "20221108-99-LA-JB-30401" Then
End If
Range("B1").Value = TextBox2.Text

Saludos

JB

userform show según valor de una celda4.xlsm

Link to comment
Share on other sites

@JasallBcn primeramente agradecerte el tiempo brindado para aportar la solución. Revisando me parece se presenta problemas al momento de intentar validar una fecha correcta  y presionar el botón para realizar el registro del textbox en la celda, podrías por favor revisar si te sucede lo mismo.

Quedo atento a los comentarios.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • 28 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Files

  • Download Statistics

    • Files
      150
    • Comments
      87
    • Reviews
      25

  • Crear macros Excel

  • Posts

    • Equipo buenas noches, espero esten bien. Soy nuevo en este mundo del vba de excel. En sintesis mi proyecto es crear estados de cuenta para clientes, para ello disene en excel un estado de cuenta, ahora toca salvar en pdf, esa parte esta lista para un solo documento, pero tengo un data validation list con todos mis clientes, la idea es que se cree un loop que vaya nombre por nombre de la lista y me salve un pdf por cada cliente en una ruta previamente definida. les dejo el codigo que tengo hasta el momento para ver si me pueden ayudar:   Option Explicit Sub GuardarEstado()     Dim nombredearchivo As String     Dim NombreHoja As String     Dim HojaDestino As Range     Dim NuevaFila As Integer     Dim i As Integer     Dim j As Integer     Dim NumFactura As String     Dim Ruta As String     Dim dataValidationCell As Range     Dim dataValidationListSource As Range     Dim dvValueCell As Range     Dim lastrow As Range                    NombreHoja = "Log"     NumFactura = ThisWorkbook.Sheets("Estado").Range("ValCliente").Value     nombredearchivo = "Estado"     Ruta = "C:\Users\jfamilia\Desktop\archivos bck\Archivos Clinimed\Archivos\Estados de cuentas"          Worksheets("Estado").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _                     Ruta & "\" & "Estado De Cuenta-" & NumFactura & ".pdf", Quality:=xlQualityStandard, _                     IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True '----- Defining Variables With ThisWorkbook.Sheets(NombreHoja)     For i = 1 To 1         Set HojaDestino = ThisWorkbook.Sheets(NombreHoja).Range("A1").CurrentRegion         NuevaFila = HojaDestino.rows.Count + 1         .Cells(NuevaFila, 1).Value = Date         .Cells(NuevaFila, 2).Value = Range("ValCliente").Value         .Cells(NuevaFila, 3).Value = Range("ValCodigo").Value         .Cells(NuevaFila, 4).Value = Range("ValCorte").Value         .Cells(NuevaFila, 5).Value = Range("ValBalance").Value         .Cells(NuevaFila, 6).Value = Range("ValAtraso").Value         .Cells(NuevaFila, 7).Value = Range("ValFacVen").Value                               Next i End With MsgBox "Alta exitosa", vbInformation, "EXCELeINFO" End Sub
    • Buenas, @DeadGoreRed Entiendo que ese código lo has grabado desde la grabadora de macros. Algo muy sencillo sería que identificaras una casilla en concreto de cada hoja (puede ser la misma o diferente) y chequearas si tiene o no datos, es decir, si no cumple la condición para que siga ejecutándose el código. Si no lo cumple, puedes incluir algo del tipo "Goto..." para pasar a otra zona del código donde se encuentre la siguiente hoja a chequear. La mejor opción en el caso de que todas tus hojas tuvieran una estructura de datos iguales es que incluyeras al inicio un bucle del tipo "For each" para que pasara por cada hoja del libro y en caso de cumplirse la condición ejecutara el código. Así no tendrías ese código tan largo para hacer lo mismo en cada hoja. Si te parece bien la idea, podemos intentar incluir esas pequeñas modificaciones y lo pruebas. Un saludo, Tese
    • Sub FORMATO() ' ' TEXTO_COLUMNAS Macro '      Sheets("A-S1-001").Select          Range("J2").Select     Range(Selection, Selection.End(xlDown)).Select     Range(Selection, Selection.End(xlDown)).Select     Selection.TextToColumns Destination:=Range("J2"), DataType:=xlFixedWidth, _         FieldInfo:=Array(Array(0, 9), Array(10, 1)), TrailingMinusNumbers:=True     Selection.NumberFormat = "h:mm:ss"     Range("K2").Select     Range(Selection, Selection.End(xlDown)).Select     Range(Selection, Selection.End(xlDown)).Select     Selection.ClearContents     Range("K2").Select     Application.CutCopyMode = False     ActiveCell.FormulaR1C1 = "=RC[-1]-R[1]C[-1]"     Range("K2").Select     Selection.Copy     Range("K2:K1001").Select     ActiveSheet.Paste     Selection.End(xlUp).Select     Columns("K:K").Select     Application.CutCopyMode = False     Selection.Copy     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _         :=False, Transpose:=False     Application.CutCopyMode = False     Range("K1").Select     Selection.AutoFilter     ActiveSheet.Range("$A$1:$N$1001").AutoFilter Field:=11, Criteria1:= _         "00:00:00"     Range("K1000").Select     Range(Selection, Selection.End(xlDown)).Select     Selection.ClearContents     Range("K1").Select     ActiveSheet.Range("$A$1:$N$1001").AutoFilter Field:=11     Range("K2").Select     ActiveWorkbook.Worksheets("A-S1-001").Sort.SortFields.Clear     ActiveWorkbook.Worksheets("A-S1-001").Sort.SortFields.Add2 Key:=Range( _         "K2:K1000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _         xlSortNormal     With ActiveWorkbook.Worksheets("A-S1-002").Sort         .SetRange Range("A2:N1000")         .Header = xlNo         .MatchCase = False         .Orientation = xlTopToBottom         .SortMethod = xlPinYin         .Apply     End With     Selection.End(xlUp).Select     Selection.End(xlToLeft).Select          Sheets("A-S1-002").Select          Range("J2").Select     Range(Selection, Selection.End(xlDown)).Select     Range(Selection, Selection.End(xlDown)).Select     Selection.TextToColumns Destination:=Range("J2"), DataType:=xlFixedWidth, _         FieldInfo:=Array(Array(0, 9), Array(10, 1)), TrailingMinusNumbers:=True     Selection.NumberFormat = "h:mm:ss"     Range("K2").Select     Range(Selection, Selection.End(xlDown)).Select     Range(Selection, Selection.End(xlDown)).Select     Selection.ClearContents     Range("K2").Select     Application.CutCopyMode = False     ActiveCell.FormulaR1C1 = "=RC[-1]-R[1]C[-1]"     Range("K2").Select     Selection.Copy     Range("K2:K1001").Select     ActiveSheet.Paste     Selection.End(xlUp).Select     Columns("K:K").Select     Application.CutCopyMode = False     Selection.Copy     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _         :=False, Transpose:=False     Application.CutCopyMode = False     Range("K1").Select     Selection.AutoFilter     ActiveSheet.Range("$A$1:$N$1002").AutoFilter Field:=11, Criteria1:= _         "00:00:00"     Range("K1000").Select     Range(Selection, Selection.End(xlDown)).Select     Selection.ClearContents     Range("K1").Select     ActiveSheet.Range("$A$1:$N$1002").AutoFilter Field:=11     Range("K2").Select     ActiveWorkbook.Worksheets("A-S1-004").Sort.SortFields.Clear     ActiveWorkbook.Worksheets("A-S1-004").Sort.SortFields.Add2 Key:=Range( _         "K2:K1000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _         xlSortNormal     With ActiveWorkbook.Worksheets("A-S1-002").Sort         .SetRange Range("A2:N1000")         .Header = xlNo         .MatchCase = False         .Orientation = xlTopToBottom         .SortMethod = xlPinYin         .Apply     End With     Selection.End(xlUp).Select     Selection.End(xlToLeft).Select          Sheets("A-S1-003").Select          Range("J2").Select     Range(Selection, Selection.End(xlDown)).Select     Range(Selection, Selection.End(xlDown)).Select     Selection.TextToColumns Destination:=Range("J2"), DataType:=xlFixedWidth, _         FieldInfo:=Array(Array(0, 9), Array(10, 1)), TrailingMinusNumbers:=True     Selection.NumberFormat = "h:mm:ss"     Range("K2").Select     Range(Selection, Selection.End(xlDown)).Select     Range(Selection, Selection.End(xlDown)).Select     Selection.ClearContents     Range("K2").Select     Application.CutCopyMode = False     ActiveCell.FormulaR1C1 = "=RC[-1]-R[1]C[-1]"     Range("K2").Select     Selection.Copy     Range("K2:K1001").Select     ActiveSheet.Paste     Selection.End(xlUp).Select     Columns("K:K").Select     Application.CutCopyMode = False     Selection.Copy     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _         :=False, Transpose:=False     Application.CutCopyMode = False     Range("K1").Select     Selection.AutoFilter     ActiveSheet.Range("$A$1:$N$1001").AutoFilter Field:=11, Criteria1:= _         "00:00:00"     Range("K1000").Select     Range(Selection, Selection.End(xlDown)).Select     Selection.ClearContents     Range("K1").Select     ActiveSheet.Range("$A$1:$N$1000").AutoFilter Field:=11     Range("K2").Select     ActiveWorkbook.Worksheets("A-S1-003").Sort.SortFields.Clear     ActiveWorkbook.Worksheets("A-S1-003").Sort.SortFields.Add2 Key:=Range( _         "K2:K1000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _         xlSortNormal     With ActiveWorkbook.Worksheets("A-S1-003").Sort         .SetRange Range("A2:N1000")         .Header = xlNo         .MatchCase = False         .Orientation = xlTopToBottom         .SortMethod = xlPinYin         .Apply     End With     Selection.End(xlUp).Select     Selection.End(xlToLeft).Select Módulo3.bas
    • Hola Antoni. El libro en cuestión no tiene ninguna macro. ¿UDF? ¿QUE ES? El libro tiene 41 hojas. Una por cada VALOR del IBEX 35 más 6 de propios cálculos. El cursor parpadea varias veces cada minuto al actualizarse AHORA(). Si pongo macros para actualizar Ahora() cada segundo, el parpadeo es casi constante. El libro es de PETETE (gordo), 36,2 MB. Muchísimas gracias por tu atención. P.D. ¿Podría ser la consulta a WEB de BOLSA MADRID?
    • Sin entrar en la solución que te propone @Antoni, que dado quién lo hace funcionará estupendamente, ¿has pensado en utilizar un Combobox en lugar de un Textbox para filtrar por año? Quizás podrías cargarlo cuando haces el primer filtrado del TextBox, de manera que te aparecieran las opciones posibles del valor AÑO para ese cliente al desplegar el Combobox. Un saludo a todos, Tese
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy