Visual Basic para Aplicaciones - Añadir datos a la derecha

Life is soft - evento anual de software empresarial
   
Vista:

Añadir datos a la derecha

Publicado por Albert (108 intervenciones) el 15/07/2015 21:24:18
Buenas tardes foreros
Necesito añadir datos desde un form a un registro existente en una hoja, si fuese un registro nuevo usaría este código que registra un Row nuevo en la hoja

For i = 3 To 10000
If Hoja5.Cells(i, 1) = "" Then
Final = i
Exit For
End If
Next

Hoja5.Cells(Final, 1).value = FrmNuevo.TextBox1.value

Ahora lo que necesito es añadir datos (no modificar los existentes) he buscado y no se como implementar lo que he encontrado, he de buscar la última columna que tenga datos y en la siguiente poner los nuevos datos pero en la fila de su exediente

Busco expediente
For i = 3 To 10000
If Hoja6.Cells(i, 1) = "" Then
Final = i - 1
Exit For
End If
Next

For i = 3 To Final
If FrmNuevo.TextBox13 = pagos.Cells(Final, 1) Then

Aquí ya tengo la fila del expdiente pero ahora ya no se como añadir el dato

Selection.End(xlToRight).Select


He probado muchas cosas pero no doy con la tecla.
Gracias por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Añadir datos a la derecha

Publicado por Albert (108 intervenciones) el 16/07/2015 20:23:16
estimados expertos:
Con la ayuda del editor de macros he conseguido crear el siguiente código

Dim y As Integer
Dim tareas As Integer
Dim UltCol As Integer

Application.ScreenUpdating = True

y = FrmNuevo.TextBox13.value - 57 'busco nº expediente con trampa 57 es la resta del nº fila con el nº expediente
UltCol = Hoja6.Cells.End(xlToRight).Column
tareas = UltCol + 1
Hoja6.Cells(y, UltCol) = FrmNuevo.TextBox28.value 'Importe
Hoja6.Cells(y, tareas) = FrmNuevo.TextBox30.value 'Fecha cobro

La primera vez que lo uso me coloca las dos cosas correctamente pero las siguientes me sobreescribe siempre en la misma columna, no se que he hecho mal, creo que debería buscar siempre la ultima vacia
Para la fila como no he sabido como hacer una variable con
FrmNuevo.TextBox13 = pagos.Cells(Final, 1)
lo he solucionado en plan "garrulo" nº de expediente menos Nº de fila, funcionará mientras los nº de expediente sean correlativos y no cambien la numeraciones.
gracias por vuestro tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Añadir datos a la derecha

Publicado por renzo (2 intervenciones) el 16/07/2015 21:00:16
buen día,

Teniendo en cuenta que ya tienes la fila debes empezar a capturar la informacion del form y asi colocarla en cada celda

dim vbfila as long

vbfila = Range("A" & Rows.Count).End(xlUp).Row + 1

range(vbfila, columnadeldato1) = cstr(tesbox1.value)
range(vbfila, columnadeldato2) = cstr(tesbox2.value)
range(vbfila, columnadeldato3) = cstr(tesbox3.value)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Añadir datos a la derecha

Publicado por Albert (108 intervenciones) el 16/07/2015 21:26:50
Gracias por tu pronta respuesta, seguramente no me he explicado bien:
Tu código me hace exactamente lo mismo me reescribe sobre la misma celda, lo que necesito es que vaya añadiendo siempre a la derecha de la ultima escrita, se trata de ir añadiendo pagos parciales que hacen los clientes, en distintos días (o meses) para lo que utilizo siempre el mismo textbox del formulario, el primer pago me lo escribe correctamente en su columna lo que ocurre es que si tengo un segundo pago me lo escribe encima del primero en vez de al lado derecho dentro de la misma fila, y asi sucesivamente siempre en la misma columna, necesito guardar los importes y las fechas de todos los pagos por "si acaso" hay que reclamar o enseñárselo al cliente.
No acabo de entender como localizas la fila en la que debo escribir ( y lo hace correctamente) de donde saca el nº de expediente? (como ves no se mucho de esto de programar,jejeje, pero me fijo como las lechuzas.
vbfila = Range("A" & Rows.Count).End(xlUp).Row + 1

Gracias por tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar