H o l a : Te anexo la macro.
En tu hoja "cuentas", las cuentas deberán empezar en la fila 2 y en la fila 1 deberás tener el encabezado. Con tu formulario deberás agregar el nuevo registro al final de la lista, como se muestra en la imagen.
Después de agregar el registro, ejecuta la macro OrdenarCuentas, desde tu formulario pon:
Call OrdenarCuentas
De preferencia pon la macro dentro del código del formulario.
Sub OrdenarCuentas()
'Por.Dante Amor
Application.ScreenUpdating = False
Set h1 = Sheets("cuentas")
Set h2 = Sheets("temp")
h2.Cells.Clear
h1.Columns("A").Copy h2.[A1]
h2.Columns("A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, _
OtherChar:=".", _
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), _
Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _
Array(9, 2), Array(10, 2)), _
TrailingMinusNumbers:=True
h1.Columns("B").Copy h2.[K1]
'
u = h2.Range("A" & Rows.Count).End(xlUp).Row
h2.Range("A2:J" & u).SpecialCells(xlCellTypeBlanks) = "'0"
h2.Range("B1:J1") = Array("N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "N10")
'
With h2.Sort
.SortFields.Clear
For i = 1 To 10
.SortFields.Add Key:=h2.Range(h2.Cells(2, i), h2.Cells(u, i)), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
Next
.SetRange h2.Range("A1:K" & u)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For i = 2 To u
cad = "'"
For j = 1 To 10
If h2.Cells(i, j) <> "0" Then
cad = cad & h2.Cells(i, j) & "."
End If
Next
If cad <> "" Then
cad = Left(cad, Len(cad) - 1)
h2.Cells(i, "L") = cad
End If
Next
h2.Range("L2:L" & u).Copy h1.[A2]
h2.Range("K2:K" & u).Copy h1.[B2]
Application.ScreenUpdating = True
End Sub
La macro tiene capacidad para cuentas de hasta 10 niveles, por ejemplo 1.1.0.0.1.6.7.8.9.10
Antes de ejecutar la macro deberás crear una hoja con el nombre "temp".
Cambia en la macro "cuentas" por el nombre de la hoja que tiene las cuentas.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias