Insertar desde TextBox, ultima fila

Desde el textventa inssertar a par5tir de la ultima linea ocupada, en la 1ª vacía.

Tal vez el evento change del TextVoenta no sea el adecuado, este textVenta_change esta para otro evento, este esta en el código que puedes verificar en el libro.

Loa detalles están en la hoja En curso y también en el mail que acabo de enviarte

PrivateSubTextVenta_Change()'no Inserta después de la ultima linea ocupada(1ª vacía)
Application.ScreenUpdating = False
Sheets("Datos").Range("Q1") = Sheets("Inicio").TextVenta.Value
Sheets("Datos").Select
With Sheets("Datos").Range("O7:O12")
.Formula = "=IF($I7="""","""",$I7*$Q$1)"
.NumberFormat = """Bs.F"" * #,##0.00;""Bs.F"" * -#,##0.00"
End With
Sheets("Inicio").Select
Application.ScreenUpdating = True
End Sub

Salu2

Respuesta
1

El codigo que tienes para buscar la ultima fila es correcto, solo lo tienes q adaptar a tus necesidades.

Range("A65536").End(xlUp).Offset(1, 0).Select

si lo quieres para la columna O y que pueda funcionar hasta la fila 5000 entonces:

Range("O5001").End(xlUp).Offset(1, 0).Select

para tu codigo:

PrivateSubTextVenta_Change()'no Inserta después de la ultima linea ocupada(1ª vacía)
Application.ScreenUpdating = False
Sheets("Datos").Range("Q1") = Sheets("Inicio").TextVenta.Value
Sheets("Datos").Select
activesheet.Range("O5001").End(xlUp).Offset(1, 0).Select
activecell.Formula = "=IF($I7="""","""",$I7*$Q$1)"
.NumberFormat = """Bs.F"" * #,##0.00;""Bs.F"" * -#,##0.00"
End With
Sheets("Inicio").Select
Application.ScreenUpdating = True
End Sub

 Esto funcionaria para una linea, no se si quieres poner la formula en mas lineas, ademas deberias controlar que si la linea 5000 esta ocupada no haga nada, simplemente controlando antes con un IF si la celda O5000 esta vacia o no

El formato no es tanto rollo para mi, lo que si la inserción de la formula.

No e si te diste cuenta que en tu código esta un End With sin With? esto en caso de la formula o, elimino la linea End With formula y de formato, 3 lineas? porque la de formato contiene un rango y usa la celda Q1 como suplemento, ese rango deja de existir una ves que va insertar a partir de la ultima ocupada en O hasta O5000. Insisto en la columna O a pesar de mi equivocación en la formula menciona la I pero es la O

Prueba y hablo

La referencia a la columna I está bien, disculpa haberme enrollado.

Me inserta la referencia existente en Q1 en la columna O hasta la linea 20 si escribo en el TextVenta 1.20, si escribo 1.18 me inserta hasta la linea 18 y también me cambia el porcentaje en las celdas anteriores, cosa que no conviene hacer

LA cosa seria deshacer las lineas

Sheets("Datos").Range("Q1") = Sheets("Inicio").TextVenta.Value

.NumberFormat = """Bs.F"" * #,##0.00;""Bs.F"" * -#,##0.00"

y a esta activecell.Formula = "=IF($I7="""","""",$I7*$Q$1)" hacer una corrección o reemplazarla (por la opción que tu creas conveniente) para que SOLO sea insertada a partir de la ultima ocupada(primera vacía) y hacer siempre referencia progresiva a la celda de la columna I si esta vacía nada acuse en la O, si I contiene pus que de el valor.

En este caso está haciendo referencia continua a la celda I7, debería ir progresiva según la inserción.

¿Como seria el código (evento) para que se escriba directamente en el TextVenta el valor o formula y con evento change o otro, se inserte DIRECTAMENTE en las celdas de la columna O? haciendo referencia a las celdas de la columna I =SI($I?="";"";$I?*1,3) (la ? hace referencia la celda de la misma fila en la columna I

De formulas la verdad que no tengo ni idea, pero supongo que seria algo asi:

dim UltFila as long

UltFila = Range("O5000").End(xlUp).Offset(1, 0).row

sheets("Datos").range("O" & UltFila).formula = '=IF($I' & UltFila & '="""","""",$I' & UltFila & '*$Q$1)'

Igual es mejor asignar la formula primero a una variable string para evitar problemas con las comillas.

Para hacer "referencias de posición":

sheets("Datos").range("LA LETRA DE COLUMNA QUE SE QUIERA" & UltFila).value = ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas