Automatizar nros de asientos contabilidad excel

Buenas amigos expertos, mi duda es la siguiente, estoy haciendo un sistema contable en excel usando una macro para cargar asiento con el siguiente código:

Sub Cargar_Asiento()
Dim NRO_ASIENTO
' CONSISTENCIA DE LA CARGA
If Range("K18") = "Asiento Correcto" Then
' COPIANDO CARGA DE DATOS DE ASIENTO
Range("A5:K14").Select
Selection.Copy
' UBICARSE AL FINAL DE LA BASE DE ASIENTOS
Range("B2500").Select
Selection.End(xlUp).Select
Selection.Offset(1, -1).Select
'PEGAR DATOS ASIENTOS
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'INICIO
Application.CutCopyMode = False
Range("D5").Select
'MENSAJE INDICANDO NUMERO DE ASIENTO
NRO_ASIENTO = Range("C5").Value
MsgBox ("Se ha contabilizado el asiento número " & NRO_ASIENTO)
'NUMERAR ASIENTO
Range("C5").Value = NRO_ASIENTO + 1
'LIMPIAR CARGA DE ASIENTO
Range("A5:B14,I5:K14,D5:F14").Select
Selection.ClearContents
Range("D5").Select
Else
MsgBox ("Existen errores en la carga del asiento, por favor verificar")
End If
End Sub

el problema es que en el asiento si son de filas solo me colocar el nro de asiento en una solo fila y no en las dos, quisiera saber como ago para colocar el mismo numero de asiento solo si hay varias filas como lo siguiente:

año mes nro de asiento cuenta....

2012 enero 1 banco

venta

es decir que lo mismo se copie en la fila de abajo solo si hay una cuenta y asi sucesivamente...

Gracias de antemano amigos.

1 respuesta

Respuesta
1

Te propongo la siguiente idea:

Tendremos una celda para llevar el contador de números de asiento, en mi ejemplo va a ser la celda O1 y empezamos anotando un 1 en dicha celda. Ahora mediante el evento change de la hoja en cuestión nos anotará el número de asiento en la columna B siempre y cuando anotemos una cuenta en la columna C. Al terminar el asiento habrá un botón que guarde el asiento y sume un número más a la celda O1 y ... vuelta a empezar...

Este es el evento que rellenará el número de asiento de forma automática. Lo tienes que pegar en el objeto hoja donde estás trabajando, no en un módulo.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
Target.Offset(0, -1).Value = Range("o1").Value
End If
End Sub

recuerda finalizar y puntuar la consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas