Ayuda con formulario

Hola, ojalá puedas ayudarme.
En un form tengo 3 textbox, en el 1 ingreso caracteres magnéticos, en el 2 y 3 separo estos caracteres para obtener un número que válido si se encuentra en una lista y si está al hacer click en un botón ejecuta una macro que copia una "A" el la fila de al lado del código. Hasta aquí todo bien, pero lo que no logro hacer es que se copie la "A" en tiempo real. Te adjunto lo que tengo:
rivate Sub TextBox1_AfterUpdate()
Dim valor As Integer
Dim rango As String
Dim MONTO_CH As String
Dim NRO_CH As String
Application.ScreenUpdating = False
Sheets("FACC10L1").Range("T1") = TextBox1
Sheets("FACC10L1").Select
If Range("AB1") = 1 Then
TextBox1.SetFocus
MsgBox ("POSIBLES ERRORES :" & Chr(10) & "- Nº INCOMPLETO" & Chr(10) & "- CARACTERES DAÑADOS" & Chr(10) & "- PRORROGADO O PAGADO"), vbExclamation, "E R R O R...NO EXISTE EN LA BASE DE DATOS"
Else
MONTO_CH = Range("U2")
TextBox2.Value = MONTO_CH
TextBox2.Value = Format(TextBox2.Value, "#,##0.00")
NRO_CH = Range("T2")
TextBox3.Value = NRO_CH
End If
End Sub
Private Sub Text1_LostFocus()
Text3.Text = Format(Val(Text3.Text), "#,##0.00")
End Sub
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
UserForm1.Hide
Sheets("FACC10L1").Select
fila = 15
codigo = Range("T2")
If codigo <> "" Then
'While fila <= 200
If Cells(fila, 2).Value = Val(codigo) Then
Cells(fila, 1).Value = "1"
fila = 500
Else
fila = fila + 1
End If
'Wend
QUEST = MsgBox("¿Desea seguir asignando?", vbYesNo)
If QUEST = True Then
MOSTRAR_FORM1
Else
Exit Sub
End If
End If
End Sub

1 respuesta

Respuesta
1
En ninguna de tus rutinas hay una instrucción que envíe una A a alguna celda.
Hay, si, una instrucción que envía un 1 a la celda a la izquierda del código, que no se ve porque tenés la instrucción:
Application.ScreenUpdating = False
Esta instrucción oculta todo lo que hace la macro hasta que la colocás en True, al salir (que no está).
Para tu caso ninguna de las 2 hace falta, podes eliminar esa línea .
Gracias. Hice algunos cambios. Te cuento que yo de programar sé muy muy poco y que lo que he hecho lo hice copiando algunas cosas de por aquí y por acá, te agradeceré si puedes ayudarme y decirme si hay algo mal en lo de abajo. El problema que tengo ahora es que al llamar al formulario por primera vez y pasar el primer docto con caracteres magnéticos no le asigna automáticamente el "1", sino que lo hace al salir, en cambio si abro el formulario y lo cierro, entonces ahí lo hace. Espero que no sea mucho pedir si pudieras revisarlo y comentarme.
Private Sub UserForm_Initialize()
TextBox1 = ""
Application.ScreenUpdating = False
ListBox1.RowSource = ""
Sheets("FACC10L1").Select
ListBox1.ColumnCount = 3
ListBox1.RowSource = "listabco1"
ListBox1.BoundColumn = 0
ListBox2.RowSource = ""
Sheets("FACC10L1").Select
ListBox2.ColumnCount = 3
ListBox2.RowSource = "listabco2"
ListBox2.BoundColumn = 0
End Sub
Private Sub TextBox1_AfterUpdate()
Dim MONTO_CH As String
Dim NRO_CH As String
Sheets("FACC10L1").Range("T1") = TextBox1
Sheets("FACC10L1").Select
NRO_CH = Range("T2")
MONTO_CH = Range("U2")
TextBox2.Value = NRO_CH
TextBox3.Value = MONTO_CH
TextBox3.Value = Format(TextBox3.Value, "#,##0.00")
End Sub
Private Sub TextBox2_AfterUpdate()
If Range("AB1") = 1 Then
MsgBox ("POSIBLES ERRORES :" & Chr(10) & "- Nº INCOMPLETO" & Chr(10) & "- CARACTERES DAÑADOS" & Chr(10) & "- PRORROGADO O PAGADO"), vbExclamation, "E R R O R...NO EXISTE EN LA BASE DE DATOS"
TextBox1.SetFocus
TextBox1 = ""
Else
TextBox1 = ""
End If
End Sub
Private Sub CommandButton2_Click()
CONTROL_CH_ARQUEADO
fila = 15
codigo = TextBox2.Value
If codigo <> "" Then
While fila <= 1000
If Cells(fila, 2).Value = Val(codigo) Then
Cells(fila, 1).Value = "1"
fila = 1500
Else
fila = fila + 1
End If
Wend
If fila <> 1500 Then
MsgBox ("POSIBLES ERRORES :" & Chr(10) & "- Nº INCOMPLETO" & Chr(10) & "- CARACTERES DAÑADOS" & Chr(10) & "- PRORROGADO O PAGADO"), vbExclamation, "E R R O R...NO EXISTE EN LA BASE DE DATOS"
'*
TextBox1.SetFocus
Else
TextBox1 = ""
End If
End If
TextBox2 = ""
TextBox3 = ""
'TextBox1 = ""
TextBox1.SetFocus
End Sub
Private Sub CommandButton1_Click()
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
UserForm1.Hide
End Sub
Esta muy bien lo que haces, equivocando y probando se va aprendiendo.
Ahora...¿vos leíste mi respuesta anterior? El problema, te decía, está en que tenés una instrucción que dice:
Application.ScreenUpdating = False
¿Qué hace esta instrucción? Que no se vea lo que hace la macro, por eso no ves que coloque el 1 o A.
Como está en la rutina de inicialización solo lo hace la primera vez que llamás al Form
Private Sub UserForm_Initialize()
TextBox1 = ""
Application.ScreenUpdating = False 'quitá esta línea y problema resuelto.
Sí leí tu respuesta anterior, se me fue quitar la línea. Ahora he estado probando y anda bien, salvo algunas cosas con los errores, pero eso lo arreglo. Gracias por la respuesta, eres muy amable. Si tengo dudas te vuelvo a consultar. Chao.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas