¿Como insertar datos con formulario sin cambiar de hoja?

Tengo un formulario en hoja1 hecho con vba en excel, el problema que al dar guardar me cambia a la hoja 2 en donde esta la base de datos.

yo uso sheets("hoja2").select 

Necesito ayuda porfa son muchos datos que tengo que ingresar y no puedo estar cambiando de hoja cada vez que le doy guardar al formulario

Necesito tener el formulario en hoja1 y que los datos se guarden en hoja2 pero sin mover mi formulario a la hora 2 para poder seguir trabajando.

2 Respuestas

Respuesta
1

H o l a:

Si no quieres cambiar de hoja, tienes que hacer referencia a la hoja, por ejemplo:

Si tienes esto:

    Sheets("Hoja2").Select
    Range("A5").Select
    Selection.Value = TextBox1
    Range("A6").Select
    Selection.Value = TextBox2
    Range("A7").Select
    Selection.Value = TextBox3

'

Podrías cambiarlo por esto:

    Sheets("Hoja2").Range("A5") = TextBox1
    Sheets("Hoja2").Range("A6") = TextBox2
    Sheets("Hoja2").Range("A7") = TextBox3


Otra variante, personalmente es la que yo prefiero, de esta forma no tienes que escribir repetidamente el nombre de la hoja:

    Set h2 = Sheets("Hoja2")
    h2.Range("A5") = TextBox1
    h2.Range("A6") = TextBox2
    h2.Range("A7") = TextBox3

También podrás encontrar que funciona de esta forma:

    With Sheets("Hoja2")
        .Range("A5") = TextBox1
        .Range("A6") = TextBox2
        .Range("A7") = TextBox3
    End With

Con cualquiera de las opciones anteriores ya no es necesario que selecciones la "Hoja2", por lo tanto, el formulario puede permanece en la "Hoja1".


'

Muchas gracias por tu respuesta, ahora puedo tener mi formulario en hoja1 y mis datos guardandose en hoja2, el problema que me surgio es que al ingresar un nuevo dato, este sobre escribe donde estaba el anterior, es decir, si la celda es a2 siempre mis datos se van a esa celda y no hacia abajo. se puede ingresar datos sin que pise el anterior??

Por ejemplo:

Private Sub CommandButton1_Click()
    Set h2 = Sheets("Hoja2")
    u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1 'siguiente fila vacía de la columna A en la hoja2
    h2.Range("A" & u) = TextBox1
    h2.Range("B" & u) = TextBox2
    h2.Range("C" & u) = TextBox3
End Sub

Observa como en la variable u estoy poniendo la siguiente fila vacía de la columna A de la hoja2, entonces el siguiente dato se guardará en una fila vacía y no te va a sobreescribir.

'

'

Respuesta
1

Una opción es luego de cargar los datos, que incluyas, como última instrucción

sheets("hoja1").select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas