Hola

Hola:
Mil disculpas otra vez, tengo un pequeño problema con el código que me enviaste, si graba en varias lineas al mismo tiempo, pero por ejemplo lo ejecuto una vez y lo hace perfectamente bien, cuando lo vuelvo a ejecutar con otras cantidades, las vuelve a colocar en las mismas lineas donde se grabo las anterior, no me esta respetando que si ciertas lineas tienen valor, que busque la sig. Hasta encontrar una vacía y me grabe los nuevos valores. Te escribo el código... Gracias de antemano
Private Sub cmbGrabar_Click()
With Worksheets("TablasIsr").Range("B:B")
FILA = 2
txtNomTra = txtNomTra
TextBox1 = TextBox1
TextBox2 = TextBox2
Do While True
AUX = .Cells(FILA, 2).Value
If AUX = Empty Then Exit Do
FILA = FILA + 1
Loop
.Cells(FILA, 1) = txtNomTra
.Cells(FILA + 1, 1) = TextBox1 & 0#
.Cells(FILA + 1, 2) = TextBox2 & 0#
End With

1 respuesta

Respuesta
1
Sin sorrys que el que más disfruta enredando soy yo
las celdas en excel toman formato general cuando están vírgenes, pero en el momento que las dices que tomen valor 0.00 lo que hacen es tomar formato numero, por lo tanto nuestra pregunta ahora hay que completarla de la siguiente manera:
If AUX = Empty Or Selection.NumberFormat = "#,##0.00" Then Exit Do
De esta manera si esta vacía o ha tomado el valor 0.00 (formato numero) tiene que salir y empezar a escribir
es posible que haya que depurar alguna cosa más, de ser así estaré encantado de ayudarte, que así de paso sigo aprendiendo y muevo un poco las neuronas
un saludo
Friend:
No queda, fijate que si le pongo al Textbox.caption= "0.01", si me respeta las lineas, con el nuevo codigo que me enviaste no lo hace, me sigue escribiendo en la primera linea que tiene valor a 0.00 y no en la ultima.
Un gran saludo y que pases un buen fin de semana
Prueba con lo siguiente y me comentas
Do While True
aux = .Cells(fila, 1).Value
auxt = VarType(aux)
If auxt = 0 Then Exit Do
fila = fila + 1
Loop
(Auxt recoge el valor del tipo de variante 0 para vacío, 5 para 0)
Creo que nuestro error esta en la pregunta de depuración, cambia lo siguiente:
Do While True
AUX = .Cells(FILA, 1).Value
If AUX = Empty Then Exit Do
FILA = FILA + 1
Loop
Como veras he cambiado el 2 que estaba entre paréntesis por 1, el motivo es que escribía en a2, a3 y b3, en la siguiente vuelta le preguntaba por b2 que tiene valor empty, y volvía a escribir en a3 y b3, dándonos la impresión de que no funcionaba
Creo haber resuelto tu duda, de no ser esto lo que querías dímelo y en cuanto que pueda te contesto
un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas