Datos en un textbox formulario

Hola de nuevo prozac. Disculpa pero tadavía soy un poco torpe en esto. Aunque ya me has contestado perfectamente a esta pregunta, pensé que era sencillo pero no consigo ubicar la sentencia para cuando introduzca de nuevo el dato en el textbox y dar aceptar vaya a la siguiente celda en blanco de la columna. Me marcaste como hacerlo pero no lo consigo. Pongo el ejemplo e instrucción que me marcaste. Gracias nuevamente.
      A            B           C           D
1 GATO                  BARCO
2 gafas bolso
3 gorra
4 GANCHO
5
Sentencia buscar nueva celda en blanco en columna:
fila = 1 + Range("A1", Range("A2").End(xlDown)).Row.Count
Código para asociar al texbox al formulario:
Private Sub TextBox1_KeyDown(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim c As String
If KeyAscii = 13 Then 'Se pulso Enter
  c = TextBox1.Text
  Select Case LCase(Left(c, 1))
  Case "g"
     Worksheets("Mihoja").Range("A1").Value = c
  Case "b"
     Worksheets("Mihoja").Range("C1").Value = c
  Case others
End Select
TextBox1.Text =""
End If
End Sub

1 respuesta

Respuesta
1
Prueba con esto:
Private Sub TextBox1_KeyDown(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim c As String
Dim ia As Integer
Dim ic As Integer
If KeyAscii = 13 Then 'Se pulso Enter
  c = TextBox1.Text
  Select Case LCase(Left(c, 1))
  Case "g"
     ia = 1 + Range("A1", Range("A2").End(xlDown)).Row.Count
     Worksheets("Mihoja").Range("A" & ia).Value = c
  Case "b"
     ic = 1 + Range("C1", Range("C2").End(xlDown)).Row.Count
     Worksheets("Mihoja").Range("C" & ic).Value = c
  Case others
End Select
TextBox1.Text = ""
End If
End Sub
Lo que hace es calcular dos indices para saber los finales de las columnas, antes de guardar el dato allí. Pruébalo a ver si es así como lo quieres.
Hola prozac. Lo he probado y me da un error de compilación. Me dice calificador .Row no válido. ¿Qué puede ser?.
ia = 1 + Range("A1", Range("A2").End(xlDown)).Row.Count
Debe ser "... Rows.Count", en plural en ambas lineas (ia e ic). Lo hedebido copiar mal. Disculpa.
Mira a ver si es eso o lo miro con más calma.
He hecho lo que me marcaste y me sale un nuevo error, "Sea producido el error 6 en tiempo de ejecución: Desbordamiento.
ia = 1 + Range("A1", Range("A2").End(xlDown)).Rows.Count
Por mi cuenta fui jugando y cambiando de sitio el orden de la sentencia y con la siguiente funciona:
ia = Range("A6500").End(xlUp).Row + 1
¿Crees qué puede ser correcto?. ¿Lo dejo así?.
Lo que intento hacer con esa sentencia es el equivalente a pulsar flecha abajo con el el shift para encontrar la siguiente celda vacía. Por eso añado el 1. El error de desbordamiento te puede dar si la primera vez no tienes nada en A2 y/o A1. Por lo que veo tu lo haces al contrario, de abajo arriba, pero no veo que sea incorrecto, incluso más sencilla la sentencia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas